[최종] 백오피스 S.A

지인·2023년 7월 23일
0

프로젝트

목록 보기
13/17
post-thumbnail
post-custom-banner

🐰 나나모

🖥️ Spring_6기 A반 5조 익명 커뮤니티 나나모(나는 나를 모른다) 🖥️



프로그램 기능


기본 구현

  1. 사용자 인증 기능

    • 회원가입 기능

      • username, password를 Client에서 전달받기
      • username은 최소 4자 이상, 10자 이하이며 알파벳 소문자(az), 숫자(09)로 구성
      • password는 최소 8자 이상, 15자 이하이며 알파벳 대소문자(AZ, az), 숫자(0~9), 특수문자로 구성
      • 회원 권한 부여하기 (USER, ADMIN)
    • 로그인 및 로그아웃 기능

      • username, password를 Client에서 전달받기
      • DB에서 username을 사용해 저장된 회원의 유무를 확인하고, 있다면 password 비교
      • JWT 활용
  2. 프로필 관리
    프로필 수정 기능
    이름, 한줄 소개와 같은 기본적인 정보 수정 가능
    비밀번호 수정 시, 비밀번호를 한 번 더 입력받는 과정 필요
    최근 3번 안에 사용한 비밀번호는 사용할 수 없도록 제한

  3. 게시물 CRUD 기능
    게시물 작성, 조회, 수정, 삭제 기능
    게시물 조회를 제외한 나머지 기능들은 전부 인가(Authorization) 개념이 적용되어야 하며, 이는 JWT와 같은 토큰으로 검증 가능
    오로지 본인만 게시글 수정, 삭제 가능
    전체 게시글 정보를 조회하는 기능도 필요

  4. 댓글 CRUD 기능
    댓글 작성, 조회, 수정, 삭제 기능
    게시물에 댓글을 달 수 있고, 본인의 댓글 수정 및 삭제 가능
    게시물과 마찬가지로 댓글 조회를 제외한 나머지 기능들은 인가(Authorization) 개념 적용


추가 구현

  1. 백오피스

    • 관리자 페이지 만들기
      • 회원 종류를 일반 회원과 관리자 회원으로 분리
      • 회원 관리 또는 게시글 관리 화면 추가
  2. 프론트엔드 만들기

    • 백엔드에서 제공하는 API를 통해 서버와 통신하는 프론트엔드 구현하기
  3. 좋아요 기능

    • 게시물 및 댓글 좋아요 / 좋아요 취소 기능
    • 사용자가 게시물이나 댓글에 좋아요를 남기거나 취소할 수 있어야 함
      본인이 작성한 게시물 및 댓글 좋아요는 남길 수 없음

프로젝트 진행 일정

  • 첫째 날 : 프로젝트 내용 정리, 역할 분담

  • 둘째 날 : 완성된 기능마다 코드 취합하며 테스트

  • 셋째 날 : 기본 기능 완료 및 추가 기능 역할 분담

  • 넷째 날 : 추가 기능 완성된 부분마다 코드 취합하며 테스트

  • 다섯째 날: 완성된 코드 취합하고 마무리, 발표 준비



API 명세서

  • 회원 관련 API
기능MethodURL
회원가입POST/api/auth/signup
로그인POST/api/login
로그아웃-/api/logout
  • 게시글 관련 API
기능MethodURL
메인 페이지GET/
게시글 작성 및 수정 페이지GET/api/post/(id={id})(required=false)
게시글 상세 페이지GET/api/post/{id}
게시글 전체 조회GET/api/posts/{method}
게시글 작성POST/api/post
선택 게시글 조회GET/api/post/{id}
게시글 수정PUT/api/post/{id}
게시글 삭제DELETE/api/post/{id}
게시글 좋아요POST/api/post/{id}/like
게시글 좋아요 취소PUT/api/post/{id}/like
  • 댓글 관련 API
기능MethodURL
댓글 전체 조회GET/api/post/comments
댓글 작성POST/api/post/{postid}/comment
댓글 수정PUT/api/post/{postid}/comment/{commentid}
댓글 삭제DELETE/api/post/{postid}/comment/{commentid}
댓글 좋아요POST/api/post/{postid}/comment/{commentid}/like
댓글 좋아요 취소PUT/api/post/{postid}/comment/{commentid}/like
  • 프로필 관련 API
