본문 바로가기

MBTI Project

MBTI Community Project -프로그램 설계-

728x90

아주 오래전부터 계획했던 MBTI 프로젝트를 천천히 구현해보고자 한다.

 

1. 기능 설계

사람들은 남들이 어떤것을 좋아하는지 궁금해하고,

자기와 비슷한 사람들이 특정 내용에 대하여 어떻게 생각하는지 더 궁금해한다.

 

사용자를 특정 집단에 소속시키고, 사용자가 흥미있을만한 내용을 지속적으로 컨텐츠로 제공한다면, 

상당히 재미있는 앱이 될 것이다.

 

그래서 구상했다.

이 앱은 사용자별 MBTI를 기반으로 다양한 사용자 설문 결과를 통한 통계를 시각적으로 표현한다.

 

예) 현재 사용자가 답변한 설문이 아래와 같다면

 

MBTI가 무엇인가요?

사는 지역은 어디인가요?

직업은 무엇인가요?

활동 커뮤니티가 무엇인가요?

취미는 무엇인가요?

선호하는 음식은 어떤가요?

 

아래와 같은 결과를 확인할 수 있어야 한다.

 

INFJ는 어떤 직업을 가장 선호하는가?

INFP는 어떤 커뮤니티에서 주로 활동하는가? 

 

뿐만 아니라

 

경기도에 사는 사람들은 어떤 음식을 가장 선호하는가?

직업이 예술가인 사람들은 어떤 음식을 가장 좋아하는가?

 

데이터가 쌓이면 이러한 내용도 나타날 것이다.

(아래는 그냥 대충 끼워맞춘것)

 

ENFJ는 안성탕면을 신라면보다 좋아하는 유일한 집단입니다.

개발자는 타 직업군보다 채식주의자 비율이 더 적습니다.

트위터에는 영화광의 비율이 다른 커뮤니티보다 많습니다.

 

등으로 각각의 설문조사 결과를 조합하여 데이터 분석을 할 수 있도록 하는 것이다.

이러한 데이터 분석은 UserVote 테이블의 결과를 바탕으로 분석할 수 있을 것이다.

2. 백 앤드 설계 

사용자는 계정 고유 정보(닉네임, 이메일 등) 외에 설문목록(Votes) 라는 테이블을 가진다.

설문 목록에는 사용자가 응답한 설문(Vote) 테이블이 연결되어있다.

 

사용자 테이블과 설문 테이블을 각각 참조하는 UserVote 테이블에서 사용자가 각각의 설문에 대하여 어떤 답변을 했는지 저장한다.

 

설문 테이블은 상위 설문과 하위 설문이 연결 테이블로 존재하고, 그 외에 제목, 내용, 보기(1~20) 컬럼이 존재한다.

 

하위 테이블은 무한하게 다음 하위 테이블로 연결 될 수 있으며, 하나의 테이블에 하위 테이블이 여러개 존재할 수 있다.

상위 테이블은 1개만 있어도 될것 같긴한데 나중에 생각이 바뀔수도 있을 것 같아서 일단 M:N관계로 만들었다.

 

 

가장 기본이 되는 데이터 모델은 아래와 같다.

(상위 설문과 하위 설문을 relation으로 연결하였다)

 

type User {

  id: ID! @id 

  username: String! 

  email: String!

  votes: [Vote!]!

}

 

type Vote {

  id: ID! @id

  title : String!

  description : String!

  upperVote:[Vote!]! @relation(name"VoteRelation")

  lowerVote:[Vote!]! @relation(name"VoteRelation")

  val1: String

  val2: String

  val3: String

  val4: String

  val5: String

  val6: String

  val7: String

  val8: String

  val9: String

  val10: String

  val11: String

  val12: String

  val13: String

  val14: String

  val15: String

  val16: String

  val17: String

  val18: String

  val19: String

  val20: String

}

 

type UserVote {

  id: ID! @id

  user:User!

  vote: Vote!

  voteSelect: String!

}

 

 

3. 프론트앤드 설계

react 기반의 SPA로 만들 예정이다.

 

구상한 페이지는 아래 3개의 페이지다.

 

로그인화면

- 카카오 SSO기반으로 작성

 

메인화면

- 가장 많은 데이터가 누적된 설문 데이터를 순서대로 표시

 

투표화면

- 사용자가 응답하지 않은 설문 중 가장 많은 사람들이 응답한 설문부터 차례로 표시

- 응답을 원하지 않는 답변은 '무응답' 할 수 있고, 하위 설문을 추가할 수 있음, 답변을 추가할 수 있음.

 

 

4. 서비스 및 마케팅 설계

특정 집단에 소속감을 느낄 수 아래 기능을 구상해본다.

1. 기본적으로 MBTI별 라운지를 제공한다.

2. 채식주의자, 대형견주, 다중언어구사자, 만화가 등 특정 집단에 사용자가 특정 인원을 넘어가면 자동으로 라운지를 생성한다. (이들이 커뮤니티에서 활동하며 자체적인 컨텐츠를 생성할 수 있도록 유도, 충분한 인원이 모여야만 기능 구현 가능)

3. 특정 분류에 대하여 사용자 닉네임 뒤에 붙일 수 있는 칭호(?)를 수집 할 수 있도록 한다.

 

 

 

 

 

나머지는 만들면서 보완할 예정

728x90