Claude Code로 스타트업 MVP 1주일 안에 만들기 (2026 실전 가이드)
Claude Code로 MVP를 만드는 핵심은 CLAUDE.md에 프로젝트 맥락을 한 번만 잘 정의하고, 기능 단위로 반복 요청하는 것이다. 솔로 개발자가 1주일 안에 실제 배포 가능한 MVP를 만들 수 있다는 건 과장이 아니다 — 단, 올바른 설정과 워크플로우를 따를 때의 이야기다. 이 가이드는 아이디어 구체화부터 Vercel 배포까지 7일 타임라인으로 정리한다.
왜 Claude Code인가? (다른 도구와의 차이)
Claude Code는 단순한 코드 자동완성이 아니다:
- 전체 컨텍스트 이해: 프로젝트 파일 구조를 직접 읽고 일관된 코드를 생성
- 반복 작업 자동화: 마이그레이션, 스키마 변경, 타입 생성 등을 대화로 처리
- 오류 루프 단축: 에러 메시지를 붙여넣으면 원인 분석 + 수정까지 한 번에
- 문서 → 코드 변환: 기획 문서를 읽고 실제 코드로 구현
Cursor와 비교하면: Cursor는 파일 편집 중심, Claude Code는 프로젝트 수준의 작업 실행에 강하다.
1일차: 아이디어 → 기술 스택 결정
먼저 Claude Code에게 검증을 맡겨라
아이디어: [한 줄 설명]
다음을 분석해줘:
1. 이 아이디어의 MVP 범위 (3개 핵심 기능만)
2. Next.js + Vercel 스택으로 1주일 안에 가능한지
3. 빠른 구현을 위한 기술 스택 추천 (ORM, 인증, DB)
4. 가장 큰 기술적 리스크 1가지
권장 MVP 스택 (2026 기준)
프론트엔드: Next.js 15 App Router
스타일링: Tailwind CSS + shadcn/ui
인증: Clerk (소셜 로그인 10분 설정)
DB: Neon (Postgres Serverless) + Drizzle ORM
배포: Vercel (프리 티어 충분)
결제 (선택): Stripe 또는 Gumroad
이 스택을 선택하는 이유: 모두 Claude Code가 깊이 학습한 도구들이다. 코드 품질과 오류율이 낮다.
1일차 오후: 프로젝트 세팅
프로젝트 초기화
npx create-next-app@latest my-mvp --typescript --tailwind --app
cd my-mvp
npx shadcn@latest init
CLAUDE.md 작성 (가장 중요)
프로젝트 루트에 CLAUDE.md를 만들어라. 이게 이번 주 내내 Claude Code의 두뇌가 된다:
# [프로젝트명] — Claude Code 가이드
## 프로젝트 개요
[한 문단: 무엇을 만드는지, 타겟 사용자, 핵심 가치]
## 기술 스택
- Next.js 15 App Router
- TypeScript (strict mode)
- Tailwind + shadcn/ui
- Drizzle ORM + Neon (Postgres)
- Clerk (인증)
## 개발 명령어
```bash
bun run dev # 개발 서버
bun run typecheck # 타입 체크 (작업 완료 전 항상 실행)
bun run db:generate # Drizzle 마이그레이션 생성
bun run db:migrate # 마이그레이션 적용
bun run build # 프로덕션 빌드 테스트
핵심 기능 (MVP 범위)
- [기능 1]: [한 줄 설명]
- [기능 2]: [한 줄 설명]
- [기능 3]: [한 줄 설명]
파일 구조 규칙
- 페이지: app/[route]/page.tsx
- 서버 액션: app/actions/[feature].ts
- DB 스키마: lib/db/schema.ts
- 컴포넌트: components/[feature]/
코딩 규칙
- 서버 컴포넌트를 기본으로 사용
- 상태 관리가 필요한 경우만 'use client'
- 절대 any 타입 사용 금지
- console.log 프로덕션 코드에 남기지 말 것
- 새 DB 테이블 추가 시: schema.ts 수정 → db:generate → db:migrate
현재 작업 중인 기능
[매일 업데이트: 오늘 만들 기능 한 줄]
---
## 2일차: DB 스키마 + 인증
### DB 스키마 설계
Claude Code에게 요청:
우리 프로젝트의 DB 스키마를 Drizzle ORM으로 작성해줘.
핵심 엔티티:
- 사용자 (Clerk userId 연동)
- [주요 엔티티 1]: [필드 설명]
- [주요 엔티티 2]: [필드 설명]
규칙:
- lib/db/schema.ts에 작성
- createdAt, updatedAt 타임스탬프 모든 테이블에 포함
- 관계 설정 (relations() 사용)
### 생성된 스키마 예시 (SaaS 도구 MVP)
```typescript
// lib/db/schema.ts
import { pgTable, text, timestamp, integer, boolean } from "drizzle-orm/pg-core";
import { relations } from "drizzle-orm";
export const users = pgTable("users", {
id: text("id").primaryKey(), // Clerk userId
email: text("email").notNull().unique(),
name: text("name"),
plan: text("plan").notNull().default("free"), // free | pro
createdAt: timestamp("created_at").defaultNow().notNull(),
updatedAt: timestamp("updated_at").defaultNow().notNull(),
});
export const projects = pgTable("projects", {
id: text("id").primaryKey().$defaultFn(() => crypto.randomUUID()),
userId: text("user_id").notNull().references(() => users.id, { onDelete: "cascade" }),
name: text("name").notNull(),
description: text("description"),
isPublic: boolean("is_public").default(false),
createdAt: timestamp("created_at").defaultNow().notNull(),
updatedAt: timestamp("updated_at").defaultNow().notNull(),
});
export const usersRelations = relations(users, ({ many }) => ({
projects: many(projects),
}));
export const projectsRelations = relations(projects, ({ one }) => ({
user: one(users, { fields: [projects.userId], references: [users.id] }),
}));
Clerk 인증 10분 설정
npm install @clerk/nextjs
// middleware.ts
import { clerkMiddleware, createRouteMatcher } from "@clerk/nextjs/server";
const isProtectedRoute = createRouteMatcher(["/dashboard(.*)", "/api/protected(.*)"]);
export default clerkMiddleware((auth, req) => {
if (isProtectedRoute(req)) auth().protect();
});
3-4일차: 핵심 기능 구현
기능별 개발 루프
각 기능을 이 순서로 요청:
[기능명]을 구현해줘.
사용자 스토리: "[사용자]로서 [행동]을 하고 싶다, 왜냐면 [목적]이기 때문이다"
요구사항:
- [구체적 요구사항 1]
- [구체적 요구사항 2]
만들어야 할 것:
1. DB 쿼리 함수 (lib/db/queries/[feature].ts)
2. 서버 액션 (app/actions/[feature].ts)
3. UI 컴포넌트 (components/[feature]/)
4. 페이지 연결 (app/dashboard/[feature]/page.tsx)
실제로 잘 작동하는 요청 패턴
# 나쁜 요청
"프로젝트 관리 기능 만들어줘"
# 좋은 요청
"projects 테이블에서 현재 로그인한 사용자의 프로젝트를 가져와서
/dashboard/projects 페이지에 카드 그리드로 보여줘.
각 카드에는 프로젝트 이름, 설명, 생성일, 편집 링크가 있어야 해.
빈 상태(empty state)도 처리해줘 — '첫 프로젝트를 만들어보세요' 메시지 + CTA 버튼."
오류가 나면 바로 붙여넣기
이 오류가 났어:
[에러 메시지 전체 복붙]
파일: [파일 경로]
상황: [어떤 작업 중이었는지]
Claude Code는 오류 메시지를 읽고 원인을 찾아 수정안을 제시한다. 직접 디버깅하지 마라.
5일차: UI 폴리시
shadcn/ui 컴포넌트 활용
# 필요한 컴포넌트 추가
npx shadcn@latest add button card dialog form input table toast
Claude Code에게 UI 개선 요청:
/dashboard/projects 페이지의 UI를 개선해줘:
1. 로딩 상태: Skeleton 컴포넌트로 카드 플레이스홀더
2. 오류 상태: 재시도 버튼이 있는 에러 메시지
3. 프로젝트 생성: Dialog로 인라인 폼 (페이지 이동 없이)
4. 삭제 확인: AlertDialog로 실수 방지
5. 반응형: 모바일에서 1열, 태블릿 2열, 데스크탑 3열
성능 체크리스트
Claude Code야, 현재 /dashboard/projects 페이지를 검토해줘:
- 불필요한 클라이언트 컴포넌트가 있는지
- N+1 쿼리 문제가 있는지
- 이미지 최적화가 필요한지
- Suspense 경계를 추가해야 하는지
6일차: 테스트 + 버그 수정
종합 검토 요청
프로젝트 전체를 검토하고 배포 전 체크리스트를 만들어줘:
1. 보안: 각 API route/서버 액션의 인증 체크 여부
2. 에러 핸들링: try/catch 누락된 부분
3. 타입 안전성: any 타입 사용 여부
4. DB: 미적용 마이그레이션 여부
5. 환경변수: .env.local에만 있고 코드에 하드코딩된 키 없는지
Edge case 테스트
Claude Code에게 직접 테스트하게 할 수 없지만, 테스트 케이스 작성은 가능:
현재 프로젝트 생성 기능의 엣지 케이스를 나열하고
각각 어떻게 처리하고 있는지 코드에서 확인해줘:
- 같은 이름의 프로젝트 중복
- 빈 이름 제출
- 동시 다중 제출 (form double-submit)
- DB 오류 시 사용자 피드백
7일차: 배포
Vercel 배포 전 확인
# 로컬에서 프로덕션 빌드 테스트
bun run build
# 타입 에러 확인
bun run typecheck
# 환경변수 목록 확인
grep -r "process.env" . --include="*.ts" --include="*.tsx" | grep -v node_modules
Vercel 환경변수 설정
필수 환경변수:
- NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY
- CLERK_SECRET_KEY
- DATABASE_URL (Neon 연결 문자열)
- NEXT_PUBLIC_APP_URL (배포 후 Vercel URL)
배포 후 즉시 확인
# 배포 완료 후 Claude Code에게 요청
"배포된 URL에서 다음을 확인해줘:
1. 로그인/로그아웃 플로우
2. 핵심 기능 3가지 smoke test
3. 모바일 뷰 레이아웃"
실제 1주일 타임라인
| 날짜 | 목표 | Claude Code 사용 비율 |
|---|---|---|
| 1일차 (월) | 스택 결정 + 프로젝트 세팅 + CLAUDE.md | 60% |
| 2일차 (화) | DB 스키마 + 인증 + 기본 레이아웃 | 80% |
| 3일차 (수) | 핵심 기능 #1 + #2 구현 | 90% |
| 4일차 (목) | 핵심 기능 #3 + 연동 | 90% |
| 5일차 (금) | UI 폴리시 + 반응형 | 70% |
| 6일차 (토) | 버그 수정 + 엣지 케이스 | 80% |
| 7일차 (일) | 배포 + 도메인 연결 + 최종 확인 | 50% |
자주 하는 실수
1. CLAUDE.md 없이 시작
CLAUDE.md 없이 시작하면 매번 프로젝트 컨텍스트를 반복 설명해야 한다. 프로젝트를 만들기 전에 CLAUDE.md부터 써라.
2. 너무 큰 기능을 한 번에 요청
❌ "대시보드 전체를 만들어줘"
✅ "대시보드의 사이드바 네비게이션만 만들어줘 — 링크 5개, 현재 경로 하이라이트, 모바일 햄버거 메뉴"
3. 생성된 코드를 검토 없이 사용
Claude Code가 생성한 코드도 반드시 검토해야 한다. 특히:
- 인증 체크 누락 여부
- SQL 인젝션 가능성 (ORM 사용 시 낮지만 raw query 주의)
- API 키 노출 여부
4. 빌드 없이 배포
# 항상 로컬에서 먼저
bun run build && bun run typecheck
# 통과 후에만 vercel --prod
비용 현실
1주일 MVP 개발 기준 Claude Code 비용:
- Claude.ai Pro 구독: $20/월 (무제한 Claude Code 포함)
- API 직접 사용 시: 하루 4-6시간 집중 개발 기준 약 $3-8/일
ROI 계산: 시니어 프리랜서 주 1인 개발 비용 (한국 기준 약 150-300만원) → Claude Code로 90% 이상 대체 가능.
자주 묻는 질문
Q: 완전 혼자 개발하는 비개발자도 가능한가요? 기본적인 터미널 사용법, HTML/CSS 이해, 코드 읽기 능력이 있으면 가능하다. 완전 비개발자는 2주로 잡는 게 현실적이다.
Q: Next.js가 아닌 다른 프레임워크도 되나요? 가능하다. SvelteKit, Nuxt, Django, FastAPI 모두 지원한다. 단, Next.js + Vercel 조합이 Claude Code의 학습 데이터에 가장 많이 포함되어 있어 품질이 높다.
Q: MVP 이후 팀으로 확장할 때 문제가 없나요?
CLAUDE.md에 코딩 규칙을 명확히 정의하고, TypeScript strict mode를 쓰면 팀 온보딩이 어렵지 않다. 처음부터 any 타입을 쓰지 않는 게 핵심이다.
Q: 얼마나 복잡한 앱까지 만들 수 있나요? 1주일 MVP는 3-5개 핵심 기능이 현실적이다. 월 $100-200 매출을 목표로 하는 마이크로 SaaS에는 충분하다. 대규모 엔터프라이즈 시스템은 아키텍처 설계를 더 신중하게 해야 한다.
관련 가이드
- Claude Code 완벽 가이드 (한국어) — Claude Code 전체 기능 가이드
- Claude API로 사이드 프로젝트 만들기 — API 연동 심화
- Claude Code for Next.js Frontend — Next.js 심화 (영어)
더 깊게 배우기
Power Prompts 300: Claude Code 생산성 패턴 — $29 — MVP 개발에 최적화된 300개 프롬프트 패턴. CLAUDE.md 템플릿, 기능별 요청 패턴, 오류 처리 공식 포함.
30일 환불 보장. 즉시 다운로드.