기능
구현해야 할 필수 기능
사용자 인증 기능
- 회원가입 기능
- 새로운 사용자가 ID와 비밀번호의 형태로 서비스에 가입할 수 있어야 합니다.
- 이 때, 비밀번호는 안전하게 암호화되어 저장되어야 합니다!
- 로그인 및 로그아웃 기능
- 사용자는 자신의 계정으로 서비스에 로그인하고 로그아웃할 수 있어야 합니다.
프로필 관리
- 프로필 수정 기능
- 이름, 한 줄 소개와 같은 기본적인 정보를 볼 수 있어야 하며 수정할 수 있어야 합니다.
- 비밀번호 수정 시에는 비밀번호를 한 번 더 입력받는 과정이 필요합니다.
게시물 CRUD 기능
- 게시물 작성, 조회, 수정, 삭제 기능
- 게시물 조회를 제외한 나머지 기능들은 전부 인가(Authorization) 개념이 적용되어야 하며 이는 JWT와 같은 토큰으로 검증이 되어야 할 것입니다.
- 예컨대, 내가 작성한 글을 남이 삭제할 수는 없어야 하고 오로지 본인만 삭제할 수 있어야겠죠?
- 게시물 작성, 수정, 삭제 시 새로고침 기능
- 프론트엔드에서 게시물 작성, 수정 및 삭제를 할 때마다 조회 API를 다시 호출하여 자연스럽게 최신의 게시물 내용을 화면에 보여줄 수 있도록 해야 합니다!
뉴스 피드 기능
- 뉴스 피드 페이지
- 사용자가 다른 사용자의 게시물을 한 눈에 볼 수 있는 뉴스 피드 페이지가 있어야 합니다.
추가 구현 기능
댓글 CRUD 기능
- 댓글 작성, 조회, 수정, 삭제 기능
- 사용자는 게시물에 댓글을 작성할 수 있고 본인의 댓글은 수정 및 삭제를 할 수 있어야 합니다.
- 또한, 게시물과 마찬가지로 댓글 조회를 제외한 나머지 기능들은 인가(Authorization)개념이 적용되어야 합니다.
- 댓글 작성, 수정, 삭제 시 새로고침 기능
- 프론트엔드에서 댓글 작성, 수정 및 삭제를 할 때마다 조회 API를 다시 호출하여 자연스럽게 최신의 댓글 목록을 화면에 보여줄 수 있도록 해야 합니다!
좋아요 기능
- 게시물 및 댓글 좋아요/좋아요 취소 기능
- 사용자가 게시물이나 댓글에 좋아요를 남기거나 취소할 수 있어야 합니다.
- 이 때, 본인이 작성한 게시물과 댓글에 좋아요는 남길 수 없도록 해봅니다!
프론트엔드 만들어보기
- 백엔드에서 제공하는 API를 통해 서버와 통신하는 프론트엔드를 구현합니다.
- 와이어프레임에 나온 명세를 최대한 구현해보면 금상첨화겠죠?
- 웹개발 종합반에서 배웠던 부트스트랩을 활용해봐도 좋아요~
이메일 가입 및 인증 기능
- 이메일 가입 시 이메일 인증 기능을 포함하는 것이 좋습니다.
명예의 전당 - 슈퍼 개발자(?)로서의 초석을 다져봅시다!(?)
소셜 로그인 기능 구현
https://developers.naver.com/docs/login/devguide/devguide.md
네이버 로그인 개발가이드 - LOGIN
네이버 로그인 개발가이드 1. 개요 4,200만 네이버 회원을 여러분의 사용자로! 네이버 회원이라면, 여러분의 사이트를 간편하게 이용할 수 있습니다. 전 국민 모두가 가지고 있는 네이버 아이디
developers.naver.com
https://developers.kakao.com/docs/latest/ko/kakaologin/common
Kakao Developers
카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.
developers.kakao.com
를 참고하여 네이버 로그인, 카카오 로그인을 구현해보자.
프로필에 사진 업로드 기능 구현
- 프로필 사진을 저장할 때는 반드시 AWS S3를 이용해주세요!
게시물에 멀티미디어 지원 기능 구현
- 게시물 본문에 사진이나 영상 등의 미디어를 포함할 수 있다면 금상첨화겠죠?
- 또한, 게시물 수정시에도 첨부된 미디어가 수정될 수 있으면 좋습니다.
팔로우 기능 구현
- 특정 사용자를 팔로우/언팔로우를 할 수 있으면 너무 좋습니다.
- 팔로우 기능이 구현되었다면 뉴스 피드에 팔로우하는 사용자의 게시물을 볼 수 있어야 하겠죠?
HTTP를 HTTPS로 업그레이드 하기
- HTTPS를 적용하여 보안이 강화된 웹 페이지를 제공해보도록 합니다!
ERD(Entity Relationship Diagram)
첫 ERD
수정된 ERD_1(댓글 좋아요 Entity 추가)
수정된 ERD_2(포스트 좋아요 Entity 추가)
수정된 ERD_3(SignupAuth)
와이어프레임
API 명세
User
Method | URL | Request | Response | Description |
POST | /api/user/signup | { ”ID”:”아이디”, ”username”:”사용자이름”, ”password”:”비밀번호”, ”email”:”이메일”, ”introduce”:”한줄소개글” } |
{ ”msg”:”회원가입 완료” } |
회원가입 |
POST | /api/user/login | { ”ID”:”아이디”, ”password”:”비밀번호” } |
{ ”msg”:”로그인 완료” } |
로그인 |
GET | /api/user/profile | - | { ”ID”:”아이디”, ”username”:”사용자이름”, ”email”:”이메일”, ”introduce”:”한줄소개글” } |
프로필 조회 |
PUT | /api/user/profile | { ”username”:”변경할 이름”, ”introduce”:”변경할 소개내용” } |
프로필 수정 | |
PUT | /api/user/profile/pw | { ”password”:”현재 비밀번호”, ”modifypassword”:”변경할 비밀번호” } |
{ (현재비밀번호 일치 확인 후) ”msg”:”비밀번호 변경 완료” } |
비밀번호 수정 |
POST | /api/user/findid | { ”username”:”사용자이름”, ”email”:”이메일” } |
{ ”ID”:”아이디” } |
아이디 찾기 |
POST | /api/user/findpw | { ”ID”:”아이디”, ”username”:”사용자이름”, ”email”:”이메일” } |
{ ”msg”:”이메일로 임시 비밀번호를 보냈습니다.” } |
비밀번호 찾기 비밀번호 전달이 보안상 괜찮을지 의문 이메일로 비밀번호를 전송할 지? 방법 고민 필요 |
Post
Method | URL | Request | Response | Description |
GET | /api/post/{postid} | { “title” : “게시글 제목”, “username” : “작성자 명”, “created” : “게시 날짜”, “like” : “좋아요 수”, “contents” : “본문 내용” } |
게시글 조회 | |
POST | /api/post/ | { “title” : “게시글 제목”, “contents” : “ 게시글 내용” } |
{ “title” : “게시글 제목”, “username” : “작성자 명”, “contents” : “ 게시글 내용”, “created_at” : “ 최초 게시 날짜” } |
게시글 작성 |
PUT | /api/post/{postid} | { “comment” : “ 내용 수정” } |
{ ”post_id” : “postid”, ”contents” : “게시글 수정 내용 “, ”modified_at” : “수정 시간” } |
게시글 수정 |
DELETE | /api/post/{postid} | { ”msg” : “해당 게시글을 삭제하였습니다.! } |
게시글 삭제 |
Comment
Method | URL | Request | Response | Description |
GET | /api/posts/{postId}/comments | { ”id”:”10”, ”username”:”작성자명”, ”createdAt”:”2023-06-30 09:00:30”, ”modifiedAt”:”2023-06-29 15:17:30”, ”commentContents”:”댓글 작성”, ”likeCnt”:”0” } { ”id”:”9”, ”username”:”작성자명”, ”createdAt”:”2023-06-29 15:17:30”, ”modifiedAt”:”2023-06-29 15:17:30”, ”commentContents”:”댓글 작성함”, ”likeCnt”:”7” } |
선택한 게시글에 대한 모든 댓글 조회 | |
POST | /api/posts/{postId}/comments | { ”commentContents” :”댓글 작성” } |
{ ”id”:”10”, ”username”:”작성자명”, ”createdAt”:”2023-06-30 09:00:30”, ”modifiedAt”:”2023-06-30 09:00:30”, ”commentContents”:”댓글 작성”, ”likeCnt”:”0” } |
댓글 작성 |
PUT | /api/posts/{postId}/comments/{commentId} | { ”commentContents” :”댓글 수정” } |
{ ”id”:”10”, ”username”:”작성자명”, ”createdAt”:”2023-06-30 09:00:30”, ”modifiedAt”:”2023-06-30 10:45:30”, ”commentContents”:”댓글 수정”, ”likeCnt”:”10” } |
댓글 수정 |
DELETE | /api/posts/{postId}/comments/{commentId} | { ”msg”:”해당 댓글 삭제를 완료하였습니다.”, ”statusCode”:200 } |
댓글 삭제 | |
POST | /api/posts/{postId}/comments/{commentId}/like | { ”id”:”10”, ”username”:”작성자명”, ”createdAt”:”2023-06-30 09:00:30”, ”modifiedAt”:”2023-06-30 10:50:30”, ”commentContents”:”댓글 수정”, ”likeCnt”:”11” } |
댓글 좋아요 | |
DELETE | /api/posts/{postId}/comments/{commentId}/like | { ”id”:”10”, ”username”:”작성자명”, ”createdAt”:”2023-06-30 09:00:30”, ”modifiedAt”:”2023-06-30 10:50:30”, ”commentContents”:”댓글 수정”, ”likeCnt”:”10” } |
댓글 좋아요 취소 |
각자 역할 분담
우진 : User, 회원가입/로그인
행복 : Post, 블로그 글(포스트)
해나 : Comment, 댓글
지수 : 풀 리퀘스트 승인 / 프론트 구상
지상 : 개인 과제 구현 후 추가 기능 구현 담당
'SPARTA Project' 카테고리의 다른 글
[ Spring ] KP3C 조 - 'Needle은 SNS하지 마라' / 스레드를 참고하여 SNS 사이트 만들기 시작! (0) | 2023.07.17 |
---|---|
[ Spring ] Trillion 조 - Exercise Blog Project KPT (0) | 2023.07.07 |
[Java] HI5조 - 호텔 예약 프로그램 프로젝트 (6/6 - 6/9) (1) | 2023.06.07 |
[Java] HI5조 - 메모장 프로젝트 (6/2 - 6/5) (0) | 2023.06.05 |
[Java] 개인 프로젝트 - 키오스크 구현 정리(5/26 ~ 6/2) (0) | 2023.06.02 |