nextjs15-init

Use when user wants to create a new Next.js 15 project (Todo/Blog/Dashboard/E-commerce/Custom domain) with App Router, ShadCN, Zustand, Tanstack Query, and modern Next.js stack

$ Installer

git clone https://github.com/bear2u/my-skills /tmp/my-skills && cp -r /tmp/my-skills/.claude/skills/nextjs15-init ~/.claude/skills/my-skills

// tip: Run this command in your terminal to install the skill


name: nextjs15-init description: Use when user wants to create a new Next.js 15 project (Todo/Blog/Dashboard/E-commerce/Custom domain) with App Router, ShadCN, Zustand, Tanstack Query, and modern Next.js stack

NextJS 15 Init Skill

๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ Next.js 15 ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ˜„๋Œ€์ ์ธ ์Šคํƒ์œผ๋กœ ์ž๋™ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. Todo, Blog, Dashboard, E-commerce ๋˜๋Š” Custom ๋„๋ฉ”์ธ์„ ์„ ํƒํ•˜์—ฌ App Router ๊ธฐ๋ฐ˜์˜ ์™„์ „ํ•œ CRUD ์•ฑ์„ ์ฆ‰์‹œ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Quick Start

์Šคํ‚ฌ ์‹คํ–‰ ์‹œ ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค:

  • ํด๋”๋ช… (์˜ˆ: my-todo-app)
  • ํ”„๋กœ์ ํŠธ๋ช… (์˜ˆ: todo-app)
  • ๋„๋ฉ”์ธ ์„ ํƒ (Todo/Blog/Dashboard/E-commerce/Custom)
  • ์Šคํƒ ํ”„๋ฆฌ์…‹ (Minimal/Essential/Full Stack/Custom)

๊ทธ ํ›„ ์ž๋™์œผ๋กœ ๋‹ค์Œ ๋‹จ๊ณ„๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค:

# 1. Next.js 15 ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ (App Router, TypeScript, Tailwind)
npx create-next-app@latest [ํด๋”๋ช…] --typescript --tailwind --app --use-npm

# 2. ํŒจํ‚ค์ง€ ์„ค์น˜
npm install

# 3. ๋„๋ฉ”์ธ๋ณ„ App Router ๊ตฌ์กฐ ์ž๋™ ์ƒ์„ฑ
# - app/[domain]/ (ํŽ˜์ด์ง€)
# - components/[domain]/ (์ปดํฌ๋„ŒํŠธ)
# - lib/stores/[domain].ts (Zustand ์Šคํ† ์–ด)
# - lib/api/[domain].ts (API ๋กœ์ง)
# - lib/validations/[domain].ts (Zod ์Šคํ‚ค๋งˆ)

# 4. ์ฝ”๋“œ ํ’ˆ์งˆ ๊ฒ€์ฆ (ํ•„์ˆ˜)
npm run lint

# 5. ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰
npm run dev

Task Instructions

IMPORTANT: ์ด ์Šคํ‚ฌ์€ ๋Œ€ํ™”ํ˜•์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

Step 1: ๋„๋ฉ”์ธ ๋ฐ ํ”„๋กœ์ ํŠธ ์„ค์ • ์งˆ๋ฌธ

๋จผ์ € ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด๋ ‡๊ฒŒ ๋ฌผ์–ด๋ณด์„ธ์š”:

"Next.js 15 ์•ฑ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ •๋ณด๋ฅผ ์•Œ๋ ค์ฃผ์„ธ์š”:

1. ๋„๋ฉ”์ธ(์—”ํ‹ฐํ‹ฐ) ์„ ํƒ

์–ด๋–ค ๋„๋ฉ”์ธ์˜ ์•ฑ์„ ๋งŒ๋“œ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

A) Todo (ํ•  ์ผ ๊ด€๋ฆฌ)

  • ํ•„๋“œ: title, description, completed, createdAt, updatedAt
  • ๊ธฐ๋Šฅ: CRUD, ํ•„ํ„ฐ๋ง(์ „์ฒด/์ง„ํ–‰์ค‘/์™„๋ฃŒ), ์ฒดํฌ๋ฐ•์Šค ํ† ๊ธ€
  • API: /api/todos (GET, POST, PATCH, DELETE)

