9th UMC Web
νλμΈμ μν λ§μΆ€ν ν΄μ κ³΅κ° μΆμ² μλΉμ€
Tea Tasting Noteμμ μκ°μ λ°μ, μ§κΈμ λμκ² κΌ λ§λ ν΄μμ μΆμ²ν©λλ€.
SeaTeaλ μ°¨(Tea)μ ν
μ΄μ€ν
λ
ΈνΈ κ°λ
μ νμ₯νμ¬
μ¬μ©μμ κ°μ Β·μνλ₯Ό 8κ°μ§ ν΄μ μ νμΌλ‘ λΆλ₯νκ³ ,
μ΄μ μ΄μΈλ¦¬λ 곡κ°κ³Ό κ²½νμ μΆμ²νλ μλΉμ€μ
λλ€.
| Contributor | Role | Description |
|---|---|---|
μ΄μ±μ€ @cchaeyoon |
Lead Web |
β’ Architecture: React νλ‘μ νΈ κΈ°λ³Έ μΈν
λ° λΌμ°ν
ꡬ쑰 κ΅¬μΆ β’ Core Module: Axios Interceptor λ° κ³΅ν΅ μΈμ¦/μΈκ° λ‘μ§ κ΅¬ν β’ Feature: ν νλ©΄, μ§λ(κ³΅κ° μ‘°νΒ·κ²μΒ·μμΈ) νμ΄μ§, μ¬μ΄λλ°Β·404Β·λ‘λ© νμ΄μ§ λ΄λΉ |
μ΅ν¨λΉ @Hyobee02 |
Web | β’ Design System: Figma κΈ°λ° λμμΈ ν ν° μ μ λ° κΈλ‘λ² μ€νμΌ μμ€ν
κ΅¬μΆ β’ Feature: μ§λ¨(κ°λ¨Β·μμΈ) νμ΄μ§, μ§λ¨ κ²°κ³Ό νμ΄μ§ λ΄λΉ β’ Infra: νλ‘μ νΈ λ°°ν¬ λ° μ΄μ νκ²½ μ€μ |
μ΄μ§λ―Ό @jimiiiy |
Web | β’ Feature: λ‘κ·ΈμΈ(μΌλ°/μμ
) λ° νμκ°μ
νμ΄μ§, λ§μ΄νμ΄μ§(νλ‘ν μμ ) λ° λ§μ΄ ν°λ°±(λΆλ§ν¬) νμ΄μ§ λ΄λΉ β’ Docs: README μμ± |
- μμ λ‘κ·ΈμΈ: μΉ΄μΉ΄μ€ μμ λ‘κ·ΈμΈμ ν΅ν νμκ°μ /λ‘κ·ΈμΈ μ§μ
- μΌλ° λ‘κ·ΈμΈ: μ΄λ©μΌ κΈ°λ°μ μ체 νμκ°μ λ° λ‘κ·ΈμΈ μ§μ
- νλ‘ν μ€μ : νμκ°μ μ λλ€μ μ€μ λ° νλ‘ν μ΄λ―Έμ§ μ€μ κΈ°λ₯
- μ§λ¨ μ¨λ³΄λ©: μλΉμ€ μκ° λ° μ¬μ©μ μ νμ λ°λ₯Έ μ§λ¨ λͺ¨λ(μμΈ/κ°λ¨) μ ν
- μμΈ μ§λ¨: μμΈ μ§λ¬Έμ ν΅ν μ§λ¨ κΈ°λ₯. μ μ μ°¨ κ²°κ³Όμ λ°λΌ μ νν μ§λ¨μ μν΄ μΆκ° μ§λ¬Έ κΈ°λ₯
- κ°λ¨ μ§λ¨: 20κ°μ ν€μλ μ€ 3κ°λ₯Ό μ ννμ¬ λΉ λ₯΄κ² μ§λ¨
- μ§λ¨ κ²°κ³Ό: μ§λ¨ κ²°κ³Όμ λ°λ₯Έ ν μ΄μ€ν λ ΈνΈ μ€λͺ λ° λ§μΆ€ν κ³΅κ° νλ μ΄μ μ 곡
- μλ‘ μ§λ¨νκΈ°: μλ‘κ² μ ν μ§λ¨
- κ³Όκ±° μ§λ¨ λ΄μ: κ³Όκ±° μ§λ¨ λ΄μ μ 곡
- ν μ΄μ€ν λ ΈνΈ λ³ κ³΅κ° μΆμ²: ν μ΄μ€ν λ ΈνΈμ λ§μΆ° νν°λ§λ κ³΅κ° λͺ©λ‘ μ 곡
- κ³΅κ° μ§λ: μΉ΄μΉ΄μ€λ§΅ API μ°λ, μμΉ μ νμ λ°λ₯Έ μ§λ λ·° μ 곡, ν μ΄μ€ν λ ΈνΈμ λ°λ₯Έ κ³΅κ° μμΉ λ§μ»€λ‘ νμ
- κ³΅κ° κ²μ: μ§λ λ΄ ν€μλλ₯Ό ν΅ν κ³΅κ° κ²μ
- κ³΅κ° μμΈ: ν΄λΉ κ³΅κ° μμΈ μ 보 μ 곡, 곡μ νκΈ° κΈ°λ₯, λ§μ΄ ν°λ°± μ μ₯ κΈ°λ₯
- μ μ νλ‘νμΉ΄λ: μ΄λ©μΌ, νμ¬ ν μ΄μ€ν λ ΈνΈ, μ μ₯ν κ³΅κ° μ νμ
- νλ‘ν κ΄λ¦¬: λλ€μ μμ λ° νλ‘ν μ΄λ―Έμ§ λ³κ²½ κΈ°λ₯
- λ§μ΄ ν°λ°±: λ΄κ° μ μ₯ν 곡κ°μ 리μ€νΈ ννλ‘ νμ, μ λ ¬ λ° νΈμ§μ ν΅ν μ·¨μ κΈ°λ₯
| Package | Version | Description |
|---|---|---|
| React | v19.2.0 |
UI λΌμ΄λΈλ¬λ¦¬ |
| TypeScript | v5.9.3 |
μ μ νμ μΈμ΄ |
| Vite | v7.2.4 |
λΉλ ν΄ & κ°λ° μλ² |
| React Router | v7.11.0 |
νμ΄μ§ λΌμ°ν |
| TanStack Query | v5.90.20 |
μλ² μν κ΄λ¦¬ & λ°μ΄ν° ν¨μΉ |
| Axios | v1.13.4 |
HTTP ν΄λΌμ΄μΈνΈ |
| Tailwind CSS | v4.1.18 |
μ νΈλ¦¬ν° νΌμ€νΈ CSS νλ μμν¬ |
| React Icons | v5.5.0 |
μμ΄μ½ λΌμ΄λΈλ¬λ¦¬ |
| CLSX | v2.1.1 |
μ‘°κ±΄λΆ ν΄λμ€ λ³ν© μ νΈλ¦¬ν° |
| Zustand | v5.0.11 |
κΈλ‘λ² ν΄λΌμ΄μΈνΈ μν κ΄λ¦¬ λΌμ΄λΈλ¬λ¦¬ |
| Package | Version | Description |
|---|---|---|
| ESLint | v9.39.2 |
μ½λ λ¦°ν λꡬ |
| Prettier | v3.8.1 |
μ½λ ν¬λ§·ν° |
| Vite Plugin SVGR | v4.5.0 |
SVG μ»΄ν¬λνΈ λ³ν λꡬ |
FE/
βββ public/
βββ src/
β βββ apis/ # API ν΅μ λͺ¨λ
β β βββ auth/ # μΈμ¦ κ΄λ ¨ API (λ‘κ·ΈμΈ, νμκ°μ
)
β β βββ diagnosis/ # ν
μ΄μ€ν
λ
ΈνΈ μ§λ¨ API
β β βββ spaces/ # 곡κ°(μ§λ) λ° κ²μ API
β β βββ teabag/ # λ§μ΄ ν°λ°± API
β β βββ axios.ts # Axios μΈμ€ν΄μ€ λ° μΈν°μ
ν° μ€μ
β β βββ member.ts # μ¬μ©μ μ 보 κ΄λ ¨ API
β βββ assets/ # 리μμ€ (μμ΄μ½, μ΄λ―Έμ§)
β βββ components/ # μ¬μ¬μ© κ°λ₯ν UI μ»΄ν¬λνΈ
β β βββ Button/ # κ³΅ν΅ λ²νΌ μ»΄ν¬λνΈ
β β βββ common/ # κΈ°ν κ³΅ν΅ μ»΄ν¬λνΈ
β β βββ Diagnosis/ # μ§λ¨ μ»΄ν¬λνΈ
β β βββ Feedback/ # νΌλλ°± UI μ»΄ν¬λνΈ
β β βββ LoadingSpinner/ # λ‘λ©μ€νΌλ
β β βββ MyPage/ # νλ‘ν μΉ΄λ λ° μ€μ μ»΄ν¬λνΈ
β β βββ PlaceTest/ # κ³΅κ° ν
μ€νΈ κ΄λ ¨ μ»΄ν¬λνΈ
β β βββ Search/ # κ²μ κ²°κ³Ό 리μ€νΈ μ»΄ν¬λνΈ
β β βββ SearchBar/ # κ²μ μ
λ ₯λ° μ»΄ν¬λνΈ
β β βββ SideBar/ # μ¬μ΄λλ°
β β βββ SignUp/ # νμκ°μ
νΌ μ»΄ν¬λνΈ
β β βββ Toast/ # ν μ€νΈ λ©μμ§ μ»΄ν¬λνΈ
β βββ constants/ # μμ λ°μ΄ν°
β βββ hooks/ # 컀μ€ν
ν
β βββ layouts/ # λ μ΄μμ
β βββ lib/ # λΌμ΄λΈλ¬λ¦¬ μ€μ
β βββ pages/ # νμ΄μ§ μ»΄ν¬λνΈ
β β βββ Diagnosis/ # μ§λ¨
β β βββ Login/ # λ‘κ·ΈμΈ
β β βββ Map/ # μ§λ λ° κ³΅κ° νμ
β β βββ MyPage/ # λ§μ΄νμ΄μ§
β β βββ MyTasting/ # λ§μ΄ ν
μ΄μ€ν
λ
ΈνΈ
β β βββ ErrorPage.tsx # 404 λ° μλ¬ μ²λ¦¬ νμ΄μ§
β β βββ HomePage.tsx # λ©μΈ ν νμ΄μ§
β β βββ MyTeabagPage.tsx # λ§μ΄ ν°λ°± (μ μ₯ν 곡κ°) νμ΄μ§
β β βββ OAuthCallbackPage.tsx # μΉ΄μΉ΄μ€ μμ
λ‘κ·ΈμΈ λ¦¬λ€μ΄λ νΈ μ²λ¦¬ νμ΄μ§
β β βββ SignUpPage.tsx # νμκ°μ
λ° μ΄κΈ° νλ‘ν μ€μ νμ΄μ§
β β βββ SpaceRecommendPage.tsx # λ§μΆ€ κ³΅κ° μΆμ² νμ΄μ§
β βββ routes/ # λΌμ°ν
μ€μ
β β βββ ProtectedRoutes.tsx
β β βββ PublicRoutes.tsx
β β βββ index.ts
β βββ styles/ # μ€νμΌ
β βββ types/ # νμ
μ μ
β βββ utils/ # μ νΈλ¦¬ν° ν¨μ
β βββ App.tsx
β βββ main.tsx
β βββ vite-env.d.ts
βββ .env
βββ package.json
βββ tailwind.config.js
βββ tsconfig.json
βββ vite.config.ts
| νμ΄μ§ | κ²½λ‘ (Path) | μ€λͺ |
|---|---|---|
| λ‘κ·ΈμΈ λ° νμκ°μ μ¨λ³΄λ© | /login/start |
λ‘κ·ΈμΈ/νμκ°μ μ§μ λ° μμ λ‘κ·ΈμΈ(μλ‘μ΄ μ μ λμ) |
| λ‘κ·ΈμΈ | /login |
μ΄λ©μΌ κ³μ λ‘κ·ΈμΈ λ° μμ λ‘κ·ΈμΈ(κΈ°μ‘΄ μ μ λμ) |
| νμκ°μ | /signup |
μ΄λ©μΌ κΈ°λ° μ체 νμκ°μ , λλ€μ λ° νλ‘ν μ€μ |
| νμ΄μ§ | κ²½λ‘ (Path) | μ€λͺ |
|---|---|---|
| μ§λ¨ μ¨λ³΄λ© | /diagnosis |
μλΉμ€ μκ° λ° μ§λ¨ λͺ¨λ(μμΈ/κ°λ¨) μ ν |
| μμΈ μ§λ¨ | /diagnosis/detail |
μμΈ μ§λ¬Έμ ν΅ν μ λ° μ§λ¨ μ§ν |
| κ°λ¨ μ§λ¨ | /diagnosis/simple |
ν€μλ μ νμ ν΅ν κ°λ¨ μ§λ¨ μ§ν |
| μ§λ¨ κ²°κ³Ό | /diagnosis/complete |
ν μ΄μ€ν λ ΈνΈ κ²°κ³Ό λ° μ€λͺ μ 곡 |
| λ§μΆ€ μΆμ² | /diagnosis/recommend |
κ²°κ³Όμ λ°λ₯Έ λ§μΆ€ν κ³΅κ° νλ μ΄μ μ 곡 |
| λ§μ΄ ν μ΄μ€ν | /mytasting |
νμ¬ ν μ΄μ€ν λ ΈνΈ λ° κ³Όκ±° μ§λ¨ μ΄λ ₯ μ‘°ν |
| νμ΄μ§ | κ²½λ‘ (Path) | μ€λͺ |
|---|---|---|
| κ³΅κ° μ§λ | /map |
μμΉ μ νμ λ°λ₯Έ κ³΅κ° νμ λ° ν μ΄μ€ν λ ΈνΈλ³ νν°λ§ |
| κ³΅κ° κ²μ | /map/search |
ν€μλλ₯Ό ν΅ν κ³΅κ° κ²μ |
| κ³΅κ° μμΈ | /map/:sid |
κ°λ³ 곡κ°μ μμΈ μ 보 μ‘°ν λ° λ§μ΄ν°λ°± μ μ₯ |
| νμ΄μ§ | κ²½λ‘ (Path) | μ€λͺ |
|---|---|---|
| λ§μ΄νμ΄μ§ | /mypage |
μ μ νλ‘ν μΉ΄λ λ° μ€μ κ΄λ¦¬ |
| νλ‘ν μμ | /mypage/profile-edit |
λλ€μ λ³κ²½ λ° νλ‘ν μ΄λ―Έμ§ μμ |
| λ§μ΄ ν°λ°± | /myteabag |
λ΄κ° μ μ₯ν κ³΅κ° λͺ¨μ보기 |
#μ΄μλ²νΈ [νμ
] μμ
λͺ
- [FEAT] : μλ‘μ΄ κΈ°λ₯ ꡬν
- [MOD] : μ½λ μμ λ° λ΄λΆ νμΌ μμ
- [ADD] : λΌμ΄λΈλ¬λ¦¬ μΆκ°, μ κ· νμΌ μμ±
- [CHORE] : μ€μ λ³κ²½, νμ /λ³μλͺ μμ λ± μ¬μν μμ
- [DEL] : λΆνμν μ½λ/νμΌ μμ
- [UI] : UI μμ
- [FIX] : λ²κ·Έ λ° μ€λ₯ ν΄κ²°
- [MOVE] : νμΌ λλ μ½λ μ΄λ
- [RENAME] : νμΌλͺ λ³κ²½
- [REFACTOR] : 리ν©ν λ§
- [DOCS] : README, WIKI λ± λ¬Έμ μμ
-
main
β λ°°ν¬ κ°λ₯ν μ΅μ’ μ½λ λΈλμΉ -
develop
β κ°λ° μ€μΈ κΈ°λ₯μ΄ ν΅ν©λλ λΈλμΉ -
feature
β κΈ°λ₯ λ¨μ μμ λΈλμΉ -
hotfix
β κΈ΄κΈ μ€λ₯ μμ λΈλμΉ
-
Issue μμ±
- μμ λ΄μ©μ λν Issueλ₯Ό μμ±ν©λλ€.
-
Branch μμ±
- Issueλ₯Ό κΈ°μ€μΌλ‘
featureλλhotfixλΈλμΉλ₯Ό μμ±ν©λλ€.
- Issueλ₯Ό κΈ°μ€μΌλ‘
-
κΈ°λ₯ ꡬν
- κΈ°λ₯ λ¨μλ‘ μ»€λ°μ λλμ΄ μ§νν©λλ€.
- κΈ°λ₯ ꡬν μ€ μ€μΉν λΌμ΄λΈλ¬λ¦¬λ Discord μ€λ λμ 곡μ ν©λλ€.
-
Pull Request μμ±
- PRμ μμ±νκΈ° μ
npm run buildλ‘ λΉλ μ€λ₯ μ¬λΆλ₯Ό νμΈν©λλ€. - λΉλκ° μ μμ μΌλ‘ μλ£λλ©΄ PRμ μμ±ν©λλ€.
- PRμ μμ±νκΈ° μ
-
Code Review
- PR μμ±μ μΈ νμλ€μ΄ 리뷰λ₯Ό μ§νν©λλ€.
- νμ 리뷰μ΄: 2λͺ
-
리뷰 λ°μ
- μμ μμ²μ λ°μ ν λ€μ push ν©λλ€.
-
Merge
- 리뷰μ΄μ Approve 2κ°λ₯Ό λ°μ ν mergeλ₯Ό μ§νν©λλ€.
-
Pull
- merge μλ£ ν
developλΈλμΉλ‘ μ΄λνμ¬
git pull developμΌλ‘ μ΅μ μνλ₯Ό μ μ§ν©λλ€. - μ΄ν
npm installμ μ€ννμ¬ μ΅μ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€μΉν©λλ€.
- merge μλ£ ν
-
λΈλμΉ μ 리
- mergeκ° μλ£λ λΈλμΉλ μμ±μκ° μμ ν©λλ€.