React + Typescript + Tailwind ํ
ํ๋ฆฟ
๊ฐ์ธ์ ์ผ๋ก ๋น ๋ฅด๊ฒ ์์ํ๋ ค๊ณ ๋ง๋ ๋ณด์ผ๋ฌ ํ๋ ์ดํธ
๋ฆฌ์กํธ + 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