B) Blog (๋ธ”๋กœ๊ทธ/CMS)

  • ํ•„๋“œ: title, content, excerpt, slug, published, createdAt, updatedAt
  • ๊ธฐ๋Šฅ: CRUD, ๊ธ€ ์ž‘์„ฑ/์ˆ˜์ •, ๋ชฉ๋ก/์ƒ์„ธ ํŽ˜์ด์ง€, ๊ฒ€์ƒ‰
  • API: /api/posts (GET, POST, PATCH, DELETE)

C) Dashboard (๋Œ€์‹œ๋ณด๋“œ/์–ด๋“œ๋ฏผ)

  • ํ•„๋“œ: ํ†ต๊ณ„, ์ฐจํŠธ ๋ฐ์ดํ„ฐ, ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ
  • ๊ธฐ๋Šฅ: ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”, ํ…Œ์ด๋ธ”, ํ•„ํ„ฐ๋ง, ํŽ˜์ด์ง€๋„ค์ด์…˜
  • API: /api/analytics, /api/users

D) E-commerce (์‡ผํ•‘๋ชฐ)

  • ํ•„๋“œ: name, price, description, images, stock, category
  • ๊ธฐ๋Šฅ: ์ƒํ’ˆ ๋ชฉ๋ก/์ƒ์„ธ, ์žฅ๋ฐ”๊ตฌ๋‹ˆ, ์ฃผ๋ฌธ
  • API: /api/products, /api/cart, /api/orders

E) Custom (์ง์ ‘ ์ •์˜)

  • ์—”ํ‹ฐํ‹ฐ๋ช…๊ณผ ํ•„๋“œ๋ฅผ ์ง์ ‘ ์ž…๋ ฅ

2. ํ”„๋กœ์ ํŠธ ์ •๋ณด

  • ํด๋”๋ช…: ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ํด๋” ์ด๋ฆ„ (๊ธฐ๋ณธ๊ฐ’: [๋„๋ฉ”์ธ]-app, ์˜ˆ: todo-app)
    • ์ด ํด๋”์— Next.js ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค
  • ํ”„๋กœ์ ํŠธ๋ช…: Next.js ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ (๊ธฐ๋ณธ๊ฐ’: ํด๋”๋ช…๊ณผ ๋™์ผ)
    • package.json์˜ name ํ•„๋“œ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค

3. ์Šคํƒ ํ”„๋ฆฌ์…‹ ์„ ํƒ

๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์ฃผ์„ธ์š”:

A) Essential (๊ถŒ์žฅ)

  • โœ… Next.js 15 (App Router)
  • โœ… TypeScript
  • โœ… Tailwind CSS
  • โœ… ShadCN/ui (UI ์ปดํฌ๋„ŒํŠธ)
  • โœ… Zustand (ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ ๊ด€๋ฆฌ)
  • โœ… React Hook Form + Zod (ํผ ๊ด€๋ฆฌ + ๊ฒ€์ฆ)
  • โœ… Lucide Icons
  • โŒ Tanstack Query ์ œ์™ธ
  • โŒ Prisma ์ œ์™ธ
  • โŒ NextAuth ์ œ์™ธ

B) Minimal (๊ฐ€์žฅ ๋‹จ์ˆœ)

  • โœ… Next.js 15 (App Router)
  • โœ… TypeScript
  • โœ… Tailwind CSS
  • โŒ ShadCN ์ œ์™ธ
  • โŒ Zustand ์ œ์™ธ
  • โŒ React Hook Form ์ œ์™ธ
  • โŒ ๊ธฐํƒ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ œ์™ธ

C) Full Stack (๋ชจ๋“  ๊ธฐ๋Šฅ)

  • โœ… Next.js 15 (App Router)
  • โœ… TypeScript
  • โœ… Tailwind CSS
  • โœ… ShadCN/ui
  • โœ… Zustand (ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ)
  • โœ… Tanstack Query (์„œ๋ฒ„ ์ƒํƒœ)
  • โœ… React Hook Form + Zod
  • โœ… Drizzle ORM (TypeScript-first ORM)
  • โœ… Better Auth (์ธ์ฆ)
  • โœ… Framer Motion (์• ๋‹ˆ๋ฉ”์ด์…˜)
  • โœ… Lucide Icons

D) Custom (์ง์ ‘ ์„ ํƒ)

  • ๊ฐ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์„ ํƒ

