π λΌμ΄λΈ λ°λͺ¨
μ΄ νλ‘μ νΈλ κ°μΈμ μΈ κΈ°λ‘μ λͺ©μ μΌλ‘ μμλμμ΅λλ€. μ²μμλ μμν κΈ°λ‘ μ©λλ‘ μμνμ§λ§, μ μ°¨ λ€λ₯Έ μ¬μ©μλ€λ ν¨κ» μ¬μ©ν μ μλ λΈλ‘κ·Έ νλ«νΌμΌλ‘ λ°μ μν€κ³ μ κ³ λννκ² λμμ΅λλ€. λ§ν¬λ€μ΄μΌλ‘ κΈμ μμ±νκ³ , μ΄λ₯Ό 곡μ νλ©° μν΅ν μ μλ λΈλ‘κ·Έ νλ«νΌ Boologμ λλ€.
| κΈ μμ± | μ¬μ©μ λΈλ‘κ·Έ | λ‘κ·ΈμΈ |
|---|---|---|
| λκΈ μμ€ν | κ²μκΈ μμΈλ³΄κΈ° | νμκ°μ |
|---|---|---|
- μΌλ° νμκ°μ /λ‘κ·ΈμΈ
- OAuth μμ λ‘κ·ΈμΈ (Google, Kakao)
- JWT ν ν° κΈ°λ° μΈμ¦ λ° μλ κ°±μ
- λ‘κ·ΈμΈ μν μ§μμ± λ³΄μ₯
- λ§ν¬λ€μ΄ μλν°λ₯Ό νμ©ν κΈ μμ±/μμ
- μΉ΄ν κ³ λ¦¬λ³ κΈ λΆλ₯ λ° νν°λ§
- μ€μκ° λκΈ μμ€ν
- μ¬μ©μλ³ κ°μΈ λΈλ‘κ·Έ νμ΄μ§
- 무ν μ€ν¬λ‘€ λ°©μμ κΈ λͺ©λ‘
- λ°μν UI/UX
- λ‘λ© μνλ₯Ό μν μ€μΌλ ν€ UI
- μλ¬ νΈλ€λ§ λ° μ¬μ©μ νΌλλ°±
- λͺ¨λ°μΌ μ΅μ ν μΈν°νμ΄μ€
- Next.js 15 - React κΈ°λ° νμ€ν νλ μμν¬
- TypeScript - νμ μμ μ± λ³΄μ₯
- TailwindCSS - μ νΈλ¦¬ν° κΈ°λ° μ€νμΌλ§
- Zustand - κ²½λ μν κ΄λ¦¬
- React Query - μλ² μν κ΄λ¦¬ λ° μΊμ±
- React Markdown - λ§ν¬λ€μ΄ λ λλ§
- ESLint - μ½λ νμ§ κ΄λ¦¬
- TypeScript - μ μ νμ κ²μ¬
src/
βββ app/ # Next.js App Router νμ΄μ§λ€
β βββ auth/ # μΈμ¦ κ΄λ ¨ νμ΄μ§
β βββ posts/ # λΈλ‘κ·Έ κ²μκΈ νμ΄μ§
β βββ login/ # λ‘κ·ΈμΈ νμ΄μ§
β βββ register/ # νμκ°μ
νμ΄μ§
β βββ write/ # κΈ μμ± νμ΄μ§
βββ components/ # μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈλ€
β βββ Comments/ # λκΈ μμ€ν
μ»΄ν¬λνΈ
β βββ UserBlog/ # μ¬μ©μ λΈλ‘κ·Έ μ»΄ν¬λνΈ
βββ hooks/ # 컀μ€ν
React ν
λ€
βββ lib/ # API ν΅μ λ‘μ§
βββ stores/ # Zustand μν κ΄λ¦¬ μ€ν μ΄
βββ types/ # TypeScript νμ
μ μ
// JWT ν ν° μλ κ°±μ λ° API μμ² λνΌ
authenticatedFetch: async (url: string, options: RequestInit = {}) => {
// Access Token λ§λ£ μ μλμΌλ‘ Refresh TokenμΌλ‘ κ°±μ
// 401 μλ¬ μ²λ¦¬ λ° μ¬μμ² λ‘μ§ κ΅¬ν
};- React Queryμ
useInfiniteQueryλ₯Ό νμ©ν ν¨μ¨μ μΈ λ°μ΄ν° νμΉ - μ¬μ©μ κ²½ν μ΅μ νλ₯Ό μν μ€μΌλ ν€ λ‘λ©
- Zustandλ₯Ό ν΅ν μ μ μν κ΄λ¦¬ (μΈμ¦ μν, μ¬μ©μ μ 보)
- React Queryλ₯Ό ν΅ν μλ² μν μΊμ± λ° λκΈ°ν
- localStorage μ°λμ ν΅ν μν μ§μμ±
- μ격ν νμ μ μλ‘ λ°νμ μλ¬ λ°©μ§
- API μλ΅ λ°μ΄ν° νμ μμ μ± λ³΄μ₯
- μ»΄ν¬λνΈ Props νμ μ μ
λ°±μλ APIμμ RESTful ν΅μ μ ν΅ν΄ λ€μ κΈ°λ₯λ€μ ꡬννμ΅λλ€:
- μΈμ¦:
/auth/login,/auth/signup,/auth/refresh - OAuth:
/auth/google,/auth/kakao - κ²μκΈ:
/posts(CRUD) - λκΈ:
/comments(CRUD) - μ¬μ©μ:
/users(νλ‘ν μ‘°ν)
- Next.js App Routerλ₯Ό νμ©ν λͺ¨λ React μ ν리μΌμ΄μ κ°λ°
- JWT ν ν° κΈ°λ° μΈμ¦ μμ€ν ꡬν λ° λ³΄μ κ³ λ €μ¬ν
- React Queryλ₯Ό νμ©ν ν¨μ¨μ μΈ μλ² μν κ΄λ¦¬
- TypeScriptλ₯Ό νμ©ν λκ·λͺ¨ νλ‘μ νΈμ νμ μμ μ± ν보
- μ¬μ©μ κ²½νμ κ³ λ €ν λ°μν μΉ λμμΈ κ΅¬ν
- μ€μκ° μλ¦Ό μμ€ν (WebSocket)