- κ°μΈμ μΌλ‘ λΉ λ₯΄κ² μμνλ €κ³ λ§λ 보μΌλ¬ νλ μ΄νΈ
- 리μ‘νΈ + vite κΈ°λ° ν΄λΌμ΄μΈνΈ μ¬μ΄λ SPA μ±μ λ§λ€λ μ¬μ©
- tailwindcss 4.0
- pnpm
- react-router v7 (data mode)
- @tanstack-query/react
- zod
- zustand
- axios
@/pages/_Layoutκ°μ Next.jsμ μν¬νΈ κ°λ₯
src/
ββ apis/ # API κ΄λ ¨ μ½λ (μμΈν κ·μΉμ μλ μ°Έκ³ )
ββ components/ # μ¬μ¬μ© κ°λ₯ν UI μ»΄ν¬λνΈ
ββ constants/ # μ μ μμ
| ββ path.ts # URL λΌμ°ν
μμ (νμ
μμ μ± λ³΄μ₯μ μν΄)
| ββ query-keys.ts # νμ€ν 쿼리μ 쿼리 ν€λ€ λͺ¨μ
ββ hooks/ # 컀μ€ν
ν
ββ layouts/ # λ μ΄μμ μ»΄ν¬λνΈ (ν€λ, νΈν° ν¬ν¨)
ββ lib/ # μ νΈλ¦¬ν° ν¨μ λͺ¨μ
ββ pages/ # λΌμ°νΈ λ¨μ νμ΄μ§
ββ routes/ # λΌμ°ν
κ΄λ ¨ λ‘μ§
ββ stores/ # Zustand μ μ μν
ββ styles/ # μ μ μ€νμΌ
ββ types/ # μ± μ μ νμ
μ μ
ββ main.tsx # μ§μ
μ
apis/
ββ auth/ # λλ©μΈ λ¨μ (ex. μΈμ¦)
β ββ dto/ # API μμ²/μλ΅ μ€ν€λ§ (zod)
β ββ queries/ # GET μμ²
β ββ mutations/ # POST, PUT, DELETE μμ²
ββ instance.ts # Axios κ³΅ν΅ μΈμ€ν΄μ€
- λλ©μΈ λ¨μ:
/auth,/user,/postμ²λΌ μλ² API κΈ°μ€μΌλ‘ ν΄λ λΆλ¦¬ - dto/: μλ²μ μ‘μμ νλ λ°μ΄ν°μ νμ /μ€ν€λ§ μ μ
- queries/ vs mutations/: React Queryμ μ©λμ λ§κ² API νΈμΆ λΆλ¦¬
- instance.ts: μΈμ¦, μλ¬ νΈλ€λ§, μ¬μλ λ‘μ§ ν¬ν¨ν Axios μΈμ€ν΄μ€
pnpm install
pnpm run dev