์–ด๋–ค ๋„๋ฉ”์ธ๊ณผ ํ”„๋ฆฌ์…‹์„ ์„ ํƒํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (๋„๋ฉ”์ธ: A/B/C/D/E, ํ”„๋ฆฌ์…‹: A/B/C/D)"

Step 2: Custom ์„ ํƒ ์‹œ ์ถ”๊ฐ€ ์งˆ๋ฌธ

2-1. Custom ๋„๋ฉ”์ธ (E) ์„ ํƒ ์‹œ:

  1. ์—”ํ‹ฐํ‹ฐ๋ช…: ์—”ํ‹ฐํ‹ฐ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š” (์˜ˆ: Product, Post, User)
  2. ํ•„๋“œ ์ •์˜: ๊ฐ ํ•„๋“œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” (ํ˜•์‹: ํ•„๋“œ๋ช…:ํƒ€์ž…, ์˜ˆ: title:string, price:number, isActive:boolean)
    • ์ง€์› ํƒ€์ž…: string, number, boolean, Date
    • createdAt, updatedAt์€ ์ž๋™ ์ถ”๊ฐ€๋จ
  3. ์ฃผ์š” ๊ธฐ๋Šฅ: ํ•„ํ„ฐ๋ง/์ •๋ ฌ ๊ธฐ์ค€์ด ๋  ํ•„๋“œ๋ฅผ ์„ ํƒํ•˜์„ธ์š”

2-2. Custom ์Šคํƒ ํ”„๋ฆฌ์…‹ (D) ์„ ํƒ ์‹œ:

๋‹ค์Œ ์งˆ๋ฌธ๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ํ•˜์„ธ์š”:

  1. UI ์ปดํฌ๋„ŒํŠธ: ShadCN/ui๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (์˜ˆ/์•„๋‹ˆ์˜ค)
  2. ์ƒํƒœ ๊ด€๋ฆฌ: Zustand๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (์˜ˆ/์•„๋‹ˆ์˜ค)
  3. ์„œ๋ฒ„ ์ƒํƒœ: Tanstack Query๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (์˜ˆ/์•„๋‹ˆ์˜ค)
  4. ํผ ๊ด€๋ฆฌ: React Hook Form + Zod๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (์˜ˆ/์•„๋‹ˆ์˜ค)
  5. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: Drizzle ORM์„ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (์˜ˆ/์•„๋‹ˆ์˜ค)
  6. ์ธ์ฆ: Better Auth๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (์˜ˆ/์•„๋‹ˆ์˜ค)
  7. ์• ๋‹ˆ๋ฉ”์ด์…˜: Framer Motion์„ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (์˜ˆ/์•„๋‹ˆ์˜ค)

