Template
VibeBoot SaaS Starter
A Next.js 16 SaaS starter template with Auth.js v5 (GitHub + email magic link), Stripe subscriptions, a customer billing portal, a verified Stripe webhook, Prisma (SQLite by default, Postgres in one line), Tailwind CSS v4 and Cursor rules plus AGENTS.md/CLAUDE.md so AI coding tools follow the project's conventions.
$ git log v1.0.0..v1.1.0
What's new in v1.1
- + Rate limiting on sign-in and magic-link emails
- + Security headers: CSP, HSTS, frame-ancestors, Referrer- and Permissions-Policy
- + Authorization example: users can only read their own records
- +
docs/LAUNCH-CHECKLIST.mdbefore-you-launch checklist - + Cloudflare Workers deploy notes (the live demo runs there)
- +
npm run typecheckand Vitest tests
Features
Next.js 16 App Router + TypeScript
Strict TypeScript, src/ layout, Server Components by default, Tailwind CSS v4.
Auth.js v5
Sign in with GitHub or an email magic link (any SMTP provider). Database sessions via the Prisma adapter.
Stripe subscriptions
Stripe Checkout for a recurring plan, the Stripe Customer Portal for “Manage billing”, and a signature-verified webhook that syncs subscription status to your database.
Prisma database
SQLite works with zero setup. Switch to Postgres (Neon, Supabase, Vercel Postgres, Railway…) by changing one line in schema.prisma.
Pages you need on day one
Landing page, pricing page, login page and a protected dashboard that shows the user's plan.
Security basics built in
Rate-limited sign-in, security headers (CSP, HSTS, frame-ancestors, Referrer- and Permissions-Policy), an ownership-check example and a before-you-launch checklist.
Rules for AI coding tools
.cursor/rules (project, Stripe and database rules), AGENTS.md and CLAUDE.md describe the stack and conventions so Cursor, Claude Code and other agents write code that fits.
What's inside
The real file tree of the zip. Open folders and click the highlighted files to read actual excerpts — no mockups.
● click to preview
- favicon.ico
- globals.css
- layout.tsx
- page.tsx
- .gitignore
- CHANGELOG.md
- CLAUDE.md
- eslint.config.mjs
- LICENSE.md
- next-env.d.ts
- next.config.ts
- package-lock.json
- package.json
- README.md
- tsconfig.json
- vitest.config.mts
$ cat .cursor/rules/project.mdc
lines 1–22 of 50
// Always-on project rules for Cursor
---description: Project stack, structure and conventions for the SaaS starteralwaysApply: true--- # Project rules ## Stack- Next.js (App Router, `src/` dir), React Server Components by default, TypeScript strict, Tailwind CSS v4.- Auth.js v5 (`next-auth@beta`) with Prisma adapter, database sessions. Providers: GitHub + Nodemailer (magic link).- Stripe for subscriptions (Checkout + Billing Portal + webhooks).- Prisma ORM. SQLite locally, Postgres in production. ## File structure- `src/app/` — routes. `page.tsx` per route; API routes in `src/app/api/**/route.ts`.- `src/app/api/auth/[...nextauth]` — Auth.js handlers (do not edit).- `src/app/api/stripe/{checkout,portal,webhook}` — billing endpoints.- `src/auth.ts` — Auth.js config; import `auth`, `signIn`, `signOut` from `@/auth`.- `src/lib/db.ts` — Prisma singleton (`db`). Never instantiate `PrismaClient` elsewhere.- `src/lib/stripe.ts` — `getStripe()` lazy client + `isSubscribed()` helper.- `src/lib/plans.ts` — plan definitions shown on the pricing page.- `src/components/` — shared UI components (PascalCase exports, kebab-case filenames).$ open live-demo
Click through the real app before you buy
One-click demo sign-in, a real Stripe Checkout in test mode (card 4242 4242 4242 4242), the verified webhook flipping your plan to Pro, and the Stripe Customer Portal. Demo data resets every hour.
Setup
Requirements: Node.js 20+, a GitHub account, a Stripe account (test mode is fine). SMTP is optional for magic links.
npm install
cp .env.example .env
npx auth secret
npm run db:push
npm run devThen add your GitHub OAuth app and Stripe keys to .env, run npm run stripe:listen, and upgrade on /pricing with test card 4242 4242 4242 4242.
License
Single-buyer license. Build unlimited personal and client end products, including commercial ones. Don't resell, redistribute or publish the template itself — private repositories are fine. A company may share it with its own employees and contractors.
FAQ
What is VibeBoot?
VibeBoot makes starter templates for vibe coders — people who build apps with AI coding tools like Cursor. The first product is the VibeBoot SaaS Starter.
What is in the VibeBoot SaaS Starter?
A Next.js 16 (App Router, TypeScript) project with Tailwind CSS v4, Auth.js v5 (GitHub and email magic link), Prisma (SQLite default, Postgres switch), Stripe subscriptions with Checkout, the Customer Portal and a verified webhook, landing/pricing/login/dashboard pages, Cursor rules, AGENTS.md, CLAUDE.md, a documented .env.example and a setup README.
How much does it cost?
$49, one-time payment, launch price. No subscription.
What do I need to run it?
Node.js 20 or newer, a GitHub account (for the OAuth app) and a Stripe account — test mode is fine. Email magic links need an SMTP provider and are optional.
Does it work with Cursor only?
No. It is a normal Next.js project. The .cursor/rules files are used by Cursor; AGENTS.md and CLAUDE.md are read by other agents such as Claude Code. You can also code it by hand.
Can I deploy it to Vercel?
Yes. The README walks through deploying to Vercel: switch to Postgres (SQLite files don't persist on serverless), add the env vars, and register the production Stripe webhook and GitHub callback URL.
Does it include one-time payments, teams or an admin panel?
No. Billing is a subscription plan via Stripe Checkout. There are no teams/organizations, admin panel, or multi-tenant features out of the box — the included Cursor rules are designed to help you add features like these yourself.
What license do I get?
A single-buyer license: build unlimited personal or client end products, commercial use allowed. You may not resell, redistribute or publish the template itself (private repos are fine).