Next.jsReactSaaS启动器

wonderkit — Next.js SaaS模板

作者 zimkk

WonderKit 是一个基于 Next.js 的开源 AI SaaS 启动套件,围绕“让编码代理无需人工介入即可扩展”的目标组织代码,内置多租户组织、Stripe 订阅计费、多模型 AI 抽象层与多代理运行时。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

3 个预览视图
桌面端首页1 / 3
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 3

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-01查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

基于 Next.js App Router 与 Turborepo + pnpm 的 monorepo,主应用与 db、ai、agents、emails、storage、ui 等共享包分离

02

Auth.js v5 认证,开发环境仅需 DATABASE_URL 与 AUTH_SECRET,魔法链接直接打印到终端

03

多租户组织与角色体系,授权统一通过 requireOrgRole 完成,并含邮件邀请与团队管理界面

04

Stripe 订阅计费,套餐以数据形式定义在 plans.ts,gate() 按配额抛出 PlanLimitError,并支持 token 超额按量上报

05

AI 提供方抽象层支持 Anthropic、OpenAI、OpenRouter、Ollama,含定价表与流式对话

06

多代理运行时含 Orchestrator、Researcher、Writer、Ops 四个内置代理,运行与步骤持久化到数据库,并提供 eval 测试工具

模板详细介绍

WonderKit 是面向 AI SaaS 场景的开源启动套件,采用 Next.js App Router 与 Turborepo + pnpm 的 monorepo 结构,主应用位于 apps/web,共享能力拆分为 db、ai、agents、emails、storage、ui 等 packages。它把认证、多租户组织、API 密钥、订阅计费、AI 调用与代理运行等常见模块预先接好,适合在此基础上继续开发 AI 产品。

项目强调“代理原生”设计:仓库根目录的 CLAUDE.md 与 AGENTS.md 给出编码代理的操作规则,docs/agent 提供架构地图,docs/prompts 收录 9 个已验证的代理提示词。约定包括:授权统一走 requireOrgRole、LLM 调用统一走 packages/ai、异步副作用统一走 Inngest、环境变量统一经 @/env 读取、套餐限制统一由 gate() 读取 PLANS 数据。

功能层面,认证使用 Auth.js v5,开发环境仅需 DATABASE_URL 与 AUTH_SECRET 即可启动,魔法链接会打印到终端;组织支持 OWNER/ADMIN/MEMBER 角色与邀请流程;API 密钥仅存 SHA-256 哈希并只展示一次;计费通过 Stripe 实现 Free/Starter/Pro 三档订阅与按量 token 超额上报;AI 层抽象了 Anthropic、OpenAI、OpenRouter、Ollama 四类提供方;代理运行时包含 Orchestrator、Researcher、Writer、Ops 四个内置代理,并用 pgvector 做语义记忆。

限制与边界:仓库资料未给出各依赖的具体版本号,也未说明生产环境下的性能或稳定性表现;演示图片、字体、图标等第三方素材需单独核对许可;域名、托管、数据库、支付与 AI 等外部服务可能产生额外费用。Roadmap 中“Demo video + hosted demo”仍未完成。

Next.jsSaaS启动器

适合你的项目吗?

适用场景

  • 以现成的认证、组织、计费与 AI 调用模块为起点,开发面向团队的 AI SaaS 产品
  • 需要多模型切换能力,希望在同一套代码中通过环境变量在 Anthropic、OpenAI、OpenRouter、Ollama 之间切换
  • 构建带持久化运行记录与语义记忆的多代理工作流,例如研究、写作与运营类代理协作
  • 为编码代理准备可扩展的代码库,借助 AGENTS.md、CLAUDE.md 与 docs/prompts 约束代理的改动范围