Step 3: ์„ ํƒ๋œ ๋„๋ฉ”์ธ๊ณผ ์Šคํƒ์— ๋”ฐ๋ผ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

  1. Next.js 15 ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ:

    • ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ํด๋”๋ช…์œผ๋กœ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
    • ๋ช…๋ น์–ด: npx create-next-app@latest [ํด๋”๋ช…] --typescript --tailwind --app --use-npm
    • ํด๋”๋ช…๊ณผ ํ”„๋กœ์ ํŠธ๋ช…์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ, ์ƒ์„ฑ ํ›„ package.json์˜ name ํ•„๋“œ๋ฅผ ์ˆ˜์ •
  2. ์„ ํƒ๋œ ํŒจํ‚ค์ง€ ์„ค์น˜: npm install [ํŒจํ‚ค์ง€๋“ค]

  3. ํด๋” ๊ตฌ์กฐ ์ƒ์„ฑ: App Router ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ

    app/
    โ”œโ”€โ”€ (auth)/
    โ”œโ”€โ”€ [domain]/
    โ”œโ”€โ”€ api/[domain]/
    โ”œโ”€โ”€ layout.tsx
    โ””โ”€โ”€ page.tsx
    components/
    โ”œโ”€โ”€ ui/ (ShadCN)
    โ”œโ”€โ”€ [domain]/
    โ””โ”€โ”€ layouts/
    lib/
    โ”œโ”€โ”€ db/ (Prisma)
    โ”œโ”€โ”€ stores/ (Zustand)
    โ”œโ”€โ”€ api/
    โ”œโ”€โ”€ utils/
    โ””โ”€โ”€ validations/ (Zod)
    
  4. ๋„๋ฉ”์ธ๋ณ„ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ƒ์„ฑ:

    A) Todo: title, description, completed, createdAt, updatedAt

    • API Routes: /api/todos (CRUD)
    • Pages: /todos (๋ฆฌ์ŠคํŠธ), /todos/[id] (์ƒ์„ธ)
    • Components: TodoList, TodoItem, TodoForm
    • Store: useTodoStore (Zustand)
    • Validation: todoSchema (Zod)

    B) Blog: title, content, excerpt, slug, published, createdAt, updatedAt

    • API Routes: /api/posts (CRUD)
    • Pages: /blog (๋ชฉ๋ก), /blog/[slug] (์ƒ์„ธ), /blog/write (์ž‘์„ฑ)
    • Components: PostList, PostCard, PostEditor
    • Store: usePostStore (Zustand)
    • Validation: postSchema (Zod)

    C) Dashboard: ํ†ต๊ณ„, ์ฐจํŠธ, ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ

    • API Routes: /api/analytics, /api/users
    • Pages: /dashboard (๋ฉ”์ธ), /dashboard/users (์‚ฌ์šฉ์ž)
    • Components: Chart, StatsCard, DataTable
    • Store: useDashboardStore (Zustand)
    • Validation: userSchema (Zod)

    D) E-commerce: name, price, description, images, stock, category

    • API Routes: /api/products, /api/cart, /api/orders
    • Pages: /products (๋ชฉ๋ก), /products/[id] (์ƒ์„ธ), /cart (์žฅ๋ฐ”๊ตฌ๋‹ˆ)
    • Components: ProductCard, ProductGrid, Cart
    • Store: useCartStore, useProductStore (Zustand)
    • Validation: productSchema, cartSchema (Zod)

    E) Custom: ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ

    • API Routes: ๊ธฐ๋ณธ CRUD
    • Pages: ๊ธฐ๋ณธ List/Detail
    • Components: ๊ธฐ๋ณธ CRUD ์ปดํฌ๋„ŒํŠธ
    • Store: ๊ธฐ๋ณธ store
    • Validation: ๊ธฐ๋ณธ schema
  5. ShadCN ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ (Essential ์ด์ƒ):

    npx shadcn@latest init
    npx shadcn@latest add button card input form table
    
  6. ์ฝ”๋“œ ๊ฒ€์ฆ ๋ฐ ์˜ค๋ฅ˜ ์ˆ˜์ •:

    a. npm run lint ์‹คํ–‰

    b. ๋ฐœ๊ฒฌ๋œ ์˜ค๋ฅ˜ ์ˆ˜์ •:

    • Import ๊ฒฝ๋กœ: @/ alias ์‚ฌ์šฉ (tsconfig.json ์„ค์ •)
    • TypeScript ํƒ€์ž…: ๋ชจ๋“  ํƒ€์ž… ๋ช…์‹œ
    • ESLint ๊ทœ์น™: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜, import ์ œ๊ฑฐ
    • Next.js ๊ทœ์น™: metadata, generateStaticParams ๋“ฑ
    • 'use client' ์ง€์‹œ์–ด: useState, useEffect ๋“ฑ React Hooks ์‚ฌ์šฉ ์‹œ ํŒŒ์ผ ์ตœ์ƒ๋‹จ์— ์ถ”๊ฐ€

    c. npm run build ๋˜๋Š” pnpm build ์‹คํ–‰

    d. ๋นŒ๋“œ ์˜ค๋ฅ˜ ์ˆ˜์ •:

    • TypeScript ํƒ€์ž… ์˜ค๋ฅ˜: ํƒ€์ž… ๋ถˆ์ผ์น˜, nullable ์ฒดํฌ ๋ˆ„๋ฝ ๋“ฑ
    • ๋ชจ๋“ˆ import ์˜ค๋ฅ˜: ๊ฒฝ๋กœ ํ™•์ธ, ํŒจํ‚ค์ง€ ์„ค์น˜ ํ™•์ธ
    • Server/Client Component ์˜ค๋ฅ˜: ์ ์ ˆํ•œ 'use client' ์ง€์‹œ์–ด ์ถ”๊ฐ€
    • Dynamic import ์˜ค๋ฅ˜: server-only ์ฝ”๋“œ๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋„๋ก ํ™•์ธ

    e. ์žฌ๊ฒ€์ฆ: lint์™€ build ๋ชจ๋‘ ์„ฑ๊ณตํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต

    f. ๋ชฉํ‘œ:

    • npm run lint ๊ฒฐ๊ณผ๊ฐ€ "0 errors"
    • npm run build ๋˜๋Š” pnpm build ์„ฑ๊ณต

    โœ… CRITICAL: ์ด ๋‹จ๊ณ„๋Š” ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. lint์™€ build ๋ชจ๋‘ ์„ฑ๊ณตํ•ด์•ผ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Step 4: ์ตœ์ข… ๊ฒ€์ฆ ๋ฐ ์•ˆ๋‚ด

