๋น์ ์ ์ทจํฅ์ ๋ฑ ๋ง๋ ์์ธ์ ์ฐพ๊ณ , ๋ค์ํ ์ฌ๋๋ค๊ณผ ์์ธ ๊ฒฝํ์ ๋๋ ๋ณด์ธ์!
์์ธํ์ธ๋๋ ์์ธ์ ๋ํ ์ ๋ณด์ ๋ฆฌ๋ทฐ๋ฅผ ๋ฑ๋กํ๊ณ ํ์ํ ์ ์๋ ์ฌ์ฉ์ ์ฐธ์ฌํ ์์ธ ์ปค๋ฎค๋ํฐ์
๋๋ค.
WINE์ ์์ธ์ ๋ํ ๋ค์ํ ์ ๋ณด๋ฅผ ํ์ํ๊ณ ,
์ง์ ๋ฆฌ๋ทฐ๋ฅผ ์์ฑํ๊ณ ๊ณต์ ํ ์ ์๋ ์์ธ ์ ๋ณด ๊ธฐ๋ฐ ์ปค๋ฎค๋ํฐ ํ๋ซํผ์
๋๋ค.
๋ก๊ทธ์ธ์ ํ๋ฉด ์์ ๋ง์ ๋ฆฌ๋ทฐ๋ฅผ ๋จ๊ธฐ๊ฑฐ๋ ์๋ก์ด ์์ธ์ ๋ฑ๋กํ ์๋ ์์ด์!
ํ๋ ์ด๋ฒ ์ฌ๋ผ์ด๋, ํฅ๋ฏธ ํ๊ทธ, ๊ทธ๋ฆฌ๊ณ AI ์ฑ๋ด ์ถ์ฒ ๊ธฐ๋ฅ๊น์ง ๋ํด
๋น์ ์ ์ทจํฅ์ ๋ฑ ๋ง๋ ์์ธ์ ์ฝ๊ฒ ์ฐพ์ ์ ์๋๋ก ๋์์ค๋๋ค.
| ํญ๋ชฉ | ์ฌ์ฉ ๊ธฐ์ |
|---|---|
| ๊ฐ๋ฐ ์ธ์ด | Typescript, HTML, CSS |
| ์ฝ๋ ์๋ํฐ | Visual Studio Code (VSC) |
| ํ๋ ์์ํฌ | Next.js 13 |
| ํฌ๋งคํฐ | ESLint, Prettier |
| ๋ฒ๋ค๋ง | Webpack |
| ํ์ ๊ด๋ฆฌ | Git |
| ์คํ์ผ๋ง | Tailwind 3.4 + shadcn/ui |
| ๋ฐฐํฌ | Vercel |
| ๋ผ์ฐํ | React Router |
| ๋ฐ์ดํฐ ํจ์นญ | axios |
| ์ํ๊ด๋ฆฌ | Zustand, TanStack Query |
-
Next.js 13
- ํ์ผ ๊ธฐ๋ฐ ๋ผ์ฐํ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด ์ปดํฌ๋ํธ์ URL ๊ฒฝ๋ก๊ฐ 1:1๋ก ๋งคํ๋๋ ์ง๊ด์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ ์ ์์์ต๋๋ค.
- getServerSideProps, getStaticProps ๋ฑ์ ํตํด ํ์ด์ง ๋ณ๋ก SSR๊ณผ SSG๋ฅผ ์ ์ฐํ๊ฒ ์ ํํ ์ ์์์ต๋๋ค.
- pages/api ๋๋ ํ ๋ฆฌ๋ฅผ ํตํ API ๋ผ์ฐํธ ์์ฑ์ด ๊ฐ๋ฅํด
์ธ์ฆ๊ณผ์ ์์ ๋์์ค๋ ์๋ต์ setCookie๋ฅผ ๋ฌ์์ฃผ๋ BFF๋ฅผ ์ถ๊ฐํ ์ ์์์ต๋๋ค.
-
Tailwind + shadcn/ui
- ์ ํธ๋ฆฌํฐ ๊ธฐ๋ฐ์ ๋น ๋ฅธ ์คํ์ผ๋ง๊ณผ shadcn/ui์ ์ผ๊ด๋ ์ปดํฌ๋ํธ ์ฌ์ฉํด, ๋น ๋ฅธ MVP ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ์ต๋๋ค.
- ์ ๊ทผ์ฑ๊ณผ ๋์์ธ ์ผ๊ด์ฑ์ ์งํค๋ฉด์๋ cnํจ์๋ฅผ ํตํด ์ ์ฐํ UI ์ปค์คํฐ๋ง์ด์ง์ด ๊ฐ๋ฅํ์ต๋๋ค.
- Next.js์์ ๊ถํฉ์ด ์ข์ SSR ํ๊ฒฝ์์๋ ์์ ์ ์ผ๋ก ์๋ํ๋ฉฐ,
์ค์ ์ฌ์ฉ๋ ํด๋์ค๋ง ๋น๋ ์์ ์ css๋ก ์์ฑ๋๊ธฐ ๋๋ฌธ์ ๋ ์์ ๋ฒ๋ค๋ก ๋น ๋ฅด๊ฒ ๋ ๋๋ง์ด ๊ฐ๋ฅํ์ต๋๋ค.
-
Zustand๋ฅผ ํตํด ์ ์ญ ์ฌ์ฉ์ ์ํ, ํํฐ ์ ๋ณด ๋ฑ ํ์ด์ง ๊ฐ ๊ณต์ ํด์ผ ํ๋ ์ํ๋ฅผ ๊ฐํธํ๊ฒ ๊ด๋ฆฌํ ์ ์์์ต๋๋ค.
-
React Query๋ฅผ ํตํด ์บ์ฑ, ์๋ฌ ์ฒ๋ฆฌ, ๋ก๋ฉ ์ํ ๊ด๋ฆฌ ๋ฑ API ํต์ ์ต์ ํ๊ฐ ๊ฐ๋ฅํ์ต๋๋ค.
-
React Hook Form์ ์ฌ์ฉํ์ฌ ๊ฐ๋ณ๊ณ ์ฑ๋ฅ ์ข์ ํผ ์ํ ๊ด๋ฆฌ๋ฅผ ๊ตฌํํ ์ ์์๊ณ ,
Zod์์ ์ฐ๋์ ํตํด ์คํค๋ง ๊ธฐ๋ฐ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ ์ฉํ์ต๋๋ค. -
์ธํ ์ปดํฌ๋ํธ์ ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ฐ๋ก ํ์ํ๊ณ , ์ฌ์ฉ์ ํผ๋๋ฐฑ์ ์ง๊ด์ ์ผ๋ก ์ ๊ณตํ ์ ์์์ต๋๋ค
- ์ ํด์ง ๊ท์น์ ๋ฐ๋ผ ์๋์ ์ผ๋ก ์ฝ๋ ์คํ์ผ์ ์ ๋ฆฌํด ์ฝ๋์ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ ์ ํ์ต๋๋ค.
- ์ฝ๋ ํ์ง ๊ด๋ฆฌ๋ eslint์, ์ฝ๋ ํฌ๋งทํ ์ prettier์ ์ผ์ํด ์ฌ์ฉํ์ต๋๋ค.
- ์์ธ ๊ท์น์ ํ์๋ค๊ณผ ํ์ ํ ์ฌ์ฉํ์ต๋๋ค.
| ์ด๋ฆ | ์ญํ |
|---|---|
| main | ๋ฐฐํฌ(ํ๋ก๋์ )์ฉ ์ฝ๋. ํญ์ ์์ ๋ ์ํ ์ ์ง |
| dev | ๊ฐ๋ฐ์ฉ ํตํฉ ๋ธ๋์น. ์ฌ๋ฌ ๊ธฐ๋ฅ์ด ํฉ์ณ์ง๋ ๊ณณ |
| feature/xxx | ์๋ก์ด ๊ธฐ๋ฅ, ์์ ๋จ์๋ณ ๋ธ๋์น |
| fix/xxx | ๋ฒ๊ทธ ์์ ๋ธ๋์น |
| refactor/xxx | ์ฝ๋ ๊ฐ์ ๋ธ๋์น |
๐ฆsrc/
โโโ assets/
โโโ pages/
โ โโโ _app.tsx // ์ ์ญ ์ค์ (Providers, ์คํ์ผ)
โ โโโ _document.tsx // HTML ๋ฌธ์ ๊ตฌ์กฐ
โ โโโ index.tsx // ํํ์ด์ง
| โโโ wines/ // ์์ธ ๋ชฉ๋ก ๋ฐ ์์ธ ํ์ด์ง
| โโโ my-profile/ // ๋ง์ดํ์ด์ง
| โโโ signin/ // ๋ก๊ทธ์ธ ํ์ด์ง
| โโโ signup/ // ํ์๊ฐ์
ํ์ด์ง
| โโโ oatuh/ // ์์
๋ก๊ทธ์ธ
โ โโโ api/ // API Routes
โโโ components/
โ โโโ ui/ // shadcn/ui ์ปดํฌ๋ํธ
โ โโโ common/ // ๊ณตํต ์ปดํฌ๋ํธ
โ โโโ ...
โโโ lib/
โ โโโ utils.ts // ์ ํธ๋ฆฌํฐ ํจ์
โ โโโ api.ts // API ํด๋ผ์ด์ธํธ (axios)
โ โโโ auth.ts // ์ธ์ฆ ๊ด๋ จ
โโโ stores/ // Zustand ์คํ ์ด
โโโ hooks/ // ์ปค์คํ
ํ
(TanStack Query)
โโโ styles/
โ โโโ globals.css // Tailwind CSS
โโโ types/ // TypeScript ํ์
์ ์
- ์ด๊ธฐ ์ง์ ์ ์คํ๋์ฌ ์ด๋ฏธ์ง๋ฅผ ๋ฃ์ด gnb๊ฐ ์ ๋ฐ์ดํธ ๋๋ ๋ชจ์ต์ ๊ฐ๋ ธ์ต๋๋ค.
- framer motion์ ํตํด ์ ๋๋ฉ์ด์ ์ ์ ์ฉํด ์ฌ์ฉ์์๊ฒ ๋ถ๋๋ฌ์ด ์ฒซ ์ธ์์ ์ ๊ณตํ์ต๋๋ค.
- ๋ก๊ทธ์ธ, ํ์๊ฐ์ ์ด ๊ฐ๋ฅํ ๊ณต๊ฐ์ ๋๋ค.
- ๋ฏธ๋ฆฌ ์คํ์ผ์ด ์ ์ฉ๋ ์ธํ๊ณผ rhf๋ฅผ ์ฐ๊ฒฐํด ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํํ๊ณ ์ ์ ์๊ฒ ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ์ ์ค๋๋ค.
- ๋ก๊ทธ์ธ ์ฑ๊ณต ์ setCookieํค๋๊ฐ ๋ฌ๋ฆฐ ์๋ต์ ๋ฐ์ ์ ์ ์ ์์ธ์คํ ํฐ๊ณผ ๋ฆฌํ๋ ์ฌ ํ ํฐ์ ์ฟ ํค์ ์ ์ฅํฉ๋๋ค.
- ์นด์นด์ค ์์ ๋ก๊ทธ์ธ์ ์ง์ํฉ๋๋ค.
- ํ๋กํ ์ด๋ฏธ์ง์ ๋๋ค์์ ๋ณ๊ฒฝํ ์ ์๋ ๊ณต๊ฐ์ ๋๋ค.
- ๋ณธ์ธ์ด ์์ฑํ ๋ฆฌ๋ทฐ์ ์์ธ์ ํ์ธํ ์ ์์ต๋๋ค.
- ํด๋น ํ์ด์ง์์ ๋ณธ์ธ์ด ์์ฑํ ๋ฆฌ๋ทฐ์ ์์ธ๋ค์ ์์ , ์ญ์ ํ ์ ์์ต๋๋ค.
- ๋ฑ๋ก๋ ์์ธ์ ์กฐํํ ์ ์๋ ๊ณต๊ฐ์ ๋๋ค.
- ๊ฒ์ ๋ฐ์ ํํฐ๋ฅผ ํตํด ์ํ๋ ์กฐ๊ฑด์ ์์ธ์ ์ฐพ์ ์ ์์ต๋๋ค.
- ์๋จ์ ์ถ์ฒ์์ธ์ ํตํด ํ์ ์ด ๋์ ์์ธ์ ์ถ์ฒ๋ฐ์ ์ ์์ต๋๋ค.
- ์์ธ ๋ฑ๋กํ๊ธฐ ๋ฒํผ์ ํตํด ์๋ก์ด ์์ธ์ ๋ฑ๋กํ ์ ์์ต๋๋ค.
- ์์ธ ์นด๋๋ฅผ ํด๋ฆญํด ์์ธ ์์ธํ์ด์ง๋ก ์ด๋ํ ์ ์์ต๋๋ค.
- ์์ธ์ ๊ธฐ๋ณธ ์ ๋ณด์ ํด๋น ์์ธ์ ๋ฌ๋ฆฐ ๋ฆฌ๋ทฐ๋ค์ ํ์ธํ ์ ์๋ ๊ณต๊ฐ์ ๋๋ค.
- ํ๊ท ๋ณ์ ์ด ํ์๋๊ณ , ๋ฆฌ๋ทฐํ๊ธฐ ๋ฒํผ์ ํตํด ๋ฆฌ๋ทฐ๋ฅผ ์๋กญ๊ฒ ๋ฑ๋กํ ์ ์์ต๋๋ค.
- ๊ด์ฌ์๋ ๋ฆฌ๋ทฐ๋ ์ด์ด์ ์์ธํ๊ฒ ๋ณผ ์ ์๊ณ , ์ข์์๋ฅผ ํ ์ ์์ต๋๋ค.
- ๋ณธ์ธ์ด ์์ฑํ ๋ฆฌ๋ทฐ๋ ์์ ๋ฐ ์ญ์ ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.