适合人群

  • 熟悉 Next.js、TypeScript 与 Prisma,希望快速搭建 AI SaaS 骨架的开发者
  • 需要多租户组织、角色权限与订阅计费一体化实现的团队
  • 计划让编码代理参与日常开发,并愿意遵循仓库内约定与提示词的团队
  • 希望自托管或部署到 Vercel,并接受自行配置数据库、支付与 AI 等外部服务的项目

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    本地运行需要 Node 22+、pnpm 10+ 与 Docker Desktop,先执行 pnpm install 并复制 .env.example 为 .env

  2. 2

    仅 DATABASE_URL 与 AUTH_SECRET 为启动必需项,其余环境变量按需启用并在启动时被特性检测

  3. 3

    使用 docker compose -f docker-compose.dev.yml up -d 启动带 pgvector 的本地 Postgres,再执行 Prisma 迁移与种子数据

  4. 4

    开发环境登录页输入任意邮箱即可,魔法链接会打印到终端,无需配置 Resend 密钥

  5. 5

    部署可选 Vercel 或 Docker Compose 自托管,CI 由 GitHub Actions 在推送到 main 时执行类型检查、构建与 Prisma 迁移

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 计费功能依赖 Stripe 外部服务,需自行注册 Stripe 账号并配置密钥,可能产生支付手续费等额外费用。
  • 文件存储依赖 Cloudflare R2 外部服务,需自行开通账号并配置凭据,可能产生存储与流量费用。
  • 生产环境邮件发送依赖 Resend 外部服务,需配置 RESEND_API_KEY;开发环境可仅打印到终端。
  • 异步任务依赖 Inngest 外部服务,生产环境需配置事件密钥;开发环境可用本地键运行。
  • AI 能力需接入 Anthropic、OpenAI、OpenRouter 或 Ollama 等外部提供方,需自备 API 密钥并承担调用费用。
  • 部署需自行准备 Vercel 或 VPS 托管环境,域名、服务器与数据库等可能产生额外费用。
  • 路线图中演示视频与在线演示尚未完成,项目当前不提供可直接访问的托管演示。
  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据

Permission is hereby granted, free of charge

许可证原文

Stripe Checkout + Customer Portal via server actions

README 原文

Storage | Cloudflare R2 | Presigned uploads, org-scoped authz

README 原文

Email | Resend + React Email | Typed templates, dev console transport

README 原文

Jobs | Inngest | Durable agent runs, crons, retries

README 原文

AI | Provider abstraction | Swap Anthropic / OpenAI / OpenRouter / Ollama via env

README 原文

Deploy | Vercel or VPS | Docker Compose + GitHub Actions CI/CD

README 原文

Demo video + hosted demo

README 原文
https://github.com/zimkk/wonderkit/blob/main/LICENSEhttps://github.com/zimkk/wonderkit/blob/main/README.md

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-01。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料较完整 · 88 / 100
技术栈
Next.js · React
网站类型
SaaS · 启动器
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2026-06-11
截图检查日期
2026-10-01

已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。

目录记录的主要技术栈是 Next.js。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

已完成服务器许可规则与 AI 来源核对;未经过人工编辑审核。

查看当时使用的来源资料

SHA-256: 7324c171436b56e866e6ad45185a5102fb3a2051a74dd0e747386ed0611c8a6d

2026-10-01T01:25:23.101Z

来源文件 / 仓库
# WonderKit

**The open-source, agent-native AI SaaS starter kit.**

