想做一个 SaaS 产品,写完登录注册就要接支付,接完支付要配邮件,还要搭管理后台、埋点分析、写文档博客,真正属于你产品的那部分功能还没开始动。从头搭一遍这套基础设施至少两周,买商业模板又要几百美元,而且代码质量不可控。

Open SaaS 是 Wasp 团队维护的免费开源 SaaS 脚手架,把这些基础设施一次配齐,并且明确宣布对 AI 编程工具友好——Claude Code、Cursor、Codex、OpenCode 都有配套的规则和技能,让智能体在它的项目结构里干活更不容易跑偏。GitHub 上超过 1.6 万 Star。

项目基本信息

信息项详情
项目名称Open SaaS
GitHub地址https://github.com/wasp-lang/open-saas
项目描述免费开源的 React 全栈 SaaS 模板,认证支付管理后台开箱即用
作者wasp-lang
开源协议MIT License
开源状态公开状态
LanguagesTypeScript / React / Node.js
支持平台Windows / macOS / Linux
最后更新2026-10-26

一、项目介绍

Open SaaS 基于 Wasp 框架构建。Wasp 是一个带超能力的全栈 React、NodeJS、Prisma 框架,用一个 .wasp 配置文件声明路由、认证、任务等高层概念,省掉大量样板代码。模板在此基础上集成了完整的 SaaS 基础设施。

具体包括:邮箱验证加社交登录的全栈认证,几行配置搞定;端到端类型安全,后端函数标好类型,前端自动推导,类型安全的链接也不用第三方库;支付走 Stripe、Polar.sh 或 Lemon Squeezy 三选一;邮件支持 SendGrid、MailGun 或 SMTP;文档和博客用 Astro 的 Starlight 模板;组件与样式基于 ShadCN UI,附带管理后台仪表盘;分析接入 Plausible 或 Google Analytics;还有 OpenAI 函数调用示例、AWS S3 文件上传、Playwright 端到端测试和后台定时任务。

部署也做了简化,一条命令把数据库、服务端、客户端部署到 Railway 或 Fly.io。

二、核心优势

第一,真正免费。完全开源,可自由使用和分发,没有商业模板的功能阉割和授权限制。

第二,Wasp 的框架红利。认证、类型安全、定时任务、一键部署这些能力是框架层提供的,升级模板也不会和你手写的代码打架。

第三,AI 友好。模板自带 AI 辅助编码的插件、技能和规则文件,智能体理解项目结构,生成代码与既有架构一致。

第四,生态成熟。文档详尽到集成级细节,Discord 社区活跃,遇到问题响应快。

三、适用场景

第一类是独立开发者验证想法:周末从模板起步,把精力全花在核心功能上,MVP 两周内能见人。

第二类是中小团队的标准起点:认证、支付、后台都是成熟实现,代码可读可改,不担心被供应商绑架。

第三类是学习全栈开发:从 .wasp 配置到 Stripe 集成,一个模板把现代 SaaS 的完整链路都展示了。

四、安装教程

先安装 Wasp CLI(macOS、Linux 或 Windows 的 WSL):

npm i -g @wasp.sh/wasp-cli

然后用模板创建新项目:

wasp new -t saas

进入项目目录后按文档配置数据库连接和支付密钥,运行 wasp start 即可本地起服务。Windows 用户注意必须走 WSL,原生 PowerShell 环境不支持。

常见报错:Node 版本过低导致 CLI 装不上,先升级 Node;wasp start 报数据库连接失败,检查 PostgreSQL 是否启动且连接串正确;支付回调本地不通,用 ngrok 之类的隧道暴露本地端口并把回调地址配到 Stripe 后台。

想先看线上效果,Railway 提供一键部署模板,数据库、服务端、客户端一次拉起,之后可以推回自己的 GitHub 仓库继续开发。

五、使用示例

创建项目后,典型的开发循环是这样的:在 main.wasp 里声明一个新页面和路由,写 React 组件,然后在 ts 源文件里定义查询或操作函数——比如一个获取当前用户订阅状态的查询:

export const getSubscriptionStatus = async (
  _args: unknown,
  context: any
) => {
  if (!context.user) {
    throw new HttpError(401);
  }
  const sub = await context.entities.Subscription.findFirst({
    where: { userId: context.user.id },
  });
  return sub?.status ?? "none";
};

前端组件里直接 import { getSubscriptionStatus } 调用,参数和返回值的类型自动推导,不需要写任何 API 层代码。代码格式检查跑 npm run prettier:format,静态检查跑 npm run lint,都已在模板里配好。

六、常见问题

和 T3 Stack、Supastarter 怎么选?Open SaaS 的差异化在 Wasp 框架的声明式配置,样板代码更少;如果团队已深度使用 Next.js 生态,另两个可能更顺手。

必须用 Stripe 吗?不是,Polar.sh 和 Lemon Squeezy 都是内置选项,适合 Stripe 不覆盖的地区。

能商用吗?MIT 协议,商用无限制,保留版权声明即可。

七、总结

Open SaaS 把「SaaS 的前两周」压缩成了一条命令。它不是最炫的模板,但开源、免费、文档全、AI 工具配合好,对想快速验证产品的开发者是性价比最高的起点之一。