📐 选型原则
🎯 技术选型 5 条铁律
- 熟悉度 > 新鲜感 — 你最熟的栈效率最高。"学新框架"不是 MVP 阶段该做的事
- 生态 > 性能 — 有现成解决方案的栈,比"快 10%"但啥都要自己写的栈好
- 托管 > 自建 — 用 Supabase 别自建 PostgreSQL,用 Vercel 别自建 K8s
- 单体先于微服务 — 用户 < 10 万不需要微服务。单体 + 模块化足够
- 类型安全 > 灵活性 — TypeScript + tRPC/Prisma,类型错误在编译时抓比运行时好
⚠️ 最常见的错误:花 2 周选技术栈。超过 1 天就是浪费。选你熟悉的,或者选本页推荐的默认栈,然后开始写代码。
🧑💻 独立开发者 SaaS 栈
一个人做产品,效率是第一优先级。每个选择都要"省时间"。
⭐ 推荐默认栈
Next.js + Supabase + Stripe
┌──────────────────────────────────────────────┐
│ 独立开发者 SaaS 栈 │
├──────────────────────────────────────────────┤
│ │
│ 前端:Next.js 14 (App Router) │
│ ├─ TypeScript (strict) │
│ ├─ Tailwind CSS + shadcn/ui │
│ ├─ Zustand (简单状态) │
│ └─ TanStack Query (服务端状态) │
│ │
│ 后端:Next.js API Routes │
│ ├─ tRPC (类型安全 API) │
│ ├─ Zod (验证) │
│ └─ NextAuth.js / Supabase Auth │
│ │
│ 数据库:Supabase (托管 PostgreSQL) │
│ ├─ Drizzle ORM │
│ ├─ Row Level Security │
│ └─ Realtime (可选) │
│ │
│ 支付:Stripe │
│ ├─ Checkout Session │
│ └─ Webhook │
│ │
│ 部署:Vercel │
│ ├─ 自动部署 (GitHub → Vercel) │
│ ├─ Edge Functions (可选) │
│ └─ Analytics (内置) │
│ │
│ 监控:Sentry + PostHog │
│ 邮件:Resend │
│ 域名:Cloudflare │
│ │
│ 💰 月成本:$0-50 (MVP 阶段) │
└──────────────────────────────────────────────┘
为什么这样选
| 选择 |
原因 |
替代 |
| Next.js |
全栈一体,Vercel 生态,SSR/SSG 都行 |
Remix, SvelteKit |
| Supabase |
Auth + DB + 存储 + 实时,一个服务搞定 |
Neon + Auth.js |
| Drizzle |
轻量、类型安全、SQL-first |
Prisma |
| shadcn/ui |
复制粘贴,不锁定,Tailwind 原生 |
Ant Design, MUI |
| Stripe |
行业标准,生态最大,文档最好 |
LemonSqueezy, Paddle |
| Vercel |
零配置部署 Next.js,免费层慷慨 |
Railway, Fly.io |
👥 小团队 SaaS 栈(3-10 人)
团队协作需要更多考虑:代码规范、CI/CD、设计系统、多环境。
Next.js + PostgreSQL + Redis + S3
┌──────────────────────────────────────────────┐
│ 小团队 SaaS 栈 │
├──────────────────────────────────────────────┤
│ 前端:Next.js 14 (App Router) │
│ ├─ Design System (shadcn/ui 定制) │
│ ├─ Storybook (组件文档) │
│ └─ Playwright (E2E 测试) │
│ │
│ 后端: │
│ ├─ Hono (API 层,独立于 Next.js) │
│ ├─ tRPC (内部通信) │
│ ├─ BullMQ + Redis (异步任务) │
│ └─ Temporal/Inngest (工作流) │
│ │
│ 数据库: │
│ ├─ PostgreSQL (Neon/Railway 托管) │
│ ├─ Drizzle ORM │
│ ├─ Redis (Upstash) 缓存 │
│ └─ 多租户:Row-Level Security │
│ │
│ 存储: │
│ ├─ S3/R2 (文件) │
│ └─ Meilisearch (搜索) │
│ │
│ 基础设施: │
│ ├─ Docker Compose (本地开发) │
│ ├─ GitHub Actions (CI/CD) │
│ ├─ Vercel / Fly.io (部署) │
│ └─ OpenTelemetry + Grafana (监控) │
│ │
│ 💰 月成本:$100-500 │
└──────────────────────────────────────────────┘
🤖 AI SaaS 栈
AI 产品有特殊需求:LLM 调用、向量搜索、流式输出、Token 成本控制。
⭐ AI SaaS 推荐栈
Next.js + Python Workers + Vector DB
┌──────────────────────────────────────────────┐
│ AI SaaS 栈 │
├──────────────────────────────────────────────┤
│ 前端:Next.js 14 │
│ ├─ AI SDK (Vercel) — 流式 UI │
│ ├─ React Server Components │
│ └─ shadcn/ui + Tailwind │
│ │
│ AI 层: │
│ ├─ OpenAI API / Anthropic Claude │
│ ├─ LiteLLM (多 Provider 路由/Failover) │
│ ├─ LangChain / LlamaIndex (RAG Pipeline) │
│ └─ Python Workers (Heavy AI 任务) │
│ │
│ 向量存储: │
│ ├─ LanceDB (嵌入式,免费) │
│ ├─ Pinecone (托管,规模大) │
│ └─ pgvector (Supabase 自带) │
│ │
│ 数据层: │
│ ├─ Supabase PostgreSQL + pgvector │
│ ├─ Redis (缓存 + 限流) │
│ └─ S3/R2 (文档/文件存储) │
│ │
│ 异步任务: │
│ ├─ Inngest (AI 工作流) │
│ ├─ Trigger.dev (后台 AI 任务) │
│ └─ QStash (轻量消息队列) │
│ │
│ 监控: │
│ ├─ Langfuse (LLM 可观测性) │
│ ├─ Helicone (LLM 成本监控) │
│ └─ Sentry (错误追踪) │
│ │
│ 💰 月成本:$50-200 (含 LLM API 费用) │
└──────────────────────────────────────────────┘
AI SaaS 的关键决策
| 决策 |
推荐选择 |
原因 |
| LLM Provider |
OpenAI + Claude 双 Provider |
Failover + 不同任务选不同模型 |
| 流式输出 |
Vercel AI SDK |
Next.js 集成最好,useChat/useCompletion |
| 向量存储 |
LanceDB (MVP) → Pinecone (规模) |
嵌入式零运维,升级时再迁移 |
| RAG 框架 |
自己写 > LangChain |
简单 RAG 不需要框架,复杂 RAG 框架也帮不了 |
| AI 任务队列 |
Inngest / Trigger.dev |
内置重试、延迟、步骤函数 |
🔄 实时协作栈
Next.js + CRDT + WebSocket
┌──────────────────────────────────────────────┐
│ 实时协作栈 │
├──────────────────────────────────────────────┤
│ 前端:Next.js + React │
│ ├─ Yjs (CRDT 引擎) │
│ ├─ Lexical / Tiptap (富文本编辑器) │
│ └─ Liveblocks (托管协作) 或自建 │
│ │
│ 实时层: │
│ ├─ WebSocket (Hono + Durable Objects) │
│ ├─ PartyKit (简化 WebSocket) │
│ ├─ Ably / Pusher (托管实时) │
│ └─ Supabase Realtime (PostgreSQL Changes) │
│ │
│ 数据: │
│ ├─ PostgreSQL (持久化) │
│ ├─ Y.js Document (CRDT 状态) │
│ └─ Redis (在线状态、房间管理) │
│ │
│ 💰 月成本:$100-500 │
└──────────────────────────────────────────────┘
🏪 多租户 Marketplace 栈
Next.js + PostgreSQL + Stripe Connect
┌──────────────────────────────────────────────┐
│ Marketplace 栈 │
├──────────────────────────────────────────────┤
│ 多租户架构: │
│ ├─ Schema-per-tenant (租户少/隔离强) │
│ ├─ Row-Level Security (租户多/成本敏感) │
│ └─ 详见 multi-tenant.html │
│ │
│ 支付: │
│ ├─ Stripe Connect (平台分账) │
│ ├─ 支持卖家入驻和提现 │
│ └─ Stripe Billing (订阅管理) │
│ │
│ 搜索: │
│ ├─ Meilisearch / Typesense (商品搜索) │
│ └─ Algolia (预算充足) │
│ │
│ 通知: │
│ ├─ SendGrid / Resend (邮件) │
│ ├─ Novu (多渠道通知) │
│ └─ Pusher (实时通知) │
│ │
│ 💰 月成本:$200-1000 │
└──────────────────────────────────────────────┘
📝 内容/博客站栈
Astro / Next.js SSG + CMS
┌──────────────────────────────────────────────┐
│ 内容站栈 │
├──────────────────────────────────────────────┤
│ 框架选择: │
│ ├─ 纯内容站:Astro (最轻量) │
│ ├─ 内容+SaaS:Next.js SSG (统一栈) │
│ └─ 快速上线:Framer (零代码) │
│ │
│ CMS: │
│ ├─ MDX 文件 (开发者友好) │
│ ├─ Contentlayer / Velite (类型安全) │
│ ├─ Sanity / Strapi (非技术编辑) │
│ └─ Notion API (最简单的 CMS) │
│ │
│ 部署: │
│ ├─ Cloudflare Pages (免费,全球 CDN) │
│ ├─ Vercel (Next.js 最佳) │
│ └─ Netlify (简单站点) │
│ │
│ SEO: │
│ ├─ Next SEO / Astro SEO │
│ ├─ sitemap + robots.txt │
│ └─ Open Graph / 结构化数据 │
│ │
│ 分析: │
│ ├─ Umami (自托管,隐私友好) │
│ ├─ Plausible (托管,轻量) │
│ └─ PostHog (功能最全) │
│ │
│ 💰 月成本:$0-20 │
└──────────────────────────────────────────────┘
Retool / Refine + 内部数据库
┌──────────────────────────────────────────────┐
│ 内部工具栈 │
├──────────────────────────────────────────────┤
│ 方案一:Retool(最快) │
│ ├─ 拖拽式 UI + SQL/REST 查询 │
│ ├─ 内置 Auth + 审计 │
│ └─ $10/用户/月起 │
│ │
│ 方案二:Refine(更灵活) │
│ ├─ React 框架,面向管理面板 │
│ ├─ 开源,自托管 │
│ ├─ 数据提供者模式(接任何后端) │
│ └─ Ant Design / MUI 集成 │
│ │
│ 方案三:Appsmith / ToolJet │
│ ├─ 开源 Retool 替代 │
│ └─ 自托管,免费 │
│ │
│ 💰 月成本:$0-100 │
└──────────────────────────────────────────────┘
📊 分层详解:每层的选择
前端框架
| 框架 |
适合场景 |
TypeScript |
部署 |
生态 |
| Next.js 推荐 |
SaaS 全栈 |
⭐ |
Vercel |
最大 |
| Nuxt |
Vue 生态 SaaS |
⭐ |
Vercel/自托管 |
大 |
| SvelteKit |
轻量 SaaS |
⭐ |
Vercel/自托管 |
中等 |
| Astro |
内容站/博客 |
⭐ |
任何 CDN |
中等 |
| Remix |
复杂交互 SaaS |
⭐ |
任何 Node |
中等 |
后端方案
| 方案 |
适合场景 |
语言 |
优势 |
劣势 |
| Next.js API Routes |
简单 CRUD |
TypeScript |
全栈一体,零配置 |
复杂逻辑受限 |
| Hono |
高性能 API |
TypeScript |
轻量,Edge 友好 |
生态较小 |
| FastAPI |
AI/ML 后端 |
Python |
异步,自动文档 |
部署稍复杂 |
| Supabase |
BaaS(零后端) |
SQL + JS |
Auth+DB+存储一体 |
复杂查询受限 |
| Elysia (Bun) |
极致性能 |
TypeScript |
Bun 速度快 |
生态新,不稳定 |
数据库
| 选择 |
适合场景 |
托管 |
成本 |
| Supabase PostgreSQL 推荐 |
通用 SaaS |
免费-25/月 |
⭐ |
| Neon PostgreSQL |
Serverless SaaS |
免费-19/月 |
⭐ |
| PlanetScale MySQL |
分支开发 |
$39/月起 |
⚠️ |
| SQLite (Turso) |
边缘计算 |
免费-29/月 |
⭐ |
| 自建 PostgreSQL |
大规模/敏感数据 |
VPS $5/月起 |
运维成本高 |
ORM
| ORM |
风格 |
TypeScript |
性能 |
推荐场景 |
| Drizzle 推荐 |
SQL-first |
⭐⭐⭐ |
⭐⭐⭐⭐⭐ |
大多数 SaaS |
| Prisma |
Schema-first |
⭐⭐⭐ |
⭐⭐⭐ |
快速原型 |
| Kysely |
Query builder |
⭐⭐⭐ |
⭐⭐⭐⭐⭐ |
复杂查询 |
💰 成本估算
| 服务 |
免费层 |
MVP 月成本 |
规模月成本 |
| Vercel (托管) |
✅ 个人项目免费 |
$0 |
$20/人 |
| Supabase (数据库+Auth) |
✅ 500MB + 50K Auth |
$0 |
$25 |
| Stripe (支付) |
✅ 无月费 |
2.9% + $0.30/笔 |
同左 |
| Sentry (错误追踪) |
✅ 5K 错误/月 |
$0 |
$26 |
| PostHog (分析) |
✅ 1M 事件/月 |
$0 |
$0-50 |
| Resend (邮件) |
✅ 100 封/天 |
$0 |
$20 |
| Cloudflare (DNS) |
✅ 免费 |
$0 |
$0 |
| 域名 |
— |
$10-15/年 |
同左 |
| Redis (Upstash) |
✅ 10K 命令/天 |
$0 |
$10-30 |
| 合计 |
|
$0-10/月 |
$100-300/月 |
💡 2025 年最惊人的事:一个完整的 SaaS 产品,MVP 阶段可以完全免费运行。Vercel + Supabase + PostHog + Sentry + Cloudflare 免费层加起来,够支撑到每月几千用户。
🌳 决策树
🔍 快速选栈决策树
你的产品是什么类型?
├─ 通用 SaaS(CRUD + 认证 + 支付)
│ └─ → Next.js + Supabase + Stripe 栈
│
├─ AI 产品(LLM + RAG + 流式)
│ └─ → AI SaaS 栈(+ LiteLLM + pgvector)
│
├─ 实时协作(多人编辑)
│ └─ → 实时协作栈(+ Yjs + PartyKit)
│
├─ Marketplace(卖家入驻)
│ └─ → Marketplace 栈(+ Stripe Connect)
│
├─ 内容站/博客
│ └─ → 内容站栈(Astro + MDX)
│
├─ 内部工具
│ └─ → Retool 或 Refine
│
└─ 其他 / 不确定
└─ → 默认用独立开发者栈
──它是最通用的选择
你熟悉的语言是什么?
├─ TypeScript → Next.js + tRPC + Drizzle
├─ Python → FastAPI + SQLAlchemy + Celery
├─ Go → Gin + sqlc + 自建
├─ Ruby → Rails(最快出活)
└─ 不确定 → TypeScript(生态最大)
🎯 还是不确定?用这个一键决策
如果你什么都不确定,就用这个:
# 一键创建 SaaS 项目
npx create-next-app@latest my-saas --typescript --tailwind --app --src-dir
cd my-saas
npx shadcn@latest init
npm install @supabase/supabase-js @supabase/ssr drizzle-orm
npm install stripe @stripe/stripe-js
npm install zod @tanstack/react-query zustand
npm install resend
npm install @sentry/nextjs posthog-js
# 就这样。开始写业务逻辑。
🔗 相关章节