nextjs/saas-starter

Next.js SaaS Starter

用一个最小可运行模板,拆解 SaaS 的登录、团队、数据库和支付

难度
中等
适合
入门 / 进阶
主要语言
TypeScript
GitHub
16.0k
许可证
MIT
快照日期
2026年8月9日

先判断要不要学

这个项目值得拆什么?

Next.js SaaS Starter 是一个有意保持精简的 SaaS 起步项目,将营销页、价格页、邮箱密码登录、团队与角色、活动日志、Stripe 订阅和 Postgres 数据库放在一个 Next.js 仓库里。它适合已经会做页面、正在学如何连成完整 SaaS 链路的学习者。

  1. 01

    登录、授权、数据访问、支付回调和仪表盘均有具体代码入口,可以端到端跟踪。

  2. 02

    以单体 Next.js 应用呈现常见 SaaS 边界,比大型多服务模板更容易建立整体认知。

  3. 03

    README 提供数据库初始化、测试账号、Stripe CLI 回调与生产配置清单。

可以学什么

不只是看代码,而是找到产品的骨架

  • 学产品结构
  • 学数据库
  • 学用户登录
  • 学支付
  • 学界面
  • 学部署
01

会话与双层路由保护

对照全局 middleware 和局部 Server Action 校验,理解页面可见性与服务端授权为什么需要分开。

middleware.ts · lib/auth/middleware.ts · lib/auth/session.ts · app/(login)/actions.ts
02

支付系统的异步真相

跟踪从价格页到 Checkout,再由 webhook 更新订阅状态的过程,避免把前端跳转误当成支付成功凭据。

app/(dashboard)/pricing/page.tsx · app/api/stripe/checkout/route.ts · app/api/stripe/webhook/route.ts · lib/payments/stripe.ts
03

从 Schema 到产品权限

从 users、teams、teamMembers 和 activityLogs 的关系出发,理解数据模型如何支撑 Owner/Member 角色和审计记录。

lib/db/schema.ts · lib/db/queries.ts · app/(dashboard)/dashboard/activity/page.tsx

三段学习路径

从理解、修改到做出你的版本

0130 分钟先跑通

建立完整 SaaS 功能地图

  1. 阅读 README 的 Features 和 Tech Stack
  2. 在 lib/db/schema.ts 标注用户、团队、订阅关系
  3. 沿定价页追到 checkout 和 webhook 路由

完成标志:能用一张图说清登录用户如何成为付费团队。

022 小时动手改

本地运行并完成一个可验证的业务修改

  1. 按 README 初始化数据库并登录测试账号
  2. 在仪表盘增加一个团队属性
  3. 通过 Drizzle 迁移和查询展示该字段
  4. 验证未登录访问仍被拦截

完成标志:完成一次从数据库到受保护页面的端到端改动。

031 天做变体

改造成一个细分 SaaS 原型

  1. 替换营销页、价格和团队核心对象
  2. 为关键 Server Action 补充 Zod 校验与角色授权
  3. 使用 Stripe 测试模式跑通 Checkout 与 webhook
  4. 测试重复 webhook、越权请求和无效输入

完成标志:得到一个拥有可证明数据和权限边界的 SaaS 纵向样片。

评分解释

每一分都要说清楚为什么

可复刻性21 / 25
21 / 25

为最小模板且有明确初始化命令,但数据库与 Stripe 使复现不是零配置。

文档与代码清晰度19 / 20
19 / 20

README、目录命名与分层一致,主要业务边界容易定位。

新手学习价值17 / 20
17 / 20

对已会 React 的入门者价值高;完全零基础用户会同时遇到认证、SQL 和支付概念。

产品完整度14 / 15
14 / 15

已包含营销、登录、团队、角色、支付和活动日志的 SaaS 主闭环。

vibe coding 代表性9 / 10
9 / 10

适合以可运行骨架为起点,通过替换领域对象和界面快速做变体。

活跃度4 / 5
4 / 5

仓库未归档且有较新推送,但 canary 框架版本增加了更新风险。

新颖性3 / 5
3 / 5

SaaS 能力组合典型且实用,但产品模式本身并不新颖。