Search
Duplicate
🌏

일찍끝내조!

Table
Search
우리 팀원
이름
태그
MBTI
블로그
깃헙주소
한마디!

팀 소개

프로젝트 명 : 오늘 뭐 먹지?
프로젝트 소개 : 자취생을 위한 요리 레시피를 소개합니다.

개인과제 코드

팀과제 기획 관련

필수 구현 기능

사용자 인증 기능
회원가입 기능
새로운 사용자가 ID와 비밀번호의 형태로 서비스에 가입할 수 있어야 합니다.
이 때, 비밀번호는 안전하게 암호화되어 저장되어야 합니다!
로그인 및 로그아웃 기능
사용자는 자신의 계정으로 서비스에 로그인하고 로그아웃할 수 있어야 합니다.
프로필 관리
프로필 수정 기능
이름, 한 줄 소개와 같은 기본적인 정보를 볼 수 있어야 하며 수정할 수 있어야 합니다.
비밀번호 수정 시에는 비밀번호를 한 번 더 입력받는 과정이 필요합니다.
게시물 CRUD 기능
게시물 작성, 조회, 수정, 삭제 기능
게시물 조회를 제외한 나머지 기능들은 전부 인가(Authorization) 개념이 적용되어야 하며 이는 JWT와 같은 토큰으로 검증이 되어야 할 것입니다.
예컨대, 내가 작성한 글을 남이 삭제할 수는 없어야 하고 오로지 본인만 삭제할 수 있어야겠죠?
게시물 작성, 수정, 삭제 시 새로고침 기능
프론트엔드에서 게시물 작성, 수정 및 삭제를 할 때마다 조회 API를 다시 호출하여 자연스럽게 최신의 게시물 내용을 화면에 보여줄 수 있도록 해야 합니다!
뉴스 피드 기능
뉴스 피드 페이지
사용자가 다른 사용자의 게시물을 한 눈에 볼 수 있는 뉴스 피드 페이지가 있어야 합니다.

추가 구현 기능

댓글 CRUD 기능
댓글 작성, 조회, 수정, 삭제 기능
사용자는 게시물에 댓글을 작성할 수 있고 본인의 댓글은 수정 및 삭제를 할 수 있어야 합니다.
또한, 게시물과 마찬가지로 댓글 조회를 제외한 나머지 기능들은 인가(Authorization)개념이 적용되어야 합니다.
댓글 작성, 수정, 삭제 시 새로고침 기능
프론트엔드에서 댓글 작성, 수정 및 삭제를 할 때마다 조회 API를 다시 호출하여 자연스럽게 최신의 댓글 목록을 화면에 보여줄 수 있도록 해야 합니다!
이메일 가입 및 인증 기능
이메일 가입 시 이메일 인증 기능을 포함하는 것이 좋습니다.
좋아요 기능
게시물 및 댓글 좋아요/좋아요 취소 기능
사용자가 게시물이나 댓글에 좋아요를 남기거나 취소할 수 있어야 합니다.
이 때, 본인이 작성한 게시물과 댓글에 좋아요는 남길 수 없도록 해봅니다!
내가 좋아요! 눌러 놓은 상태 확인 가능.
프론트엔드 만들어보기
백엔드에서 제공하는 API를 통해 서버와 통신하는 프론트엔드를 구현합니다.
와이어프레임에 나온 명세를 최대한 구현해보면 금상첨화겠죠?
웹개발 종합반에서 배웠던 부트스트랩을 활용해봐도 좋아요~

기타

 Documents

Wireframe
ERD

역할분담

팀 과제

시연영상

메모

create database recipe_db default character set UTF8;

 우리 팀 약속

1. 아프지 말기 🏨 2. 밥 잘 챙겨먹기! 🍚 3. 오늘을 즐겁게 살기 🍣 4. 맛있는거 많이 먹기 🍗 5. 문화 생활 즐기기 🎥 6. 힘들땐 잠깐 쉬어도 괜찮아. 7. 행복하기!
Java
복사

우리 팀의 목표는?

1. 매일 일정 소화하기 2. 부끄러워도 물어보기 3. 이번 프로젝트 포트폴리오로 사용하기 4. TIL 남은날까지 매일 쓰기 📝 5. 11TIL, 1알고리즘
Java
복사

우리 팀 시간 약속

