OPEN HYPER STEP
← 목록으로 (stack-analysis)
STACK-ANALYSIS · 70 / 90
stack-analysis
CHAPTER 70 / 90
읽기 약 2
FUNCTION

SaaS 종합: 완성된 SaaS 보일러플레이트


핵심 개념

create-saas-app·SST·Shadcn — 1주일 만에 SaaS MVP 출시.

본문

검증된 SaaS 보일러플레이트

📋 코드 (16줄)
1. SaaS Starter Kit (Vercel)
   - Next.js + Postgres + Stripe
   - 무료 + 오픈소스
   github.com/vercel/nextjs-subscription-payments

2. T3 Stack + Stripe
   - tRPC + Prisma + NextAuth
   - 풀스택 TS 안전

3. Saas-UI
   - Chakra 기반 컴포넌트
   - 대시보드·테이블·차트

4. Bedrock (유료 $300+)
   - 검증된 풀 SaaS
   - 시간 절약 큼

추천 스택 (1인 개발자)

📋 코드 (32줄)
[Frontend]
- Next.js 16 App Router
- Tailwind + shadcn/ui
- TanStack Query + Zustand
- React Hook Form + Zod

[Backend]
- Next.js API Routes (또는 별도 Express)
- Prisma + Supabase Postgres
- BullMQ + Upstash Redis

[Auth]
- Clerk ($25/mo) 또는 Lucia (무료)

[Payments]
- Stripe (subscription·portal)

[Email]
- Resend (트랜잭션)
- React Email (템플릿)

[Search]
- Meilisearch (셀프호스트) 또는 PostgreSQL FTS

[Storage]
- Cloudflare R2 (S3 호환·무료 송신)
- 또는 Vercel Blob

[Monitor]
- Sentry (errors)
- PostHog (analytics)
- Vercel Analytics (web vitals)

폴더 구조 (production-ready)

📋 코드 (38줄)
my-saas/
├── app/
│   ├── (marketing)/        # 공개
│   │   ├── page.tsx        # 랜딩
│   │   ├── pricing/
│   │   └── blog/
│   ├── (auth)/             # 인증
│   │   ├── sign-in/
│   │   └── sign-up/
│   ├── (app)/              # 앱 (인증 필요)
│   │   ├── layout.tsx      # 사이드바
│   │   ├── dashboard/
│   │   ├── projects/
│   │   ├── settings/
│   │   ├── billing/
│   │   └── team/
│   ├── api/
│   │   ├── stripe/
│   │   ├── webhooks/
│   │   └── trpc/[trpc]/
│   └── layout.tsx
├── components/
│   ├── ui/                 # shadcn/ui
│   ├── marketing/
│   ├── dashboard/
│   └── shared/
├── lib/
│   ├── auth.ts
│   ├── stripe.ts
│   ├── db.ts
│   └── utils.ts
├── server/
│   ├── api/                # tRPC routers
│   ├── services/
│   └── workers/
├── prisma/
│   └── schema.prisma
└── public/

핵심 schema.prisma

PRISMA📋 코드 (79줄)
model Tenant {
  id                   String    @id @default(cuid())
  name                 String
  slug                 String    @unique
  plan                 String    @default("free")
  stripeCustomerId     String?   @unique
  stripeSubscriptionId String?   @unique
  subscriptionStatus   String?
  currentPeriodEnd     DateTime?

  members              TenantMember[]
  projects             Project[]
  invitations          Invitation[]
  auditLogs            AuditLog[]

  createdAt DateTime @default(now())
}

model User {
  id            String   @id @default(cuid())
  email         String   @unique
  name          String?
  avatarUrl     String?
  emailVerified DateTime?

  tenants       TenantMember[]
  pushSubs      PushSubscription[]
  createdAt     DateTime @default(now())
}

model TenantMember {
  tenantId  String
  userId    String
  role      String   @default("member")
  joinedAt  DateTime @default(now())

  tenant    Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade)
  user      User   @relation(fields: [userId], references: [id], onDelete: Cascade)

  @@id([tenantId, userId])
  @@index([userId])
}

model Project {
  id        String   @id @default(cuid())
  tenantId  String
  name      String
  // ...

  tenant    Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade)

  @@index([tenantId, createdAt])
}

model Invitation {
  id        String    @id @default(cuid())
  tenantId  String
  email     String
  role      String    @default("member")
  token     String    @unique
  expiresAt DateTime
  acceptedAt DateTime?

  @@index([tenantId, email])
}

model AuditLog {
  id           String   @id @default(uuid())
  tenantId     String
  actorId      String?
  action       String
  resourceType String
  resourceId   String?
  changes      Json?
  ip           String?
  createdAt    DateTime @default(now())

  @@index([tenantId, createdAt(sort: Desc)])
}

출시 체크리스트

📋 코드 (31줄)
[기능]
☐ 회원가입 + 이메일 인증
☐ 워크스페이스 생성
☐ 팀 초대 (이메일)
☐ Stripe 구독 + Portal
☐ 핵심 기능 1개 이상
☐ 알림 시스템
☐ 검색 (기본)
☐ 설정 페이지
☐ 빌링 페이지

[페이지]
☐ 랜딩 + 가격
☐ FAQ + 도움말
☐ 약관 + 개인정보처리방침
☐ 연락처

[인프라]
☐ Vercel 배포
☐ Supabase Postgres
☐ Stripe webhook
☐ 도메인 + SSL
☐ Sentry 통합
☐ 백업 자동화

[마케팅]
☐ Twitter·LinkedIn 계정
☐ Product Hunt 페이지
☐ Indie Hackers 글
☐ 블로그 첫 글 3개
☐ SEO 메타데이터

1주 출시 일정 (1인 개발자)

📋 코드 (11줄)
Day 1: 셋업 (Next.js + DB + Auth)
Day 2: 핵심 기능 1개
Day 3: 결제 연동 (Stripe)
Day 4: 팀 초대 + 알림
Day 5: 랜딩 페이지 + 가격
Day 6: 배포 + 도메인
Day 7: Product Hunt + Twitter 런칭


→ 1주 후 첫 사용자 받기 시작
→ 피드백 루프 시작

다음 모듈

CH.71~80 "이커머스 해부".


AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude

무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6

내 프로젝트의 SaaS 보일러플레이트 부분을 분석해서
실전 분석 + 개선 우선순위를 알려줘.
ChatGPT

무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro

SaaS 보일러플레이트 관련 실제 서비스 5개를
비교 분석해서 패턴 추출를 알려줘.
Gemini

무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro

내 코드베이스에서 SaaS 보일러플레이트
최적화 가능 위치를 보고해줘.
Grok

무료: Grok 4.1 / SuperGrok $30/mo

2026년 한국 풀스택 시장의
SaaS 보일러플레이트 트렌드를 솔직히 알려줘.

⭐ 이것만 기억하세요
SaaS 종합: 완성된 SaaS 보일러플레이트 이 3가지만 확실히 잡으세요
1.SaaS 보일러플레이트 = 1주 만에 출시 가능 — Vercel + Supabase + Stripe + Clerk
2.풀 폴더 구조 + Prisma 스키마 = 신규 프로젝트 30분 셋업
3.출시 체크리스트로 누락 방지 — 기능·페이지·인프라·마케팅 4영역


공유하기
진행도 70 / 90