← All guides

Claude로 Next.js 프로젝트 부트스트랩하기: 실전 가이드

Claude Code로 Next.js 15 프로젝트를 처음부터 빠르게 설정하는 방법 — App Router, TypeScript, Tailwind, Supabase, 인증 연동까지 한 번에 부트스트랩하는 프롬프트와 전략.

Claude로 Next.js 프로젝트 부트스트랩하기: 실전 가이드

Claude Code로 Next.js 프로젝트를 처음부터 설정하는 최적 방법은 CLAUDE.md 먼저 작성하고, 스택 선택을 한 번의 프롬프트로 넘기고, Claude가 설정 파일을 일괄 생성하게 두는 것이다. 이 방식으로 1시간 걸리던 초기 설정을 10-15분으로 줄일 수 있다. 이 가이드는 단계별 명령어와 실전 CLAUDE.md 템플릿을 제공한다.


0단계: Next.js 프로젝트 생성

# 기본 생성 (Claude와 작업 전 준비)
npx create-next-app@latest my-app \
  --typescript \
  --tailwind \
  --eslint \
  --app \
  --src-dir \
  --import-alias "@/*"

cd my-app

1단계: CLAUDE.md 먼저 작성

프로젝트 루트에 CLAUDE.md를 먼저 만든다. Claude Code의 모든 세션이 이 파일을 읽고 일관된 코드를 생성한다.

# my-app CLAUDE.md

## 프로젝트 개요
[서비스 설명 1-2줄]

## 기술 스택
- Framework: Next.js 15 App Router
- Language: TypeScript (strict)
- Styling: Tailwind CSS + shadcn/ui
- Database: Supabase (PostgreSQL)
- Auth: Clerk
- Package manager: bun

## 디렉토리 구조
src/
├── app/                 # App Router 페이지
│   ├── (auth)/         # 인증 필요 페이지 그룹
│   ├── (public)/       # 인증 불필요 페이지 그룹
│   └── api/            # API Routes
├── components/
│   ├── ui/             # shadcn 기본 컴포넌트 (수정 금지)
│   └── [기능명]/       # 기능별 컴포넌트
├── lib/
│   ├── supabase/       # Supabase 클라이언트
│   └── utils.ts        # 유틸리티 함수
└── types/              # 전역 TypeScript 타입

## 코딩 규칙
- 서버 컴포넌트 기본 (클라이언트 컴포넌트는 'use client' 명시)
- 에러 처리: try-catch + 구체적인 에러 메시지
- 환경변수: NEXT_PUBLIC_ 프리픽스는 클라이언트 노출 용도만
- import: @/ 절대 경로 사용

## 금지 사항
- console.log (개발용만, 프로덕션 빌드에 포함되면 안 됨)
- any 타입
- useEffect를 data fetching에 사용 (서버 컴포넌트 또는 useSWR 사용)
- pages/ 디렉토리 (App Router만 사용)

## 명령어
- dev: bun run dev
- build: bun run build
- typecheck: bun run typecheck
- lint: bun run lint

2단계: 초기 설정 프롬프트 (한 번에)

claude "
다음 설정을 모두 진행해줘:

1. shadcn/ui 초기화 및 기본 컴포넌트 설치
   (button, input, form, card, dialog, toast, dropdown-menu)

2. Supabase 클라이언트 설정
   - src/lib/supabase/client.ts (브라우저용)
   - src/lib/supabase/server.ts (서버 컴포넌트용)
   - 환경변수: NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY

3. Clerk 미들웨어 설정
   - middleware.ts (루트)
   - src/app/layout.tsx에 ClerkProvider 추가
   - 환경변수: NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY, CLERK_SECRET_KEY

4. TypeScript 경로 alias 확인 (@/ = src/)

5. .env.local.example 파일 생성 (실제 값 없이 키 이름만)

모든 설정 후 bun run build로 빌드 성공 확인해줘.
"

3단계: 기본 레이아웃 설정

claude "
기본 앱 구조를 만들어줘:

1. src/app/layout.tsx
   - Clerk ClerkProvider 래핑
   - 한국어 locale 설정 (lang='ko')
   - 기본 메타태그

2. src/app/(public)/page.tsx
   - 랜딩 페이지 (간단한 히어로 섹션)
   - Tailwind + shadcn Button 사용

3. src/app/(auth)/dashboard/page.tsx
   - 로그인 후 대시보드
   - Clerk useUser() 훅으로 사용자 정보 표시

4. src/components/navigation.tsx
   - 상단 네비게이션
   - 로그인/로그아웃 버튼 (Clerk SignInButton, UserButton)
   - 모바일 반응형

CLAUDE.md의 컨벤션 따르고, TypeScript strict 에러 없이 빌드 되어야 함.
"

4단계: DB 스키마 및 타입 생성

claude "
Supabase 데이터베이스 설정:

1. src/lib/supabase/schema.sql 생성
   테이블:
   - profiles: id(uuid, FK users), full_name(text), avatar_url(text), created_at
   - [프로젝트 핵심 테이블 1-2개]
   
   RLS 정책:
   - profiles: 자신의 데이터만 읽기/쓰기 가능
   
