Skip to content

wafflestudio20-5/team4-server

Repository files navigation

rect


Logo

MUSIN4A

Wafflestudio Rookies 20.5th, Toy Project: MUSINSA clone-coding (22.12.18.-23.02.04.)

Notion · Server · Deployment

⚒️ Built with ..

👑 차동주 서보성 양찬혁
Github Id @dongjoocha @Boseong-Seo @yangchanhk98
Profile
Role - login
- auth
- 배포
(+Frontend..)
- items
- item-inquries
- style
- mypage
- review
- comment

🗣️ 6주간 고생 많았던 백엔드 팀원분들 ! 소감 한 마디씩 부탁해요

동주 : "할 말 하 않"
보성 : "아 리드미 너무 힘들다"
찬혁 : "동주님 보성님 찬양합니다"


🗃️ Project Structure

저희 프로젝트는 대략적으로 아래와 같은 구조로 되어 있어요.

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

🗃️ ERD

ERD


👼 API

저희가 구현한 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 🔒

🧇 Getting Started

마지막으로 제일 중요한 ⭐로컬 상에서의 실행 방법⭐을 알려드릴게요!

Prerequisites

✅ Docker(Desktop)
✅ Docker Compose
✅ DataGrip
✅ intelliJ IDEA

How to run

  1. 현 repository 주소를 본인이 원하는 로컬 상 주소에다가 복제해주세요.

    git clone https://github.com/wafflestudio20-5/team4-server.git
    
  2. 'Docker Desktop'을 실행한 다음, 아래의 명령어를 터미널에 입력해주세요.

    docker-compose up -d
    

    이때, 아래 첨부한 사진과 같이 뜨는지 확인해주세요!

    docker-compose 실행 화면
  3. 'IntelliJ'를 실행한 다음, 조금 전에 복제해온 repository를 열어주세요. 그런 다음, 프로젝트를 build 하고서, build가 꼭 완료된 후에 application(Team4Application)을 run해주세요

    빌드 후 run
  4. 'DataGrip'을 실행한 다음, 로컬에서 database를 확인할 수 있도록 아래의 설정을 해주세요!

    • File -> New -> Data Source -> MySQL 순서로 클릭한 다음, 아래와 같이 설정해주세요.

    • 이때, password 입력해주셔야 하는 거 잊지 마세요 ❗ : team4

      data-grip 설정 화면
    • 설정하고나서, 꼭 !! Test Connection이 잘 이루어지는지도 확인해주셔야 해요

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages