μ€μκ° κ²½λ§€ μμ€ν μ νμ©ν μ§μ κΈ°λ° μ€κ³ κ±°λ νλ«νΌ
μ€μκ° κ²½λ§€ μμ€ν μ νμ©ν μ§μ κΈ°λ° μ€κ³ κ±°λ νλ«νΌμ λλ€. μ¬μ©μμ μμΉλ₯Ό κΈ°λ°μΌλ‘ μ£Όλ³ μνμ μΆμ²νκ³ , μ€μκ° μ±ν μ ν΅ν΄ μνν κ±°λ μν΅μ μ§μν©λλ€.
- λͺ¨λ°μΌ μ°μ λ°μν λμμΈ
- Kakao Map APIλ₯Ό νμ©ν μμΉ κΈ°λ° μλΉμ€
- Supabaseλ₯Ό ν΅ν μμ μ μΈ λ°±μλ μΈνλΌ
- 1μ°¨ λΆνΈμ (2μ‘°, 7μΌ): κΈ°λ³Έ νλ‘μ νΈ κ΅¬μ‘°, μ΄κΈ° μ€μ λ° μ»΄ν¬λνΈ κ΅¬ν
- 2μ°¨ λΆνΈμ (3μ‘°, 3μΌ): κΈ°λ³Έ νλ‘μ νΈ κ΅¬μ‘° λ° μ»΄ν¬λνΈ κ°μ
- E2E νλ‘μ νΈ (5μ‘°, 3μ£Ό): MVP κΈ°λ₯ ꡬν λ° λ°°ν¬
- Supabase Authλ₯Ό ν΅ν μμ ν νμκ°μ /λ‘κ·ΈμΈ
- μ΄λ©μΌ μΈμ¦ κΈ°λ° κ³μ μμ±
- μ¬μ©μ νλ‘ν κ΄λ¦¬ λ° μμΉ μ€μ
- Kakao Map APIλ₯Ό νμ©ν μ€μκ° μ§λ νμ
- μ§μλ³ μν νν°λ§ λ° μΆμ²
- μ£Όμ κ²μ λ° μλ μμ± κΈ°λ₯
- μ¬μ©μ μμΉ κΈ°λ° κ±°λ¦¬ κ³μ°
- μ§κ΄μ μΈ μν λ±λ‘ νΌ (μ λͺ©, μ€λͺ , κ°κ²© λ±)
- λ€μ€ μ΄λ―Έμ§ μ λ‘λ λ° κ΄λ¦¬ (Supabase Storage)
- μν μΉ΄ν κ³ λ¦¬ λ° νκ·Έ μμ€ν
- μν λͺ©λ‘ μ‘°ν λ° μμΈ νμ΄μ§
- μν κ²μ λ° νν°λ§ κΈ°λ₯
- νν₯μ κ²½λ§€ μμ€ν
- 30λΆλ§λ€ λ¨μ κ°κ²©λ§νΌ μ μ°°κ° μλ νλ½
- μ μ°°κ° νλ½ νμ΄λ¨Έ μΉ΄μ΄νΈλ€μ΄
- νμ¬ μ μ°°κ° μ€μκ° μ λ°μ΄νΈ
- μνλ³ μ±ν λ°© μλ μμ±
- μ€μκ° λ©μμ§ μ‘μμ
- μ±ν μ°Έμ¬μ λͺ©λ‘ νμ
- μ±ν λ΄μ μ μ₯ λ° μ‘°ν
- λͺ¨λ°μΌ μ°μ λ°μν λμμΈ
- μ§κ΄μ μΈ λ€λΉκ²μ΄μ μμ€ν
- λ‘λ© μν λ° μ€μΌλ ν€ UI
- μλ¬ νΈλ€λ§ λ° μ¬μ©μ νΌλλ°±
- Framework: Next.js v15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS v4
- State Management: TanStack Query (React Query)
- UI Components: Storybook
- Form Validation: Zod
- Database: PostgreSQL (Supabase)
- ORM: Prisma
- Authentication: Supabase Auth
- File Storage: Supabase Storage
- Server Actions: Next.js Server Actions
- Monorepo: Turborepo v2
- Package Manager: pnpm
- Code Quality: ESLint, Prettier
- Git Hooks: Lefthook
- Commit Convention: Commitlint
- CI/CD: Vercel
- Maps: Kakao Map API
- Geocoding: Kakao Geocoder API
REPO
ββ apps/
β ββ docs/ # Storybook λ¬Έμ
β ββ web/ # λ©μΈ μΉ μ ν리μΌμ΄μ
β ββ app/ # Next.js App Router
β β ββ (auth-pages)/ # μΈμ¦ νμ΄μ§ (λ‘κ·ΈμΈ/νμκ°μ
)
β β ββ (home)/ # ν νμ΄μ§
β β ββ (pages)/ # μ£Όμ κΈ°λ₯ νμ΄μ§
β β ββ api/ # API λΌμ°νΈ
β ββ components/ # μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈ
β ββ hooks/ # 컀μ€ν
ν
β ββ lib/ # λΌμ΄λΈλ¬λ¦¬ μ€μ
β ββ services/ # λΉμ¦λμ€ λ‘μ§
β ββ types/ # TypeScript νμ
μ μ
ββ packages/
ββ ui/ # κ³΅ν΅ UI μ»΄ν¬λνΈ λΌμ΄λΈλ¬λ¦¬
# μμ‘΄μ± μ€μΉ
pnpm install
# νκ²½ λ³μ μ€μ (apps/web/.env.local)
# .env.local νμΌμ νμν νκ²½ λ³μ μ
λ ₯
# λ£¨νΈ μμΉμμ λͺ¨λ μ± κ°λ° μλ² μ€ν
pnpm run dev
# λλ κ°λ³ μ± μ€ν
cd apps/web && pnpm dev # μΉ μ± (ν¬νΈ 3001)
# λͺ¨λ μ€ν λ¦¬λΆ μ€ν
pnpm run storybook
# κ°λ³ μ€ν λ¦¬λΆ μ€ν
pnpm storybook:web # μΉ μ± μ€ν λ¦¬λΆ (ν¬νΈ 6008)
pnpm storybook:ui # UI ν¨ν€μ§ μ€ν 리λΆ
# κ°λ° μλ² μ€ν
pnpm run dev
# λΉλ
pnpm run build
# μ½λ νμ§ κ²μ¬
pnpm run lint
pnpm run check-types
# μ€ν 리λΆ
pnpm run storybook
- κ²½λ§€ μνλ³ νμ΄λ¨Έ μ μ΄ λ° κ°κ²© κ³μ° λ‘μ§ μμ±
- μ μ°° μμ€ν λ° λμ°° μ²λ¦¬ κΈ°λ₯ ꡬν
- μ€μκ° κ°κ²© λ³λ λ° κ²½λ§€ μ’ λ£ UI κ°μ
- μΏ ν€ κΈ°λ° μΈμ¦μΌλ‘ μ€λ³΅ μΈμ¦ κ³Όμ μ κ±°
- λ―Έλ€μ¨μ΄ μ΅μ νλ‘ νμ΄μ§ λ‘λ© μλ ν₯μ
- μ΄λ―Έμ§ μ΅μ ν λ° Next.js Image μ»΄ν¬λνΈ μ ν
- μ¬μ©μ μΈμ¦
- μμΉ κΈ°λ° μν μΆμ² κΈ°λ₯
- νλ ν΅κ³
- μ€μκ° μλ¦Ό μμ€ν
- νν°λ§ κ³ λν
- μ¬μ©μ 리뷰 μμ€ν
- μ±λ₯ μ΅μ ν λ° μλ² μΊμ±
- μ¬μ©μ ν μ€νΈ λ° νΌλλ°± μμ§
- μμ© μλΉμ€ λ°°ν¬ μ€λΉ
μλͺ κ· | μλκΈ° | κΉκΈλ |
---|---|---|
@mgYang53 | @Jiiker | @goldegg127 |