Next.js κΈ°λ° νλ‘ νΈμλ μΉ μ ν리μΌμ΄μ μ λ‘컬 κ°λ° νκ²½ μ€μ κ°μ΄λμ λλ€.
- Node.js 18.17 μ΄μ
- pnpm (κΆμ₯) λλ npm
- Git
- VS Code λλ WebStorm
- Chrome DevTools
- React Developer Tools
git fetch origin
git checkout main
git pull origin main# pnpm μ¬μ© (κΆμ₯)
pnpm install
# npm μ¬μ©
npm install# κ°λ° λͺ¨λ μ€ν
pnpm dev
# λλ
npm run dev# λΉλ
pnpm build
# νλ‘λμ
μλ² μ€ν
pnpm start- κ°λ° μλ²: http://localhost:3000
- νλ‘λμ μλ²: https://hi-meow.kro.kr/
- Framework: Next.js 15.1.0
- React: 19.x
- TypeScript: 5.x
- Styling: Tailwind CSS 3.4.17
- Design System: Radix UI
- Icons: Lucide React
- Theming: next-themes
- Toast Notifications: Sonner
- Forms: React Hook Form 7.54.1
- Validation: Zod 3.24.1
- Resolvers: @hookform/resolvers
- Charts: Recharts 2.15.0
- HTTP Client: Axios 1.9.0
- Date Handling: date-fns 4.1.0
- Carousel: Embla Carousel
- Animations: tailwindcss-animate
- Responsive Panels: react-resizable-panels
- Mobile Drawer: Vaul
π FrontEnd/
βββ π next.config.mjs # Next.js μ€μ
βββ π tailwind.config.ts # Tailwind CSS μ€μ
βββ π tsconfig.json # TypeScript μ€μ
βββ π app/ # App Router (Next.js 13+)
β βββ π layout.tsx # λ£¨νΈ λ μ΄μμ
β βββ π page.tsx # ννμ΄μ§
β βββ π cat/ # κ³ μμ΄ κ΄λ ¨ νμ΄μ§
β βββ π chat/ # μ±ν
νμ΄μ§
β βββ π diagnosis/ # μ§λ¨ νμ΄μ§
β βββ π login/ # λ‘κ·ΈμΈ νμ΄μ§
β βββ π ... # κΈ°ν νμ΄μ§λ€
βββ π components/ # μ¬μ¬μ© μ»΄ν¬λνΈ
β βββ π ui/ # UI μ»΄ν¬λνΈ (shadcn/ui)
β βββ π ... # 컀μ€ν
μ»΄ν¬λνΈλ€
βββ π hooks/ # 컀μ€ν
React ν
βββ π lib/ # μ νΈλ¦¬ν° λ° μ€μ
β βββ π types/ # TypeScript νμ
μ μ
β βββ π utils/ # μ νΈλ¦¬ν° ν¨μλ€
βββ π api/ # API κ΄λ ¨ λ‘μ§
βββ π public/ # μ μ νμΌλ€
κΆμ₯ νμ₯ νλ‘κ·Έλ¨:
- ES7+ React/Redux/React-Native snippets
- Tailwind CSS IntelliSense
- TypeScript Importer
- Prettier - Code formatter
- ESLint
- Auto Rename Tag
# λ¦°ν
μ€ν
pnpm lint
# μ½λ ν¬λ§·ν
(Prettier μ€μ μ)
pnpm format# ν¬νΈ μ¬μ© νλ‘μΈμ€ νμΈ λ° μ’
λ£
lsof -ti:3000 | xargs kill -9
# λ€λ₯Έ ν¬νΈλ‘ μ€ν
pnpm dev -p 3001# node_modules μμ ν μ¬μ€μΉ
rm -rf node_modules pnpm-lock.yaml
pnpm install
# μΊμ μ 리
pnpm store prune# Next.js μΊμ μ 리
rm -rf .next
# μ 체 μ 리 ν μ¬λΉλ
pnpm clean && pnpm build# TypeScript μΊμ μ 리
npx tsc --build --clean
# νμ
μ²΄ν¬ μ€ν
pnpm type-check# Tailwind μ€μ νμΈ
npx tailwindcss --init
# PostCSS μ€μ νμΈ
cat postcss.config.mjs# κ°λ° μλ² μμΈ λ‘κ·Έ
pnpm dev --debug
# λΉλ λΆμ
pnpm build --analyze
# μμ‘΄μ± νΈλ¦¬ νμΈ
pnpm list --depth=0
# λ²λ€ ν¬κΈ° λΆμ
npx @next/bundle-analyzerλ‘컬 κ°λ°μ μν νκ²½ λ³μ νμΌμ μμ±νμΈμ:
# API μλ² URL
NEXT_PUBLIC_API_BASE_URL=http://localhost:8080- π μ½λ© 컨벀μ
- π μ»€λ° κ·μΉ