📌 프로젝트 주제 : 항해99 9기 C반을 위한 커뮤니티 사이트 🌼
📅 프로젝트 기간 : 2022.10.21-2022.10.27
👨👩👧👧 조원 : BE 장윤서, 정성우, 정동훈, FE 오기쁨, 손성화
홈 화면 💒
항해 최종발표일까지의 D-Day 표시와, 7가지의 랜덤 문구를 선정하여 사용자가 볼 수 있도록 구현하였습니다.
회원가입 로그인 🔑
JWT + Security 적용하여 구현하였습니다.
회원가입 시 자신의 조, 팀장인지 아닌지를 구분하여 가입할 수 있게 하였습니다.
게시글 조회 📜
최신순,좋아요순 / 각 조별(all,1~6) / 태그별 (all, 일상, 공유, 질문, 공지) 태그를 만들어 param 값으로 받아 조건 별 조회가 가능합니다.
작성시간을 '몇 분전', '몇 시간전', '며칠 전'으로 변경하여 반영할 수 있도록 구현하였습니다.
게시글 작성 📝
사용자가 업로드한 이미지를 Amazon S3로 저장하여 이미지 URL을 받아와 DB에 저장하여 관리합니다.
작성자 account에 담겨있는 accountTeam(조)를 받아와 post에 함께 저장합니다.
Tag 중 "공지"의 경우, 팀장의 권한을 가진 사람만 작성할 수 있습니다.
게시글 좋아요 💗
사용자가 게시글에 좋아요를 누를 수 있고 다시 한 번 누르면 좋아요가 취소됩니다.
실시간으로 좋아요 수가 반영되게 하기 위하여 좋아요의 size를 따로 관리하였습니다.
댓글 및 댓글 좋아요 💖
게시글에 댓글을 작성할 수 있고, 작성자만 삭제 할 수 있으며 게시글과 같이 좋아요 기능이 포함되어 있습니다.
마이페이지 🌝
한 줄 소개를 작성하여 자신을 소개할 수 있습니다.
내가 작성한 글, 댓글을 확인할 수 있습니다.
작성한 글이나 댓글로 그 글의 상세페이지를 확인할 수 있습니다.
예외처리 📛
Custom ErrorCode를 Enum으로 관리하여 프론트엔드와 명확하게 소통하였습니다.
@RequiredArgsConstructor
@Getter
public enum ErrorCode {
NotFoundPost(HttpStatus.NOT_FOUND.value(), "P001", "게시물을 찾을 수 없습니다."),
NotMatchUser(HttpStatus.BAD_REQUEST.value(), "P002", "작성자가 일치하지 않습니다."),
NotFoundComment(HttpStatus.NOT_FOUND.value(), "P003", "댓글이 존재하지 않습니다."),
NotFoundCommentUser(HttpStatus.BAD_REQUEST.value(), "P004", "댓글 작성자가 아닙니다."),
AlreadyHaveEmail(HttpStatus.BAD_REQUEST.value(), "P005", "이미 존재하는 아이디 입니다."),
UnAuthorized(HttpStatus.UNAUTHORIZED.value(), "P006", "로그인을 해주세요."),
NotMatchPassword(HttpStatus.BAD_REQUEST.value(), "P007", "비밀번호가 일치하지 않습니다."),
NotFoundUser(HttpStatus.BAD_REQUEST.value(), "P008", "아이디가 존재하지 않습니다."),
CantDelete(HttpStatus.BAD_REQUEST.value(), "P009", "삭제 권한이 없습니다."),
NotFoundMypage(HttpStatus.BAD_REQUEST.value(), "P010", "마이페이지를 찾을 수 없습니다."),
NotTeamLeader(HttpStatus.BAD_REQUEST.value(), "P011", "공지는 팀장님만 작성이 가능합니다.");
private final int httpStatus;
private final String errorCode;
private final String message;
}
🪐 미니프로젝트 노션 링크 🪐
🌟 시연 영상 🌟
💫 FE github 💫
✨ BE github ✨