โœ… CRITICAL: ์ด ๋‹จ๊ณ„๋Š” ํ”„๋กœ์ ํŠธ ์™„๋ฃŒ์˜ ํ•„์ˆ˜ ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค. lint์™€ build ๋ชจ๋‘ ์„ฑ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ESLint ๊ฒ€์ฆ:

    npm run lint
    
    • โœ… ์„ฑ๊ณต ์˜ˆ์‹œ:

      โœ” No ESLint warnings or errors
      
    • โŒ ์‹คํŒจ ์˜ˆ์‹œ (error๊ฐ€ ์žˆ์œผ๋ฉด ๋ฐ˜๋“œ์‹œ ์ˆ˜์ •):

      Error: 'useState' is defined but never used
      Error: Missing return type on function
      
  2. ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ ๊ฒ€์ฆ:

    npm run build
    

    ๋˜๋Š” pnpm ์‚ฌ์šฉ ์‹œ:

    pnpm build
    
    • โœ… ์„ฑ๊ณต ์˜ˆ์‹œ:

      โœ“ Compiled successfully
      โœ“ Linting and checking validity of types
      โœ“ Collecting page data
      โœ“ Generating static pages
      
    • โŒ ์‹คํŒจ ์˜ˆ์‹œ (๋นŒ๋“œ ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ๋ฐ˜๋“œ์‹œ ์ˆ˜์ •):

      Type error: Property 'xyz' does not exist on type 'ABC'
      Error: Module not found: Can't resolve '@/...'
      

    ์ค‘์š”: ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•˜๋ฉด TypeScript ํƒ€์ž… ์˜ค๋ฅ˜๋‚˜ import ๊ฒฝ๋กœ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ๋‹ค์‹œ ๋นŒ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  3. ๊ฒ€์ฆ ๊ฒฐ๊ณผ ์š”์•ฝ (lint์™€ build ๋ชจ๋‘ ์„ฑ๊ณต ์‹œ):

    โœ… Next.js 15 ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์™„๋ฃŒ!
    โœ… ํŒจํ‚ค์ง€ ์„ค์น˜ ์™„๋ฃŒ (ShadCN, Zustand, Tanstack Query ๋“ฑ)
    โœ… ESLint ๊ฒ€์ฆ ํ†ต๊ณผ (0 errors)
    โœ… TypeScript ๋นŒ๋“œ ์„ฑ๊ณต
    โœ… ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ ์™„๋ฃŒ
    
  4. ํ”„๋กœ์ ํŠธ ์ •๋ณด ์ œ๊ณต:

    • ํด๋”๋ช…: [์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’] (์˜ˆ: my-todo-app)
    • ํ”„๋กœ์ ํŠธ๋ช…: [์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’] (์˜ˆ: todo-app)
    • ๋„๋ฉ”์ธ: [์„ ํƒ๋œ ๋„๋ฉ”์ธ] (Todo/Blog/Dashboard/E-commerce/Custom)
    • ์„ ํƒ๋œ ์Šคํƒ: [ํ”„๋ฆฌ์…‹๋ช…] (ShadCN, Zustand, Tanstack Query ๋“ฑ)
    • ์ฃผ์š” ๊ธฐ๋Šฅ: [๋„๋ฉ”์ธ] CRUD, API Routes, ํƒ€์ž… ์•ˆ์ „์„ฑ
    • ์ƒ์„ฑ๋œ ํŒŒ์ผ: XX๊ฐœ TypeScript ํŒŒ์ผ (app, components, lib)
  5. ์‹คํ–‰ ๋ฐฉ๋ฒ• ์•ˆ๋‚ด:

    cd [ํด๋”๋ช…]
    npm run dev
    # http://localhost:3000 ์—์„œ ํ™•์ธ
    
  6. ๋‹ค์Œ ๋‹จ๊ณ„ ์ œ์•ˆ (์„ ํƒ์‚ฌํ•ญ, ๋„๋ฉ”์ธ๋ณ„):

    • Todo: ํ•ญ๋ชฉ ์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œ, ํ•„ํ„ฐ๋ง(์ „์ฒด/์ง„ํ–‰์ค‘/์™„๋ฃŒ), ์™„๋ฃŒ ํ† ๊ธ€
    • Blog: ๊ธ€ ์ž‘์„ฑ/์ˆ˜์ •, ๋ชฉ๋ก/์ƒ์„ธ ํŽ˜์ด์ง€, ๊ฒ€์ƒ‰, ํƒœ๊ทธ
    • Dashboard: ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”, ์ฐจํŠธ, ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ, ํ•„ํ„ฐ๋ง
    • E-commerce: ์ƒํ’ˆ ๋ชฉ๋ก/์ƒ์„ธ, ์žฅ๋ฐ”๊ตฌ๋‹ˆ, ์ฃผ๋ฌธ, ์นดํ…Œ๊ณ ๋ฆฌ
    • ๊ณตํ†ต: TypeScript ํƒ€์ž… ์•ˆ์ „์„ฑ, API ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ (Vercel)