기능MethodURL
프로필 조회GET/api/profile
프로필 수정 페이지GET/api/edit_profile/{id}
비밀번호 수정 페이지GET/api/edit_password
프로필 수정 페이지(관리자)GET/api/edit_profile
프로필 조회GET/api/profile/{id}
프로필 수정PUT/api/profile/update/{id}
비밀번호 수정PUT/api/profile/password/{id}
회원 프로필 개별 조회(관리자)GET/api/profile/{username}
전체 프로필 조회(관리자)GET/api/profiles
권한 부여(관리자)PUT/api/profile/role/{username}
  • 통계 관련 API
기능MethodURL
통계 페이지 조회GET/api/graph
통계 데이터 조회GET/api/getChartData
통계 댓글 데이터 조회GET/api/getChartDataComment
통계 데이터 조회GET/api/get-data


ERD

  • users (User.java)
컬럼명데이터타입기능
user_id (PK)BIGINT사용자ID
usernameVARCHAR사용자 이름(ID)
nicknameVARCHAR사용자 닉네임
passwordVARCHAR사용자 비밀번호
roleenum(‘admin’, ‘user’)사용자 역할
  • post (Post.java)
컬럼명데이터타입기능
id (PK)BIGINT게시글ID
user_id (FK)BIGINT사용자ID
titleVARCHAR게시글 제목
contentVARCHAR게시글 내용
usernameVARCHAR사용자 이름(ID)
nicknameVARCHAR사용자 닉네임
viewsVARCHAR게시글 조회수
like_countINT게시글 좋아요 수
created_atDATETIME게시글 작성일
modified_atDATETIME게시글 수정일
  • comment (Comment.java)
컬럼명데이터타입기능
id (PK)BIGINT댓글ID
username (FK)BIGINT사용자ID
post_id (FK)BIGINT게시글ID
commentcontentsVARCHAR댓글 내용
commentlike_countINT댓글 좋아요 수
created_atDATETIME댓글 작성일
modified_atDATETIME댓글 수정일
  • post_likes (PostLike.java)
컬럼명데이터타입기능
id (PK)BIGINT게시글좋아요ID
user_id (FK)BIGINT사용자ID
post_id (FK)BIGINT게시글ID
post_likeBIT게시글 좋아요 여부
  • commentlikes (Commentlike.java)
컬럼명데이터타입기능
id (PK)BIGINT댓글좋아요ID
user_id (FK)BIGINT사용자ID
post_id (FK)BIGINT게시글ID
comment_id (FK)BIGINT댓글ID
comment_likeBIT댓글 좋아요 여부


테이블 관계도



KPT

1. Keep

  • 오류가 생겼거나, 어려운 부분이 있을 때 팀원들에게 공유하고, 모두가 같이 해결하려는 태도 !
  • 적극적인 자세로 소통과 협업을 하여 프로젝트를 수월하게 진행하였다.
  • 적극적으로 소통해서, 모르는 부분을 채워가는 태도

2. Problem

  1. 문제

    • 깃에서 머지할 때 구현한 부분들이 충돌 해서 어려움을 겪었다.
    • 전체적인 코드 리뷰를 진행하지 않았다.
    • 커밋 메세지를 알아보기 쉽게 작성하고, pull request를 보낼 때, 어떤 부분을 작성했는지 자세하게 적어주면 좋을 것 같다.
  2. 원인

    • 경험 부족

3. Try

  • git에 대한 공부
  • 코드 리뷰 진행
  • 머지 할 때 맡은 기능을 수행한 분들이 같이 참여해서 하나씩 확인하면 더 좋을 것 같습니다.
  • 머지를 본인이 하지 않고 pull request에 팀원들이 의견도 달아주며 머지 진행하기
  • 소셜 로그인 시도, AWS 배포 시도


github

backoffice-5

시연 영상

https://clipchamp.com/watch/0LNSeVyrWg9

profile
열쩡
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 7월 23일

이런 유용한 정보를 나눠주셔서 감사합니다.

답글 달기