A fresh Claude Code session, given only this repo, can add a new AI feature, billing tier, or multi-agent workflow — without human rescue. That's the bar WonderKit is built to clear.

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178c6)](https://www.typescriptlang.org/)
[![Next.js](https://img.shields.io/badge/Next.js-15-black)](https://nextjs.org/)
[![CI](https://github.com/zimkk/wonderkit/actions/workflows/ci.yml/badge.svg)](https://github.com/zimkk/wonderkit/actions/workflows/ci.yml)

---

## What's inside

| Layer | Tech | What it gives you |
|---|---|---|
| Framework | Next.js 15 App Router | RSC, streaming, server actions |
| Database | PostgreSQL 16 + pgvector | Relational data + vector memory |
| ORM | Prisma 6 | Type-safe queries, migrations |
| Auth | Auth.js v5 | Magic link, Google, GitHub — feature-detect |
| Billing | Stripe | Subscriptions + metered token overage |
| Jobs | Inngest | Durable agent runs, crons, retries |
| Email | Resend + React Email | Typed templates, dev console transport |
| Storage | Cloudflare R2 | Presigned uploads, org-scoped authz |
| AI | Provider abstraction | Swap Anthropic / OpenAI / OpenRouter / Ollama via env |
| Agents | Multi-agent runtime | Orchestrator, researcher, writer, ops — persisted to DB |
| Monorepo | Turborepo + pnpm | `apps/web` + shared `packages/*` |
| Deploy | Vercel or VPS | Docker Compose + GitHub Actions CI/CD |

---

## Quickstart

**Requirements:** Node 22+, pnpm 10+, Docker Desktop

```bash
git clone https://github.com/zimkk/wonderkit.git
cd wonderkit

# Install dependencies
pnpm install

# Configure environment
cp .env.example .env
# Edit .env — only DATABASE_URL and AUTH_SECRET are required to start

# Start local Postgres with pgvector
docker compose -f docker-compose.dev.yml up -d

# Run migrations and seed demo data
pnpm --filter @kit/db exec prisma migrate dev
pnpm --filter @kit/db exec prisma db seed

# Start the dev server
pnpm dev
```

Open **http://localhost:3000**. Enter any email on the login page — the magic link prints to your terminal (no Resend key needed in dev).

---

## Project structure

```
wonderkit/
├── apps/
│   └── web/                   # Next.js 15 app (dashboard, API, marketing)
│       ├── src/app/           # App Router pages & layouts
│       ├── src/auth.ts        # Auth.js v5 config
│       ├── src/env.ts         # Typed env (t3-env) — never read process.env directly
│       ├── src/lib/           # stripe.ts, billing.ts, org.ts
│       └── inngest/           # Inngest client + functions
├── packages/
│   ├── db/                    # Prisma schema, requireOrgRole, gate(), PLANS, typed errors
│   ├── ai/                    # LLM provider abstraction, pricing table, rate limiter
│   ├── agents/                # defineAgent, runAgent, 4 built-in agents, eval harness
│   ├── emails/                # 5 React Email templates + sendEmail()
│   ├── storage/               # R2/MinIO signed URL helpers
│   └── ui/                    # Shared React primitives (Button, Card, cn)
├── docs/
│   ├── agent/                 # Architecture map for coding agents
│   └── prompts/               # 9 verified agent prompts (base → eval judge)
├── skills/                    # Reusable agent skill cards
├── deploy/
│   ├── vercel/                # Vercel deploy guide
│   └── vps/                   # Docker Compose + Dockerfile for self-hosting
├── AGENTS.md                  # Agent operating manual — read before coding
├── CLAUDE.md                  # Golden rules enforced by ESLint boundary rules
└── PROVENANCE.md              # Authorship + dependency attribution
```

---

## Agent-native design

WonderKit is the only starter kit built around the question: *can a coding agent extend this without human rescue?*

Every convention is a checkable rule:

```
// All authz via requireOrgRole — never inline role checks
// All LLM calls via packages/ai — never import vendor SDKs in app code
// All async side effects via Inngest — never fire-and-forget promises
// All env via @/env — never read process.env directly
// All plan gating via gate() reading PLANS — quotas are data, not code
```

`CLAUDE.md` at the repo root tells any coding agent exactly where things go, what not to touch, and how to verify its work. `AGENTS.md` is the full operating manual. `docs/prompts/` has 9 verified prompts covering every agent persona.

---

## Features

### Auth (zero config in dev)
- Magic link sign-in — URL prints to terminal when `RESEND_API_KEY` is unset
- Optional Google + GitHub OAuth (auto-detected from env)
- Database sessions via Auth.js v5 + Prisma adapter
- Auto-creates org + FREE subscription on first sign-in

### Multi-tenant organisations
- One user → many orgs, one active at a time (cookie-based switcher)
- Roles: `OWNER > ADMIN > MEMBER`
- `requireOrgRole(session, orgId, role)` is the single authz primitive — no inline checks anywhere
- Invitation flow: email-gated invite tokens, role assignment, plan member-limit enforcement
- Team management UI: member list + remove, pending invitations + cancel, invite form
- `/invite/[token]` accept page: validates token expiry and email match before creating membership

### API key management
- `createApiKey()` generates `sk_live_*`, stores only SHA-256 hash, returns plaintext once
- "Show once" copy widget in the UI — plaintext never persists on the server
- `revokeApiKey()` for immediate invalidation
- `resolveApiKey()` in `packages/db` for authenticating API requests

### Billing (Stripe)
- Free / Starter ($29) / Pro ($99) plans defined as data in `packages/db/src/plans.ts`
- `gate(orgId, feature)` throws `PlanLimitError(402)` when over quota
- Stripe Checkout + Customer Portal via server actions
- Webhook: raw body + signature verification — handles `checkout.session.completed`, `subscription.updated/deleted`, `invoice.payment_failed`
- Inngest events emitted for all billing side effects

### AI provider layer
- `LlmProvider` interface implemented for Anthropic, OpenAI, OpenRouter, and Ollama
- `defaultProvider()` auto-selects based on available env vars
- Pricing table with `costUsd()` for per-request cost tracking
- Streaming chat with SSE — token costs written to `UsageEvent` after each response

### Multi-agent runtime
- `defineAgent(config)` registers agents in a global registry
- `runAgent(agentId, ctx)` persists `AgentRun` + `AgentStep` to the database
- 4 built-in agents: **Orchestrator**, **Researcher**, **Writer**, **Ops**
- pgvector semantic memory: `storeMemory()` + `retrieveMemories()`
- Eval harness: `pnpm --filter @kit/agents eval --agent orchestrator --suite basic`

### Email
- 5 typed templates: `WelcomeEmail`, `MagicLinkEmail`, `InviteEmail`, `PaymentFailedEmail`, `UsageAlertEmail`
- `sendEmail(template, props, to)` — logs HTML to console in dev, sends via Resend in prod

### Jobs (Inngest)
- Nightly usage rollup cron (`UsageEvent` → `UsageDailyRollup`)
- `onPaymentFailed` → sends `PaymentFailedEmail`
- `onSubscriptionProvisioned` → sends `WelcomeEmail`
- `onUsageAlert` → sends `UsageAlertEmail` to org owner when usage ≥ 80% of monthly quota
- Nightly rollup also reports metered overage tokens to Stripe (`subscriptionItems.createUsageRecord`)
- Dev works without `INNGEST_EVENT_KEY` (uses `"local"` key)

---

## Environment variables

Only two variables are required to run locally:

```bash
DATABASE_URL=postgresql://wonderkit:wonderkit@localhost:5433/wonderkit
AUTH_SECRET=<openssl rand -base64 32>
```

Everything else is optional and feature-detected at startup. See [`.env.example`](.env.example) for the full annotated list.

---

## Deployment

**Vercel** (fastest): connect repo → add env vars → deploy. See [`deploy/vercel/README.md`](deploy/vercel/README.md).

**Self-host**: Docker Compose stack (app + postgres). See [`deploy/vps/docker-compose.yml`](deploy/vps/docker-compose.yml) and the `Dockerfile`.

**CI**: GitHub Actions runs typecheck → build → Prisma migrate on every push to `main`. See [`.github/workflows/ci.yml`](.github/workflows/ci.yml).

---

## Roadmap

- [x] Phase 1 — Monorepo, auth, DB schema, dashboard shell
- [x] Phase 2 — Stripe billing, Inngest jobs, email templates, R2 storage
- [x] Phase 3 — AI provider layer (Anthropic/OpenAI/OpenRouter/Ollama), streaming chat
- [x] Phase 4 — Agent context layer, AGENTS.md, 9 verified prompts, skills
- [x] Phase 5 — Multi-agent runtime, pgvector memory, eval harness
- [x] Phase 6 — Admin panel, deploy guides (Vercel + VPS), GitHub Actions CI
- [x] Invitation flow + team management UI (`/app/settings/team`, `/invite/[token]`)
- [x] API key management UI (`/app/settings/api-keys`, SHA-256 hash storage)
- [x] Usage alerts (email at 80% quota via Inngest + UsageAlertEmail)
- [x] Stripe metered billing for token overage (nightly rollup reports to Stripe)
- [ ] Demo video + hosted demo

---

## Contributing

Issues and PRs welcome. Read `AGENTS.md` before contributing — it's the same guide the AI coding agents use, and it tells you exactly where new code goes.

---

## License

MIT © [Hassan Nazir](https://github.com/zimkk) — see [LICENSE](LICENSE).
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。