여행 장소 리뷰 작성 시 포인트 부여, 전체/개인에 대한 포인트 포인트 부여 히스토리, 개인별 누적 포인트 관리
- 프로젝트 소개 및 요구사항 명시
- DB 설계
- API 설계
- Git commit 메시지 컨벤션
이 프로젝트는 여행 장소에 대해 리뷰 작성이 이루어질때마다 리뷰 작성 이벤트가 발생하고, 이 이벤트를 전달하는 API를 구현하는 것이 목적입니다.
API 예시
{
"type": "REVIEW",
"action": "ADD", /* "MOD", "DELETE" */
"reviewId": "240a0658-dc5f-4878-9381-ebb7b2667772",
"content": "좋아요!",
"attachedPhotoIds": ["e4d1a64e-a531-46de-88d0-ff0ed70c0bb8", "afb0cef2-
851d-4a50-bb07-9cc15cbdc332"],
"userId": "3ede0ef2-92b7-4817-a5f3-0c575361f745",
"placeId": "2e4baf1c-5acb-4efb-a1af-eddada31b00f"
}
- type: 미리 정의된 string값을 가지고 있습니다. 리뷰 이벤트의 경우 "REVIEW"로 옵니다.
- action: 리뷰 생성 이벤트의 경우 "ADD", 수정 이벤트는 "MOD", 삭제 이벤트는 "DELETE"값을 가지고 있습니다.
- reviewId: UUID 포맷의 review id입니다. 어떤 리뷰에 대한 이벤트인지 가리키는 값입니다.
- content: 리뷰의 내용입니다.
- attachedPhotoIds: 리뷰에 첨부된 이미지들의 id 배열입니다.
- userId: 리뷰의 작성자 id입니다.
- placeId: 리뷰가 작성된 장소의 id입니다.
한 사용자는 장소마다 한 개의 리뷰만 작성할 수 있고, 리뷰는 수정 및 삭제 가능합니다. 리뷰 작성 보상 점수는 아래와 같습니다.
- 내용 점수
- 1자 이상 텍스트 작성: 1점
- 1장 이상 사진 첨부: 1점
- 보너스 점수
- 특정 장소에 첫 리뷰 작성: 1점
- DB와 연동되어야 서버 실행이 가능합니다.
- .env 파일 내용
# ? 부분에 사용하는 DB 정보를 입력합니다.
DB_USER = ?
DB_PASSWORD = ?
DB_DATABSE = ?
COOKIE_SECRET = ?
# 작업 경로로 이동
$ cd /back
# 서버 실행 명령어 실행
$ npm run start
# 코드 컴파일 및 빌드
$ npm run build
http://localhost:3000
- Node.js (v16.13.0)
- TypeScript (v4.7.3)
- Express (v4.18.1)
- MySQL (v8.0.28)
- Sequelize (v6.20.1)
- REBMS: MySQL
- DB_NAME: wanted_preonboarding
- DB_TABLES:
- users
- places
- reviews
- points
- pointlogs
- reviewimages
- 이메일, 유저 이름, 패스워드 입력 통해 회원가입
- URL: /api/user/
- METHOD: POST
- 이메일, 유저 이름, 패스워드 입력 통해 로그인
- URL: /api/user/login
- METHOD: POST
- 세션 삭제 통해 로그아웃
- URL: /api/user/logout
- METHOD: POST
- request param을 통해 얻은 해당 장소 데이터의 id로 장소 리뷰 작성
- URL: /api/review/evnets/:placeId
- METHOD: POST
- 해당 리뷰에서 사진 등록 시 api
- URL: /api/review/img/:reviewId
- METHOD: POST
- 리뷰 내용 수정
- URL: /api/review/events/:placeId
- METHOD: PUT
- 해당 리뷰에서 사진 삭제
- URL: /api/review/img/:imageId
- METHOD: DELETE
- 해당 리뷰 삭제
- URL: /api/review/events/:reviewId
- METHOD: DELETE
커밋 메시지를 어떠한 근거로 작성할 것인지 명시
- "태그 : 제목" 의 형태이며, : 뒤에만 space가 있습니다.
작업 | 설명 | 비고 |
---|---|---|
Feat | 새로운 기능 생성 및 파일 추가 | |
Docs | 문서 생성 및 수정 | |
Upgrade | 기존 기능 수정 | 성능 향상 O |
Refactor | 기존 기능 수정 | 성능 향상 X |
Delete | 기능 제거 및 파일 삭제 | |
Test | 테스트 코드 추가 및 리팩토링 | |
Fix | 오류 수정 |
- 제목의 총 글자 수는 50자 이내로 작성
- 본문은 한 줄당 72자 내로 작성
- 본문의 내용은 양에 구애받지 않고 최대한 상세히 작성
- 어떻게 변경했는지보다 무엇을 변경했는지 또는 왜 변경했는지 설명
Feat: 초기 환경 설정
* index.js : 프로젝트의 메인 코드 파일
* bin/www.js : express 모듈 연결하고 포트 지정하는 부분
* config/config.js : 시퀄라이즈 환경 설정