프로젝트 소개
SNS + 백 오피스 구현을 경험하기 위한 프로젝트 입니다.
Threads, X를 벤치마킹하여 필요한 필수 요구사항 및 추가 요구사항을 구현합니다.
프로젝트 설계
더보기
기술 스택
- SpringBoot 3.1.5
- Java 17
- Gradle
- Jpa
- MySQL 8.4
- H2
ERD
와이어프레임
API 명세 & S.A 노션
https://teamsparta.notion.site/IPv4-218de468d40644bab98a9c20760ea6b6
구현 기능
더보기
필수 요구사항
- 사용자 인증 기능
- 회원가입 기능
- 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 회원은 모든 게시글, 댓글 수정 / 삭제 가능
- 카카오 / 네이버 로그인
- 참고자료
- 로그인 및 로그아웃 기능
- 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 등 많은 에러가 있을 겁니다. 차근차근 해결해나아가야 합니다.
- AWS EC2를 이용해서 배포할 것. 백엔드 개발자들에게 아주 중요한 주제입니다.
- HTTP를 HTTPS로 업그레이드 하기
- HTTPS를 적용하여 보안이 강화된 웹 페이지를 제공해보도록 합니다!
- 백오피스 만들어보기
- 회원 관리
- 회원 조회하기
- 사이트 회원 정보 수정하기
- 사이트 회원 삭제하기
- 회원 권한 관리 : USER → ADMIN / ADMIN → USER
- 회원 차단하기 → BLOCK : 조회만 가능하게함
- 회원 차단하기 → BLOCK : 조회만 가능하게함
- 게시글 관리
- 모든 게시글 수정하기
- 모든 게시글 삭제하기
- 회원 관리
728x90
'프로젝트' 카테고리의 다른 글
[프로젝트] 협업 관리 툴 프로젝트 S.A (1) | 2023.12.26 |
---|---|
[팀프로젝트] ipv4 - Y SNS KPT 회고 (0) | 2023.12.11 |
팀 프로젝트 ( 블로그 뉴스피드) - KPT 회고 (0) | 2023.11.27 |
팀 프로젝트 KPT 회고 (0) | 2023.11.04 |
프로젝트 KPT 회고 (0) | 2023.10.12 |