프로젝트

[프로젝트] ipv4 조 - 'X보다 더 나은 Y' ( threads,  참고하여 sns + 백오피스 만들기 프로젝트)

프로젝트 소개

SNS + 백 오피스 구현을 경험하기 위한 프로젝트 입니다.

Threads, X를 벤치마킹하여 필요한 필수 요구사항 및 추가 요구사항을 구현합니다.


프로젝트 설계

구현 기능

더보기

필수 요구사항

  • 사용자 인증 기능
    • 회원가입 기능
      • username, password를 Client에서 전달받기
      • username은 최소 4자 이상, 10자 이하이며 알파벳 소문자(a~z), 숫자(0~9)로 구성되어야 한다.
      • password는 최소 8자 이상, 15자 이하이며 알파벳 대소문자(a~z, A~Z), 숫자(0~9), 특수문자로 구성되어야 한다.
      • DB에 중복된 username이 없다면 회원을 저장하고 Client 로 성공했다는 메시지, 상태코드 반환하기
      • 회원 권한 부여하기 (ADMIN, USER, BLOCK) - ADMIN 회원은 모든 게시글, 댓글 수정 / 삭제 가능
      • 카카오 / 네이버 로그인
      • 참고자료
        1. https://mangkyu.tistory.com/174
        2. https://ko.wikipedia.org/wiki/정규_표현식
        3. https://bamdule.tistory.com/35
    • 로그인 및 로그아웃 기능
      • username, password를 Client에서 전달받기
      • DB에서 username을 사용하여 저장된 회원의 유무를 확인하고 있다면 password 비교하기
      • 로그인 성공 시, 로그인에 성공한 유저의 정보와 JWT를 활용하여 토큰을 발급하고, 발급한 토큰을 Header에 추가하고 성공했다는 메시지, 상태코드 와 함께 Client에 반환하기
  • 프로필 관리
    • 프로필 수정 기능
      • 사진, 닉네임, 한 줄 소개, 비공개여부(false), 링크(nullable) 와 같은 기본적인 정보를 볼 수 있어야 하며 수정할 수 있어야 합니다.
      • 로그인 아이디를 변경할 수 있다
    • 비밀번호 수정 기능
      • 입력으로 현재 비밀번호, 새 비밀번호, 새 비밀번호 확인
      • 비밀번호 수정 시에는 비밀번호를 한 번 더 입력받는 과정이 필요합니다.
      • 최근 3번안에 사용한 비밀번호는 사용할 수 없도록 제한합니다.
  • 게시물 CRUD 기능
  • 조회 기능.(페이징 추가)
    • 팔로잉 게시글 목록 조회
    • 유저별 게시글 목록 조회(GUEST 접근 가능)
      • 글 id, 작성자, 글 내용, 생성일, 작성자 프로필 이미지, 좋아요 수, 답글 수
      • 게시글 조회할 때 생성일로부터 지난 시간 값 넘겨줘야함
        • 1시간 이내는 분으로 표기, 1시간 이후로는 시간 단위 표기, 24시간 이후로는 일 단위 그 이후로 그냥 작성일자
    • 추천 게시글 추천 알고리즘(보류) - 회원만
    • 내가 좋아요한 게시글 조회 - 비회원 조회 가능
    • 리포스트한 게시글 조회(보류)
    • 게시물 작성, 조회, 수정, 삭제 기능
      • 게시물 조회를 제외한 나머지 기능들은 전부 인가(Authorization) 개념이 적용되어야 하며 이는 JWT와 같은 토큰으로 검증이 되어야 할 것입니다.
      • 본인만 수정/삭제 가능
      • 제안) 답글 깊이를 제한하자(답글의 답글까지만)
  • 팔로우 기능 구현
    • 특정 사용자를 팔로우/언팔로우를 할 수 있으면 너무 좋습니다.
    • 팔로우 기능이 구현되었다면 팔로우하는 사용자의 게시물을 볼 수 있어야 하겠죠?
    • 내가 팔로잉한 유저 목록 조회
    • 나를 팔로우한 유저 목록 조회
  • 좋아요 기능
    • 게시물 좋아요/좋아요 취소 기능
      • 사용자가 게시물에 좋아요를 남기거나 취소할 수 있어야 합니다.
      • 이 때, 본인 쓴 게시글에 좋아요는 남길 수 없도록 해봅니다!
    • 게시글에 좋아요한 유저 목록 조회

추가 요구 사항

  • 소셜 로그인 기능 구현
  • 게시물에 멀티미디어 지원 기능 구현
    • 게시물 본문에 사진이나 영상 등의 미디어를 포함할 수 있다면 금상첨화겠죠?
    • 또한, 게시물 수정시에도 첨부된 미디어가 수정될 수 있으면 좋습니다.
    • 미디어를 첨부할때는 서버 컴퓨터에 직접올릴 수도 있지만 AWS S3 를 사용하는 방법도 그리 어렵지 않답니다!
  • AWS 를 이용한 서비스의 배포
    • AWS EC2를 이용해서 배포할 것. 백엔드 개발자들에게 아주 중요한 주제입니다.
      • EC2의 역할을 이해
      • ubuntu 명령어들을 이해
      • 웹서버와 웹어플리케이션 서버의 차이를 이해
      • Nginx, gunicorn의 역할과 설정파일을 이해 (어렵습니다!!!)

    • 주의 : 프론트엔드와 백엔드가 각각 배포되어서 하나로 작동하는만큼 CORS, media file, static file, FILE_UPLOAD_MAX_MEMORY_SIZE 등 많은 에러가 있을 겁니다. 차근차근 해결해나아가야 합니다.
  • HTTP를 HTTPS로 업그레이드 하기
    • HTTPS를 적용하여 보안이 강화된 웹 페이지를 제공해보도록 합니다!
  • 백오피스 만들어보기
    • 회원 관리
      • 회원 조회하기
      • 사이트 회원 정보 수정하기
      • 사이트 회원 삭제하기

    • 회원 권한 관리 : USER → ADMIN / ADMIN → USER
      • 회원 차단하기 → BLOCK : 조회만 가능하게함

    • 게시글 관리
      • 모든 게시글 수정하기
      • 모든 게시글 삭제하기
    •  
728x90