Wafflestudio Rookies 20.5th, Toy Project: MUSINSA clone-coding (22.12.18.-23.02.04.)
Notion · Server · Deployment👑 차동주 | 서보성 | 양찬혁 | |
---|---|---|---|
Github Id | @dongjoocha | @Boseong-Seo | @yangchanhk98 |
Profile | |||
Role | - login - auth - 배포 (+Frontend..) |
- items - item-inquries - style |
- mypage - review - comment |
🗣️ 6주간 고생 많았던 백엔드 팀원분들 ! 소감 한 마디씩 부탁해요
동주 : "할 말 하 않"
보성 : "아 리드미 너무 힘들다"
찬혁 : "동주님 보성님 찬양합니다"
저희 프로젝트는 대략적으로 아래와 같은 구조로 되어 있어요.
src/main/kotlin/com/wafflestudio/toyproject/team4
├─common
├─config
├─core
│ ├─board // review, comment, inquiry 관련 API 담당
│ ├─image // 이미지 업로드 API
│ ├─item
│ ├─purchase
│ ├─style
│ └─user
└─oauth
그리고 core
의 (image
패키지를 제외한) 모든 패키지는 아래와 같은 구조를 가지고 있어요.
이때, Controller - Service - Repository 각 layer 단에서 어떤 역할을 하는지 거듭해서 고민하고,
특정 패키지의 한 layer에 역할이 가중되지 않도록 주의해가며 코드를 작성했어요.
├─api
│ ├─request
│ ├─response
│ └─xxController.kt
├─database
│ ├─xxEntity.kt
│ └─xxRepository.kt
├─domain
└─service
└─xxService.kt
저희가 구현한 API를 표로 요약해 나타내자면 다음과 같아요!
최대한 페이지별로, 기능별로 묶어서 정리했어요
페이지 관련 API들을 중심으로 작성했고, 때문에 저희가 구현한 것 중 포함되지 않은 API도 일부 있어요.
이때 자물쇠 표시(:lock:)은, 해당 API에서 @RequestHeader
로 AccessToken을 요하고 있다, 라는 의미예요.
보다 자세한 설명은 이 노션 페이지를 참고해주세요 😉
Page/Feature | GET | POST | PUT | PATCH | DELETE | API | Authenticated |
---|---|---|---|---|---|---|---|
My page | ✔️ | ✔️ | /api/user/me | 🔒 | |||
└ My purchases | ✔️ | ✔️ | /api/user/me/purchases | 🔒 | |||
└ My reviews | ✔️ | /api/user/me/reviews | 🔒 | ||||
✔️ | ✔️ | /api/user/me/review | 🔒 | ||||
✔️ | /api/user/me/review/ review.id |
🔒 | |||||
└ My item-inquiries | ✔️ | ✔️ | /api/user/me/item-inquiries | 🔒 | |||
✔️ | /api/user/me/item-inquiry/item-inquiry.id |
🔒 | |||||
└ My recently-viewed | ✔️ | ✔️ | /api/user/me/recently-viewed | 🔒 | |||
My shopping-cart | ✔️ | ✔️ | ✔️ | /api/user/me/shopping-cart | 🔒 | ||
✔️ | /api/user/me/shopping-cart/cart-item.id |
🔒 | |||||
My/Other's closet | ✔️ | /api/user/user.id |
(🔒) | ||||
✔️ | /api/user/user.id /styles |
||||||
└ Follow | ✔️ | ✔️ | /api/user/me/user.id /follow |
🔒 | |||
✔️ | /api/user/me/user.id /followers |
||||||
✔️ | /api/user/me/user.id /followings |
||||||
└ Style | ✔️ | /api/style | 🔒 | ||||
Search | ✔️ | /api/user/search | |||||
✔️ | /api/search | ||||||
Item list page | ✔️ | /api/items | |||||
Item detail page | ✔️ | ✔️ | /api/item/item.id |
||||
└ Reviews | ✔️ | ✔️ | /api/item/item.id /reviews |
||||
└ Comments | ✔️ | /api/item/item.id /comments |
|||||
✔️ | /api/comment | ||||||
✔️ | ✔️ | /api/comment/comment.id |
|||||
└ Item-inquiries | ✔️ | /api/item/item.id /inquiries |
|||||
✔️ | /api/item/item.id /inquiry |
🔒 | |||||
Style list page | ✔️ | /api/styles | |||||
└ Style Modal | ✔️ | /api/style/style.id |
(🔒) | ||||
└ Like | ✔️ | ✔️ | /api/style/style.id /like |
🔒 | |||
Upload Image | ✔️ | /api/image-upload | 🔒 |
마지막으로 제일 중요한 ⭐로컬 상에서의 실행 방법⭐을 알려드릴게요!
✅ Docker(Desktop)
✅ Docker Compose
✅ DataGrip
✅ intelliJ IDEA
-
현 repository 주소를 본인이 원하는 로컬 상 주소에다가 복제해주세요.
git clone https://github.com/wafflestudio20-5/team4-server.git
-
'Docker Desktop'을 실행한 다음, 아래의 명령어를 터미널에 입력해주세요.
docker-compose up -d
이때, 아래 첨부한 사진과 같이 뜨는지 확인해주세요!
-
'IntelliJ'를 실행한 다음, 조금 전에 복제해온 repository를 열어주세요. 그런 다음, 프로젝트를 build 하고서, build가 꼭 완료된 후에 application(Team4Application)을 run해주세요
-
'DataGrip'을 실행한 다음, 로컬에서 database를 확인할 수 있도록 아래의 설정을 해주세요!