2. src/types/database.ts 생성
   - Supabase 스키마 기반 TypeScript 타입
   - Database, Tables, Row, Insert, Update 타입

3. src/lib/supabase/queries.ts 생성
   - 자주 쓸 쿼리 함수 (getProfile, updateProfile 등)
   - 모든 함수: 서버/클라이언트 양쪽에서 사용 가능

TypeScript 타입 에러 없이 완성해줘.
"

5단계: 기능 구현 패턴

프로젝트별 기능을 추가할 때:

# 새 기능 추가 패턴
claude "
[기능명] 기능을 구현해줘:

요구사항:
- [요구사항 1]
- [요구사항 2]

파일 구조:
- src/components/[기능명]/[컴포넌트].tsx
- src/app/api/[기능명]/route.ts
- src/lib/supabase/[기능명].ts (DB 쿼리)

CLAUDE.md 컨벤션 따르고, 구현 후 typecheck 실행해줘.
"

자주 하는 추가 설정

Tailwind 커스텀 색상 (브랜드 컬러)

claude "
tailwind.config.ts에 브랜드 컬러 추가해줘:
primary: '#1a73e8' (구글 블루)
secondary: '#34a853'

shadcn/ui 컴포넌트에서 이 컬러를 기본으로 사용하도록 globals.css의 CSS 변수도 업데이트해줘.
"

SEO 메타태그 설정

claude "
Next.js 15 Metadata API로 SEO 설정해줘:

1. src/app/layout.tsx - 기본 메타태그
   - title: '[사이트명] | [슬로건]'
   - description: '[사이트 설명]'
   - openGraph 태그
   - twitter card

2. 동적 페이지용 generateMetadata 예시 함수
   (제품 상세 페이지 예시)

3. sitemap.ts 생성 (Next.js 빌트인)
"

에러 처리 레이어

claude "
공통 에러 처리 설정:

1. src/lib/errors.ts
   - AppError 클래스 (message, code, status)
   - 일반 에러 타입 정의

2. src/app/error.tsx
   - Next.js Error Boundary (클라이언트 에러)

3. src/app/not-found.tsx
   - 404 페이지

4. API route 에러 처리 패턴
   - try-catch + NextResponse.json({ error }) 표준화
"

완성 확인 체크리스트

claude "
설정 완료 후 체크리스트 검증해줘:

□ bun run build 성공 (에러 0)
□ TypeScript strict 에러 없음 (bun run typecheck)
□ ESLint 경고 없음 (bun run lint)
□ .env.local.example 파일 존재
□ .env.local이 .gitignore에 포함
□ shadcn/ui 컴포넌트 import 정상
□ Supabase 클라이언트 (서버/클라이언트 분리)
□ Clerk 미들웨어 설정
□ 모바일 반응형 확인 (md 브레이크포인트)

각 항목 확인하고 문제 있으면 수정해줘.
"

자주 겪는 문제

서버 컴포넌트에서 클라이언트 훅 사용 오류

Error: You're importing a component that needs useState. It only works in a Client Component but none of its parents are marked with "use client".
claude "이 에러 수정해줘 — use client 지시어 위치를 정확히 잡아줘"

TypeScript 경로 alias 작동 안 함

claude "tsconfig.json과 next.config.js의 @/* 경로 설정 확인하고 수정해줘"

Supabase RLS 정책 오류

claude "
이 Supabase 쿼리가 'new row violates row-level security policy' 에러를 냄.
RLS 정책 확인하고 수정해줘:
[에러 발생 쿼리]
"

자주 묻는 질문

create-next-app 없이 Claude가 처음부터 만들어줄 수 있나요? 가능하지만 권장하지 않는다. create-next-app이 Webpack, Turbopack, 기본 설정을 가장 안정적으로 구성한다. Claude는 그 위에 추가 설정하는 역할이 효율적이다.

Pages Router 프로젝트에도 동일한 방법이 통하나요? CLAUDE.md에 "App Router 대신 Pages Router 사용" 명시하면 된다. Claude Code는 양쪽을 모두 알고 있다.

한국어 페이지도 잘 만들어주나요? Claude에게 "한국어 UI로 만들어줘"라고 하면 된다. 단, Tailwind 폰트 설정은 따로 필요할 수 있다 (font-family: 'Noto Sans KR', sans-serif).

Supabase 대신 Prisma + Neon을 써도 같은 방법이 통하나요? 통한다. CLAUDE.md의 DB 부분을 변경하면 된다. Claude Code는 Prisma 스키마 생성, 마이그레이션, 쿼리 작성을 잘 처리한다.


관련 가이드


더 깊이 알고 싶다면

Power Prompts 300 — $29 — Next.js 부트스트랩 프롬프트 20개 + 기능별 구현 프롬프트 (인증, 결제, 파일 업로드, 알림 등) + CLAUDE.md 템플릿 3종 포함.

→ Power Prompts 300 구매 — $29

30일 환불 보장. 즉시 다운로드.

AI Disclosure: Claude Code로 작성.

도구와 자료