ByteNoteByteNote

字节笔记本

2026年2月18日

Open SaaS:免费开源的 React + Node.js SaaS 启动模板

API中转
¥120

本文介绍 Open SaaS,一个免费开源的 SaaS 应用启动模板,基于 React 和 Node.js 构建,具备完整的商业化功能。它由社区驱动,帮助开发者快速启动自己的 SaaS 产品。

项目简介

Open SaaS 是 Wasp 团队开发的开源 SaaS 启动模板,在 GitHub 上已获得 13.4k+ stars。它提供了构建 SaaS 应用所需的全部核心功能,包括用户认证、支付集成、管理后台、邮件系统等。

与其他启动模板不同,Open SaaS 基于 Wasp 全栈框架构建,提供了声明式的开发体验,让开发者可以用更少的代码实现更多功能。

核心特性

  • 完整认证系统: 邮箱/密码、Google/GitHub OAuth 登录
  • 支付集成: 内置 Stripe 订阅支付支持
  • 管理后台: 完整的后台管理系统,支持用户管理、数据分析
  • 邮件系统: 集成邮件发送功能,支持交易邮件和营销邮件
  • 文件上传: 支持头像上传、文件存储
  • 任务队列: 内置后台任务处理机制
  • AI 集成: 内置 OpenAI API 集成示例
  • 响应式设计: 基于 Tailwind CSS 的现代化界面
  • TypeScript: 全栈 TypeScript 支持
  • 一键部署: 支持一键部署到 Fly.io、Railway 等平台

技术栈

  • 全栈框架: Wasp(React + Node.js)
  • 前端: React + TypeScript + Tailwind CSS
  • 后端: Node.js + Express + Prisma
  • 数据库: PostgreSQL
  • 认证: Wasp Auth(支持多种登录方式)
  • 支付: Stripe
  • 邮件: SendGrid / SMTP
  • 文件存储: AWS S3 / Cloudflare R2

安装指南

前置要求

  • Node.js 18+
  • npm / yarn / pnpm
  • Wasp CLI

安装 Wasp CLI

bash
curl -sSL https://get.wasp-lang.dev/installer.sh | sh

创建项目

bash
# 使用 Open SaaS 模板创建项目
wasp new my-saas-app -t github.com/wasp-lang/open-saas

cd my-saas-app

配置环境变量

bash
cp .env.server.example .env.server
cp .env.client.example .env.client

# 编辑 .env.server 配置数据库、Stripe、邮件等
# 编辑 .env.client 配置前端环境变量

启动开发服务器

bash
wasp start

访问 http://localhost:3000 查看应用。

项目结构

text
my-saas-app/
├── main.wasp           # Wasp 配置文件
├── src/
│   ├── client/        # 前端代码
│   │   ├── components/
│   │   ├── pages/
│   │   └── hooks/
│   ├── server/        # 后端代码
│   │   ├── actions/
│   │   ├── queries/
│   │   └── jobs/
│   └── shared/        # 共享代码
├── public/            # 静态资源
└── .env.*             # 环境变量

快速开始

1. 用户认证

Open SaaS 内置完整的认证系统:

tsx
import { AuthUser } from 'wasp/auth';

export const Dashboard = ({ user }: { user: AuthUser }) => {
  return (
    <div>
      <h1>欢迎, {user.identities.username?.id}!</h1>
    </div>
  );
};

2. 支付集成

内置 Stripe 订阅管理:

tsx
import { useQuery } from 'wasp/client/operations';
import { getSubscriptionStatus } from 'wasp/client/operations';

const PricingPage = () => {
  const { data: subscription } = useQuery(getSubscriptionStatus);
  
  return (
    <div>
      {subscription?.status === 'active' ? (
        <p>您已订阅专业版</p>
      ) : (
        <button>升级到专业版</button>
      )}
    </div>
  );
};

3. 后台任务

创建定时任务或异步任务:

typescript
export const sendWeeklyEmail = async (args, context) => {
  const users = await context.entities.User.findMany();
  
  for (const user of users) {
    await sendEmail({
      to: user.email,
      subject: '本周更新',
      text: '...'
    });
  }
};

部署

部署到 Fly.io

bash
# 安装 Fly CLI
curl -L https://fly.io/install.sh | sh

# 登录
fly auth login

# 部署
wasp deploy fly launch

部署到 Railway

bash
# 安装 Railway CLI
npm install -g @railway/cli

# 登录
railway login

# 部署
wasp deploy railway

包含的功能模块

功能说明
用户注册/登录邮箱+密码、OAuth
订阅管理Stripe 集成
管理后台用户管理、数据统计
邮件系统欢迎邮件、密码重置
文件上传头像、附件
任务队列异步处理
AI 功能OpenAI 集成示例
博客系统内置博客功能
文档系统帮助中心

相关资源

许可证

本项目采用 MIT 许可证开源。

分享: