깃 레포지토리
GitHub - JisooPyo/KP3C-backoffice-project
Contribute to JisooPyo/KP3C-backoffice-project development by creating an account on GitHub.
github.com
기능
구현해야 할 필수 기능
** 사용자 인증 기능 **
- 회원가입 기능
- username, password를 Client에서 전달받기
- username은 `최소 4자 이상, 10자 이하이며 알파벳 소문자(a~z), 숫자(0~9)`로 구성되어야 한다.
- password는 `최소 8자 이상, 15자 이하이며 알파벳 대소문자(a~z, A~Z), 숫자(0~9), 특수문자`로 구성되어야 한다.
- DB에 중복된 username이 없다면 회원을 저장하고 Client 로 성공했다는 메시지, 상태코드 반환하기
- 회원 권한 부여하기 (ADMIN, USER) - ADMIN 회원은 모든 게시글, 댓글 수정 / 삭제 가능
- 로그인 및 로그아웃 기능
- username, password를 Client에서 전달받기
- DB에서 username을 사용하여 저장된 회원의 유무를 확인하고 있다면 password 비교하기
- 로그인 성공 시, 로그인에 성공한 유저의 정보와 JWT를 활용하여 토큰을 발급하고, 발급한 토큰을 Header에 추가하고 성공했다는 메시지, 상태코드 와 함께 Client에 반환하기
** 프로필 관리 **
- 프로필 수정 기능
- 이름, 한 줄 소개와 같은 기본적인 정보를 볼 수 있어야 하며 수정할 수 있어야 합니다.
- 비밀번호 수정 시에는 비밀번호를 한 번 더 입력받는 과정이 필요합니다.
- 최근 3번안에 사용한 비밀번호는 사용할 수 없도록 제한합니다.
** 게시물 CRUD 기능 **
- 게시물 작성, 조회, 수정, 삭제 기능
- 게시물 조회를 제외한 나머지 기능들은 전부 인가(Authorization) 개념이 적용되어야 하며 이는 JWT와 같은 토큰으로 검증이 되어야 할 것입니다.
- 예컨대, 내가 작성한 글을 남이 수정하거나 삭제할 수는 없어야 하고 오로지 본인만 수정/삭제 할 수 있어야겠죠?
- 전체 게시글 정보를 조회하는 기능도 필요합니다.
** 댓글 CRUD 기능 **
- 댓글 작성, 조회, 수정, 삭제 기능
- 사용자는 게시물에 댓글을 작성할 수 있고 본인의 댓글은 수정 및 삭제를 할 수 있어야 합니다.
- 또한, 게시물과 마찬가지로 댓글 조회를 제외한 나머지 기능들은 인가(Authorization)개념이 적용되어야 합니다.
추가 구현 기능
**소셜 로그인 기능 구현**
**백오피스 만들어보기**
- **백오피스** 란 서비스를 제공하기 위하여 상품을 등록하고 마케팅을 설정하고 결제와 매출, 수익 등을 관리하는 서비스를 제공하는 페이지입니다.
- 일반적으로 관리자 사이트, ERP 도구 등으로 표현됩니다.
- 저희는 간단하게 관리자 페이지를 만든다고 생각하면 좋습니다.
- 유저 전체 목록을 조회하고 권한을 수정/삭제하며 관리할 수 있습니다.
- 게시글, 댓글 전체 목록을 조회하고 수정/삭제하며 관리할 수 있습니다.
- 관리자페이지 구성
- 회원종류를 일반회원과 관리자 회원으로 분리
- 회원 관리 또는 게시글 관리 화면 추가 / 혹은 동일 화면이라하더라도 더 많은 버튼과 기능을 사용할 수 있게 해주세요
- 회원 관리(예시 기능)
1. 회원 조회하기
2. 사이트 회원 정보 수정하기
3. 사이트 회원 삭제하기
4. 회원 운영진으로 승격
5. 회원 차단하기 - user모델과 tokenobtainpairview 수정이 필요합니다.
- 게시글 관리(예시 기능)
1. 공지글 등록하기
2. 모든 게시글 수정하기
3. 모든 게시글 삭제하기
**프론트엔드 만들어보기**
- 백엔드에서 제공하는 API를 통해 서버와 통신하는 프론트엔드를 구현합니다.
- 와이어프레임에 나온 명세를 최대한 구현해보면 금상첨화겠죠?
- 웹개발 종합반에서 배웠던 부트스트랩을 활용해봐도 좋아요.
- AWS S3 혹은 netlify, vercel, github pages 와 같은 서비스로 프론트 배포할 것
**좋아요 기능**
- 게시물 및 댓글 좋아요/좋아요 취소 기능
- 사용자가 게시물이나 댓글에 좋아요를 남기거나 취소할 수 있어야 합니다.
- 이 때, 본인이 작성한 게시물과 댓글에 좋아요는 남길 수 없도록 해봅니다!
**팔로우 기능 구현**
- 특정 사용자를 팔로우/언팔로우를 할 수 있으면 너무 좋습니다.
- 팔로우 기능이 구현되었다면 팔로우하는 사용자의 게시물을 볼 수 있어야 하겠죠?
명예의 전당
**사진 업로드 기능 구현**
- 사진을 저장할 때는 반드시 AWS S3를 이용해주세요!
**게시물에 멀티미디어 지원 기능 구현**
- 게시물 본문에 사진이나 영상 등의 미디어를 포함할 수 있다면 금상첨화겠죠?
- 또한, 게시물 수정시에도 첨부된 미디어가 수정될 수 있으면 좋습니다.
- 미디어를 첨부할때는 서버 컴퓨터에 직접올릴 수도 있지만 AWS S3 를 사용하는 방법도 그리 어렵지 않답니다!
**AWS 를 이용한 서비스의 배포**
- AWS EC2를 이용해서 배포할 것. 백엔드 개발자들에게 아주 중요한 주제입니다.
- EC2의 역할을 이해
- ubuntu 명령어들을 이해
- 웹서버와 웹어플리케이션 서버의 차이를 이해
- Nginx, gunicorn의 역할과 설정파일을 이해 (어렵습니다!!!)
- 주의 : 프론트엔드와 백엔드가 각각 배포되어서 하나로 작동하는만큼 CORS, media file, static file, FILE_UPLOAD_MAX_MEMORY_SIZE 등 많은 에러가 있을 겁니다. 차근차근 해결해나아가야 합니다.
**HTTP를 HTTPS로 업그레이드 하기**
- HTTPS를 적용하여 보안이 강화된 웹 페이지를 제공해보도록 합니다!
- 사진을 저장할 때는 반드시 AWS S3를 이용해주세요!
**게시물에 멀티미디어 지원 기능 구현**
- 게시물 본문에 사진이나 영상 등의 미디어를 포함할 수 있다면 금상첨화겠죠?
- 또한, 게시물 수정시에도 첨부된 미디어가 수정될 수 있으면 좋습니다.
- 미디어를 첨부할때는 서버 컴퓨터에 직접올릴 수도 있지만 AWS S3 를 사용하는 방법도 그리 어렵지 않답니다!
**AWS 를 이용한 서비스의 배포**
- AWS EC2를 이용해서 배포할 것. 백엔드 개발자들에게 아주 중요한 주제입니다.
- EC2의 역할을 이해
- ubuntu 명령어들을 이해
- 웹서버와 웹어플리케이션 서버의 차이를 이해
- Nginx, gunicorn의 역할과 설정파일을 이해 (어렵습니다!!!)
- 주의 : 프론트엔드와 백엔드가 각각 배포되어서 하나로 작동하는만큼 CORS, media file, static file, FILE_UPLOAD_MAX_MEMORY_SIZE 등 많은 에러가 있을 겁니다. 차근차근 해결해나아가야 합니다.
**HTTP를 HTTPS로 업그레이드 하기**
- HTTPS를 적용하여 보안이 강화된 웹 페이지를 제공해보도록 합니다!
ERD
기존에 했던 CRUD+회원가입/로그인 과제 Entity에서
user_image : 유저 프로필 사진
post_image : 포스트에 올리는 사진
comment_image : 댓글에 올리는 사진
follow : 팔로우 기능
password_history : 3번 안에 사용한 비밀번호는 사용할 수 없도록 제한하는 기능을 구현하기 위해 만든 Entity
가 추가되었다.
와이어프레임
스레드를 참고하여 만들 예정이라 와이어프레임은 스레드의 화면들을 가져왔다.
왼쪽부터
- 자기 프로필 + 자기가 올린 게시글 확인할 수 있는 화면
- 모든 게시글 조회할 수 있는 화면
- 프로필 수정 화면
왼쪽부터
- 글 작성 화면
- 회원가입 페이지 화면
- 로그인 화면
API 명세
9조 / KP3C - Needle은 SNS하지 마라
S.A. 내용
gilded-meeting-f87.notion.site
각자 역할 분담
💛 정은 : Admin 페이지
🤍 혜원 : Image
💙 종우 : Social Login
🧡 은비 : follow 기능
💚 지수 : 전 프로젝트에서 했었던 Security, CRUD, 회원가입/로그인, +) Profile, password 관련 기능
빨리 끝난 사람부터 프론트 시작해보기, 다음 기능 끝난 사람 프론트 도와주기
우리 팀 약속
☝🏻 우리팀 약속
Contribute to JisooPyo/KP3C-backoffice-project development by creating an account on GitHub.
github.com
'SPARTA Project' 카테고리의 다른 글
[ Spring ] KP3C조 - 'Needle은 SNS하지 마라' / 스레드를 참고하여 SNS 사이트 만들기 KPT 회고 (0) | 2023.07.24 |
---|---|
[ Spring ] Trillion 조 - Exercise Blog Project KPT (0) | 2023.07.07 |
[ Spring ] Trillion 조 - Exercise Blog Project 시작! (0) | 2023.06.30 |
[Java] HI5조 - 호텔 예약 프로그램 프로젝트 (6/6 - 6/9) (1) | 2023.06.07 |
[Java] HI5조 - 메모장 프로젝트 (6/2 - 6/5) (0) | 2023.06.05 |