μμ μΈμ μν ν©μ£Ό/μΌ μΈμ λ§€μΉ λͺ¨λ°μΌ μΉ νλ«νΌ
- ν¨ν€μ§ λ§€λμ λ λ°λμ pnpm μ¬μ© (npm, yarn μ¬μ© κΈμ§)
- νλ‘ νΈμλ λλ λμμΈ κ΄λ ¨ μμ
μ λ°λμ
docs/design/README.mdλ₯Ό λ¨Όμ νμΈνκ³ , μ μλ μ»¬λ¬ νλ νΈΒ·ν°νΈΒ·μ»΄ν¬λνΈ μ€νμΌμ μ€μν κ² (νλ‘μ νΈ μ λ°μ λΆμκΈ°λ₯Ό ν΄μΉλ μμ μμΒ·ν°νΈ μ¬μ© κΈμ§)
| Category | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript |
| UI | React 19 RC, Tailwind CSS 4, Framer Motion |
| State | Zustand, TanStack React Query 5 |
| Backend | Supabase (Auth, DB, Storage) |
| External API | ManiaDB (곑 κ²μ), Naver Map (μ₯μ κ²μ) |
| Testing | Vitest, Playwright, React Testing Library |
app/
βββ (pages)/
β βββ (signin)/ # λΉνμ μμ (λ‘κ·ΈμΈ, κ°μ
)
β βββ (only-user)/ # μΈμ¦ νμ μμ (μΌ μΈμ
, λ§μ΄νμ΄μ§)
β βββ context.tsx # GlobalContext
β βββ layout.tsx # Global providers
βββ api/ # Server Actions & Route Handlers
β βββ functions/ # CRUD μλ² ν¨μ
β βββ maniadb/ # 곑 κ²μ API
β βββ naver/ # μ₯μ κ²μ API
β βββ auth/ # OAuth μ½λ°±
βββ lib/ # enums, interfaces, utils
βββ stores/ # Zustand stores (session, notification, etc.)
βββ ui/ # λμμΈ μμ€ν
, μ»΄ν¬λνΈ
βββ util/supabase/ # Supabase client/server helpers
__tests__/ # ν
μ€νΈ νμΌ (unit, integration, component, e2e)
| Purpose | Path |
|---|---|
| μ± μ§μ μ | app/layout.tsx |
| κΈλ‘λ² μν (Zustand) | app/stores/session.ts, notification.ts, feedback.ts |
| μΈμ¦ μ νΈ | app/util/supabase/auth.ts |
| νμ μ μ | app/lib/interfaces/entity.interface.ts |
| μΌ μΈμ CRUD | app/(pages)/(only-user)/jamsession/functions/fetch.ts |
| API ν¨μ | app/api/functions/read.ts, create.ts, delete.ts |
| κΈλ‘λ² CSS | app/ui/global.css |
| Zod μ€ν€λ§ | app/lib/zod.ts |
| ν μ€νΈ μ€μ | vitest.config.ts, playwright.config.ts |
| CI/CD | .github/workflows/test.yml |
μμ
μ docs ν΄λ μ°Έμ‘°: docs/context/ β docs/architecture/ β docs/patterns/ β docs/design/ μμ