프로젝트 필수 기능 가이드
*프로젝트 목표
-Spring Boot 와 JPA를 활용한 기능 개발
-사용자와 친구 관계를 기반으로 최신 뉴스피드 데이터를 제공하는 시스템 구현
-회원가입, 로그인, 인증, 친구관리, 게시물 관리 등 CRUD가 포함된 뉴스피드 시스템 설계 및 구현
1. 프로필 관리
-프로필 조회 기능
- 다른 사용자의 프로필 조회 시, 민감한 정보는 표시되지 않음
-프로필 수정 기능
- 로그인한 사용자는 본인의 사용자 정보만 수정할 수 있음
- 비밀번호 수정 조건
- 비밀번호 수정시, 본인 확인을 위해 현재 비밀번호를 입력하여 올바른 경우에만 수정할 수 있음
- 현재 비밀번호와 동일한 비밀번호로는 변경할 수 없음
- 예외처리
- 비밀번호 수정시, 본인 확인을 위해 입력한 현재 비밀번호가 일치하지 않은 경우
- 비밀번호 형식이 올바르지 않은 경우
- 현재 비밀번호와 동일한 비밀번호로 수정하는 경우
2. 뉴스피드 게시물 관리
-게시물 작성, 조회, 수정, 삭제 기능
- 조건 : 게시물 수정, 삭제는 본인만 처리할 수 있음
- 예외처리
- 작성자가 아닌 다른 사용자가 게시물 수정, 삭제를 시도하는 경우
-뉴스피드 조회 기능
- 기본 정렬은 생성일자 기준으로 내림차순 정렬
- 10개씩 페이지네이션하여, 각 페이지 당 뉴스피드 데이터가 10개씩 나오게 함
3. 사용자 인증
-회원 가입 기능
- 사용자 아이디 : 이메일 형식
- 비밀번호
- Bcrypt로 인코딩, 암호화를 위한 PasswordEncoder를 직접 만들어 사용
- 대소문자 포함, 영문+숫자+특수문자를 최소 1글자씩 포함
- 비밀번호는 최소 8글자 이상
- 예외처리
- 중복된 사용자 아이디로 가입하는 경우
- 사용자 아이디 이메일과 비밀번호 형식이 올바르지 않은 경우
-회원 탈퇴 기능
- 조건
- 탈퇴 처리 시 비밀번호를 확인한 후 일치할 때 탈퇴 처리
- 탈퇴한 사용자의 아이디는 재사용할 수 없고, 복구할 수 없음
- 예외처리
- 사용자 아이디와 비밀번호가 일치하지 않는 경우
- 이미 탈퇴한 사용자 아이디인 경우
4. 친구 관리
-특정 사용자를 친구로 추가 / 삭제할 수 있음
-친구 기능이 구현되었다면, 뉴스피드에 친구의 최신 게시물들을 최신순으로 볼 수 있음
- 주의사항 : 친구는 상대방의 수락 기능이 필요
ERD 설계
*테이블
1. User
-사용자 정보, 프로필, 가입, 탈퇴 상태 관리
-민감 정보 보호를 위해 비밀번호는 암호화(Bcrypt)
2. Friends
-친구 관계 및 요청 상태 관리
3. Posts
-게시물 데이터와 작성자 정보를 저장
*연관관계
-User <-> Friends (1:n) -유저는 여러 친구 관계를 가질 수 있음
-User <-> Posts (1:n) - 유저는 여러 게시물을 작성 가능
API 명세서 작성
내가 맡은 부분
-page와 size(개수)를 반환할때는 totalcount도 같이 반환해줘야함
-게시물 조회를 할 때 전체공개를 할 것인지 특정 사용자 게시물 공개를 할 것인지 고민해봐야함
-친구의 게시물만 조회할 수 있게 하려면 전체 게시물 조회도 인증을 했을 시에 볼 수 있게 처리
'내배캠 > 프로젝트, 개인과제 코드&내용정리' 카테고리의 다른 글
[내일배움캠프/백엔드] Spring 숙련. 뉴스 피드 프로젝트 3일차 (0) | 2024.11.21 |
---|---|
[내일배움캠프/백엔드] Spring 숙련. 뉴스 피드 프로젝트 개발시작 (1) | 2024.11.20 |
[내일배움캠프/백엔드] Spring 입문 개인과제 Lv0. API 명세 및 ERD, SQL 작성하기(+피드백 받고 수정) (0) | 2024.11.01 |
[내일배움캠프/백엔드] Java 개인과제. Lv2 클래스를 사용한 계산기 만들기 (0) | 2024.10.16 |
[내일배움캠프/백엔드] Java 개인과제. Lv1 클래스 없이 계산기 만들기 (0) | 2024.10.15 |