- 오전 - 09:00 ~ 09:30 : 데일리 스크럼 → 노션 페이지에 각 팀원들의 오늘 계획 정리 - 09:30 ~ 10:00 : 알고리즘 학습 11문제 목표! - 10:10 ~ 11:00 : PR merge 및 진행 사항 확인. - 집중 코딩 시간 (14:00 ~ 18:00) - 일반적인 학습과 달리 강의를 듣는 것만으로는 개발 실력이 상승하지 않습니다. - 개발은 고민하고, 스스로 시도하고 생각하는 시간이 그 무엇보다도 중요합니다. - 집중 코딩 시간을 통해 팀원들과 함께 문제에 맞닥뜨리고, 정리해보세요. - 오후 - 20:00 - TIL 작성 - 20:30 ~ 21:00 - 하루 회고 진행(체크리스트 확인, TIL 댓글 달기)
Kotlin
복사

팀별 일정표(참고)

시간을 어떻게 활용하면 좋을까요 - 시간 계획

APIs

Search
Name
Method
API
Request Header
Request Body
Response Body
Category
비고
POST
/api/auth/signup
{ “username”:string(NotNull), ”password”:string(NotNull), “email”:string(NotNull) }
{ "success": true, "httpStatus": "OK", "responseBody": { "data": "singup success", "errorResponse": null } }
user
POST
/api/auth/login
{ “username”:string(NotNull), “password”:string(NotNull) }
user
GET
/api/users/{userId}
{ "success": true, "httpStatus": "OK", "responseBody": { "data": { "username": "test5", "email": "test@test.com", "introduce": "HI!" }, "errorResponse": null } }
user
PATCH
/api/users
Cookies { Authorization }
{ “username”:string(NotNull), ”password”:string(NotNull), “email”:string(NotNull), “introduce”:string(NotNull) }
user
GET
/api/posts
{ "success": true, "httpStatus": "OK", "responseBody": { "data": [{ "postId": 1, "writerId": 1, "writer": "username", "title": "post test title", "content": "post test content", "likeCount": 3, "recentLikeUser": "username", "myLike": true, "lastModifiedDate": "2023-11-23 06:21:56" }], "errorResponse": null } }
post
GET
/api/users/{userId}/posts
{ "success": true, "httpStatus": "OK", "responseBody": { "data": [{ "postId": 1, "writerId": 1, "writer": "username", "title": "post test title", "content": "post test content", "likeCount": 3, "recentLikeUser": "username", "myLike": true, "lastModifiedDate": "2023-11-23 06:21:56" }], "errorResponse": null } }
post
POST
/api/posts
Cookies { Authorization }
{ “title”:string(NotNull), “content”:string(NotNull) }
post
GET
/api/posts/{postId}
{ "success": true, "httpStatus": "OK", "responseBody": { "data": { "postId": 1, "writerId": 1, "writer": "username", "title": "post test title", "content": "post test content", "likeCount": 3, "recentLikeUser": "username", "myLike": true, "lastModifiedDate": "2023-11-23 06:21:56" }, "errorResponse": null } }
post
PATCH
/api/posts/{postId}
Cookies { Authorization }
{ “title”:string(NotNull), “content”:string(NotNull) }
post
DELETE
/api/posts/{postId}
Cookies { Authorization }
post
POST
/api/posts/{postId}/likes
Cookies { Authorization }
like
DELETE
/api/posts/{postId}/likes
Cookies { Authorization }
like
GET
/api/posts/{postId}/comments
[ { “commentId”:long, “parentCommentId”:long, “postId”:long, “depth”:int, “writerId”:userId, “writer”:userName, “content”:string, “likeUsers”: [ { userId:int, userName:string }, ], “likeCount:int, “lastModifiedDate”:”YYYY-MM-DD hh:mm:ss” }, ]
comment
POST
/api/posts/{postId}/comments
Cookies { Authorization }
{ “content”:string(NotNull) }
comment
GET
/api/posts/{postId}/comments
Cookies { Authorization }
comment
GET
/api/posts/{postId}/comments/{commentId}
Cookies { Authorization }
comment
PATCH
/api/posts/{postId}/comments/{commentId}
Cookies { Authorization }
{ “content”:string(NotNull) }
comment
DELETE
/api/posts/{postId}/comments/{commentId}
Cookies { Authorization }
comment
content를 “삭제된 댓글입니다.” 로 변경
POST
/api/posts/{postId}/comments/{commentId}/likes
Cookies { Authorization }
like
DELETE
/api/posts/{postId}/comments/{commentId}/likes
Cookies { Authorization }
like
POST
/api/posts/{postId}/{parentcommentid}/comments
Cookies { Authorization }
{ “content”:string(NotNull) }
comment

데일리 스크럼

하루 계획표를 작성하고 데일리 스크럼에서 공유합니다.
Search
예시
4
월요일(1주차)
0
화요일(1주차)
0
수요일(1주차)
0
목요일(1주차)
0
금요일(1주차)
0