基于 Next.js App Router 与 Turborepo + pnpm 的 monorepo,主应用与 db、ai、agents、emails、storage、ui 等共享包分离
wonderkit — Next.js SaaS模板
作者 zimkk
WonderKit 是一个基于 Next.js 的开源 AI SaaS 启动套件,围绕“让编码代理无需人工介入即可扩展”的目标组织代码,内置多租户组织、Stripe 订阅计费、多模型 AI 抽象层与多代理运行时。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 3
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
Auth.js v5 认证,开发环境仅需 DATABASE_URL 与 AUTH_SECRET,魔法链接直接打印到终端
多租户组织与角色体系,授权统一通过 requireOrgRole 完成,并含邮件邀请与团队管理界面
Stripe 订阅计费,套餐以数据形式定义在 plans.ts,gate() 按配额抛出 PlanLimitError,并支持 token 超额按量上报
AI 提供方抽象层支持 Anthropic、OpenAI、OpenRouter、Ollama,含定价表与流式对话
多代理运行时含 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”仍未完成。
适合你的项目吗?
适用场景
- 以现成的认证、组织、计费与 AI 调用模块为起点,开发面向团队的 AI SaaS 产品
- 需要多模型切换能力,希望在同一套代码中通过环境变量在 Anthropic、OpenAI、OpenRouter、Ollama 之间切换
- 构建带持久化运行记录与语义记忆的多代理工作流,例如研究、写作与运营类代理协作
- 为编码代理准备可扩展的代码库,借助 AGENTS.md、CLAUDE.md 与 docs/prompts 约束代理的改动范围
适合人群
- 熟悉 Next.js、TypeScript 与 Prisma,希望快速搭建 AI SaaS 骨架的开发者
- 需要多租户组织、角色权限与订阅计费一体化实现的团队
- 计划让编码代理参与日常开发,并愿意遵循仓库内约定与提示词的团队
- 希望自托管或部署到 Vercel,并接受自行配置数据库、支付与 AI 等外部服务的项目
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
本地运行需要 Node 22+、pnpm 10+ 与 Docker Desktop,先执行 pnpm install 并复制 .env.example 为 .env
- 2
仅 DATABASE_URL 与 AUTH_SECRET 为启动必需项,其余环境变量按需启用并在启动时被特性检测
- 3
使用 docker compose -f docker-compose.dev.yml up -d 启动带 pgvector 的本地 Postgres,再执行 Prisma 迁移与种子数据
- 4
开发环境登录页输入任意邮箱即可,魔法链接会打印到终端,无需配置 Resend 密钥
- 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 原文
https://github.com/zimkk/wonderkit/blob/main/LICENSEhttps://github.com/zimkk/wonderkit/blob/main/README.mdDemo video + hosted demo
README 原文
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) [](https://www.typescriptlang.org/) [](https://nextjs.org/) [](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).
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

ai-website-cloner-template
Clone any website with one command using AI coding agents
Next.js · 启动器

Next.js SaaS Starter
Next.js SaaS Starter 是 Next.js 官方维护的 SaaS 起点模板,定位介于学习资源和可直接部署的脚手架之间。
Next.js · SaaS

Next.js Commerce
Next.js Commerce 是 Vercel 团队维护的电商启动模板,基于 Next.js App Router 构建,采用服务端渲染、React Server Components、Server Actions …
Next.js · 电商

Next-js-Boilerplate
Next-js-Boilerplate 是一个面向 Next.js 16、Tailwind CSS 4 和 TypeScript 的启动器,核心定位是开发者体验优先。
Next.js · 启动器

tailwind-nextjs-starter-blog
tailwind-nextjs-starter-blog 是一个面向个人技术博客的 Next.js 与 Tailwind CSS 启动模板,其 v2 版本基于 App Router 与 React Server Comp…
Next.js · 博客

next-forge
Production-grade Turborepo template for Next.js apps.
Next.js · 启动器