Core Principles

  • App Router: Next.js 15 App Router ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ
  • ํƒ€์ž… ์•ˆ์ „์„ฑ: TypeScript Strict Mode
  • ์ปดํฌ๋„ŒํŠธ ์žฌ์‚ฌ์šฉ: ShadCN/ui ํ™œ์šฉ
  • ์ƒํƒœ ๊ด€๋ฆฌ: Zustand (ํด๋ผ์ด์–ธํŠธ), Tanstack Query (์„œ๋ฒ„)
  • ์ฝ”๋“œ ํ’ˆ์งˆ: ESLint + Prettier
  • ํผ ๊ฒ€์ฆ: React Hook Form + Zod

Reference Files

references/setup-guide.md - ์™„์ „ํ•œ ๊ฐ€์ด๋“œ

  • ๊ธฐ๋ณธ ์…‹์—… (๋„๋ฉ”์ธ๋ณ„ CRUD, API Routes, ์ปดํฌ๋„ŒํŠธ)
  • ์„ ํƒ ์˜ต์…˜: ShadCN, Zustand, Tanstack Query, Drizzle ORM, Better Auth, Framer Motion

Notes

  • ๋Œ€ํ™”ํ˜• ์Šคํ‚ฌ: ์‚ฌ์šฉ์ž์—๊ฒŒ ๋„๋ฉ”์ธ๊ณผ ํ”„๋ฆฌ์…‹ ์„ ํƒ์„ ํ†ตํ•ด ๋งž์ถคํ˜• ์•ฑ ๊ตฌ์„ฑ
  • ๋„๋ฉ”์ธ ์ง€์›: Todo, Blog, Dashboard, E-commerce, Custom (์‚ฌ์šฉ์ž ์ •์˜)
  • ํ”„๋ฆฌ์…‹ ์ œ๊ณต: Full Stack, Essential, Minimal, Custom
  • ์„ ํƒ ๊ฐ€๋Šฅ ๊ธฐ๋Šฅ: ShadCN, Zustand, Tanstack Query, Drizzle ORM, Better Auth, Framer Motion
  • ๊ธฐ๋ณธ ํฌํ•จ: Next.js 15 (App Router), TypeScript, Tailwind CSS, ESLint
  • ํ”Œ๋žซํผ: Web (Vercel ์ตœ์ ํ™”)
  • ํ’ˆ์งˆ ๋ณด์ฆ:
    • ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๋Š” npm run lint ํ†ต๊ณผ ํ•„์ˆ˜
    • TypeScript Strict Mode
    • ํƒ€์ž… ์•ˆ์ „์„ฑ ๋ณด์žฅ
    • App Router ํŒจํ„ด ์ค€์ˆ˜
    • ๋„๋ฉ”์ธ๋ณ„ ์ตœ์ ํ™”๋œ UI/UX