Skip to content

기능 정의

HJ Kim edited this page Oct 31, 2024 · 1 revision

USER 및 AUTH

로그인 및 회원가입

OAuth

google OAuth를 사용하여 로그인 및 회원가입을 구현한다.

  • 첫 로그인 시 name, display name, introduction, google에서 제공하지 않은 정보(phone number), 알림 수신 동의, 프로필 이미지 설정을 완료해야 회원가입이 끝난다.

Email

이메일 로그인, 회원가입을 제공해야할까? 이 경우 Social Register 유저와 어떻게 나눌지 고려해야한다.

session

JWT token을 사용할까 session과 cookie를 따로 사용할까?

프로필 수정

  • 이름, 닉네임, 소개글을 수정할 수 있다.
  • 개인정보 (email, phone number)는 수정이 불가하다.

알림 설정

알림 설정은 크게 5가지로 나뉜다. 알림 설정을 위해 수신 동의 및 단말 기기 정보가 필요하다. 사용자가 설정한 알림 설정대로 알림을 전송한다.

사용자 프로필 조회

팔로잉, 팔로워 목록 및 팔로잉 상태, 프로필 이미, 이름, 설명, 작성된 게시물들을 조회할 수 있다.

POST

게시글은 일반 게시글, take a snap 게시글, join 게시글 3가지로 나뉜다.

  • 사진과 글을 업로드할 수 있다.
  • 유저 태그 및 해시태그 설정이 가능하다. 글에만 포함시킬 수 있다.
  • 좋아요 / 댓글 수 공개 여부를 설정할 수 있다.
  • 댓글 허용 여부를 설정할 수 있다. 댓글이 존재하는 상황에서 댓글 금지로 수정 시, 이전 댓글들이 보이지 않는다.

일반 게시글

여러 사진(optional)과 글을 게시할 수 있다.

  • 사진 및 내용 수정이 가능하다.

SNAP

게시글 작성 시 전면/후면 카메라 동시 촬영을 한 사진을 올리는 것을 SNAP이라 한다.

  • 사진은 2장 (전면 / 후면)을 필수적으로 올려야하며, 2장을 초과할 수 없다.
  • 게시물 수정 시 사진은 수정이 불가능하다.

Take a Snap

친구 (서로 팔로잉한 관계)에게 SNAP을 요청받아 게시한다. 채팅으로 요청받으며, 요청을 통해서만 게시 가능하다.

Join

: 요청 없이 자신이 직접 SNAP을 포스트하여 친구들에게 SNAP 포스팅에 Join하라는 글을 게시한다. 친구들은 Join 버튼을 통해 SNAP을 포스트하여 이에 동참할 수 있다.

  • join은 4시간만 유효하다. 이후에는 참여가 불가하다.
  • join한 post들을 따로 보여준다.
  • Follower에게도 공개되는 게시글이지만, join은 친구만 가능하다.

SNS

FEED

팔로잉하는 모든 유저의 게시글이 순차적으로 보여진다.

ver 1. Query

유저가 feed를 새롭게 read할 때마다 쿼리를 통해 피드를 조회한다.

ver 2. Cache & pull/push model

게시글이 포스트될 때, 팔로워들의 캐시에 해당 글의 id가 추가된다.

단, 일정 이상의 팔로워를 가진 이의 경우에는 팔로워가 피드를 새로고침할 때 (read할 때), 팔로우한 인플루언서 리스트를 조회하고, 새로 업데이트된 게시물이 있는지 확인하여 가져오도록 구현한다.

FOLLOW

Following & follower

  • 자신의 팔로워 & 팔로잉 리스트는 삭제가 가능하다
  • 사용자의 팔로잉 & 팔로워 목록을 제공한다.

친구

서로가 팔로잉되어 있는 관계를 뜻한다. take a snap 및 join은 친구끼리만 가능하다.

TAG

TAG @user

태그된 유저의 id 및 display name을 제공하여 유저 프로필로 접근할 수 있도록 한다.

TAG #hash_tag

해당 해시태그의 다른 글들을 볼 수 있다.

SEARCH

유저 검색, 해시태그 검색이 가능하다.

Query vs Elasticsearch

우선은 직접 쿼리를 날려서 구현하는 방식을 채택하되, 추후 elasticsearch와 같은 검색 엔진으로의 전환을 고려한다.

NOTIFICATION

알림은 크게 5가지로 나뉜다. 내 게시물에 대한 이벤트, 팔로잉하는 유저에 대한 이벤트, 채팅, 태그당하는 경우, 새로운 팔로워가 생기는 경우

내 게시물에 대한 이벤트

내 게시물을 누군가 좋아요 또는 댓글 작성시 알림이 발생한다.

팔로잉하는 유저에 대한 이벤트

새로운 게시글이 업로드된 경우, take a snap 요청이 들어오는 경우 유저별 알림 설정이 가능하다.

  • All: 모두 수신한다.
  • Some: take a snap 요청과 채팅 알림만 허용한다.
  • Turn off: 알림 허용 x

태그

태그하는 경우 알림이 뜬다.

채팅

채팅방별로 알림 설정이 가능하다.

New Follower

누군가 사용자를 팔로잉 시작하는 경우 알림이 발생한다.

시간이 난다면

CHATTING

추가 기능

계정 비공개 설정