Next.js(App Router) ํ
ํ๋ฆฟ
๊ฐ์ธ์ ์ผ๋ก ๋น ๋ฅด๊ฒ ์์ํ๋ ค๊ณ ๋ง๋ ๋ณด์ผ๋ฌํ๋ ์ดํธ
Next.js(App Router) + React + TypeScript + Tailwind ๊ธฐ๋ฐ SPA/SSR ํผํฉ ํ๋ก์ ํธ์ฉ
- Next.js 16+ (App Router)
- tailwindcss 4.0
- pnpm
- @tanstack/react-query
- react
- typescript
- zod
- zustand
- axios
src/
โโ app/ # Next.js App Router ํ์ด์ง & ๋ ์ด์์
โ โโ layout.tsx # ์ ์ฒด ๋ ์ด์์
โ โโ page.tsx # ํ ํ์ด์ง
โ โโ (routes)/ # URL ๊ตฌ์กฐ๋ณ ๊ทธ๋ฃน ๋ ์ด์์ & ํ์ด์ง
โโ apis/ # API ๊ด๋ จ ์ฝ๋ (์๋ ์ฐธ๊ณ )
โโ components/ # ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI ์ปดํฌ๋ํธ
โโ constants/ # ์ ์ญ ์์
โ โโ path.ts # URL ๋ผ์ฐํ
์์
โ โโ query-keys.ts # React Query ์ฟผ๋ฆฌ ํค ๋ชจ์
โโ hooks/ # ์ปค์คํ
ํ
โโ layouts/ # ํ์ด์ง/์น์
๋ ์ด์์
โโ lib/ # ์ ํธ๋ฆฌํฐ ํจ์ ๋ชจ์
โโ stores/ # Zustand ์ ์ญ ์ํ
โโ styles/ # ์ ์ญ ์คํ์ผ
โโ types/ # ์ฑ ์ ์ญ ํ์
์ ์
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 : ์ธ์ฆ ํค๋, 401 ๋ฆฌํ๋ ์ ๋ก์ง ๋ฑ ํฌํจ
pnpm install
pnpm run dev
App Router ๊ธฐ๋ฐ์ผ๋ก ๋ ์ด์์, ์๋ฒ/ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ ๋ถ๋ฆฌ ์ฉ์ด
React Query + Axios ์กฐํฉ์ผ๋ก ํด๋ผ์ด์ธํธ์์ ์๋ฒ ์ํ ๊ด๋ฆฌ ๊ฐํธ
Next.js๋ฅผ ๋ฐฐ์ฐ๊ณ ์์ด์ React Query์ ์ฌ์ฉ์ ์ฐ์ ํด๋ผ์ด์ธํธ์๋ง ์ง์คํ ์์
TailwindCSS 4.x + TypeScript ์์ ํตํฉ
Zustand๋ก ์ ์ญ ์ํ ๊ด๋ฆฌ
๋ชจ๋ ๋จ์ ํด๋ ๊ตฌ์กฐ๋ก ์ ์ง๋ณด์ ํธ๋ฆฌ