A free Nuxt + Supabase SaaS boilerplate (auth, Stripe, email, MIT)
BoiledPlate Lite is a free, MIT-licensed SaaS starter kit: Supabase auth, Stripe billing, transactional email, a blog, and i18n on Nuxt 4. Clone it and ship.
Search "free SaaS boilerplate" and you get two kinds of result. Abandoned GitHub repos with a login form and a README that stops at "TODO: payments", or polished starter kits with a paywall in front of the thing you actually need. We wanted a third option, so we built one and gave it away.
BoiledPlate Lite is a free, MIT-licensed SaaS starter kit. Same app as the paid version — Nuxt 4, Supabase, Stripe, Resend — minus the AI tooling that makes the paid one set itself up. You clone it, wire it up by hand, and ship.
What "free" actually means here
MIT licensed. Use it for client work, commercial products, whatever — no attribution gymnastics, no "free for non-commercial." The repo is private, but access is free: create an account, tell us your GitHub username, and the invite lands in seconds. The account is the entire price.
It is also not a toy. The free tier is the real plumbing, not a marketing demo with the hard parts stubbed out. That is the whole point: a SaaS starter that quietly skips webhooks and row-level security is not saving you the weeks that actually hurt.
What's in the free SaaS starter
The stack is the one most people land on anyway — a typed Nuxt + Supabase + Stripe + Resend SaaS template:
- Authentication — email/password and Google OAuth via Supabase, password reset that does not leak whether an account exists, and route protection that lives in middleware instead of scattered
if (!user)redirects. - Stripe billing — Checkout and the billing portal, with a signature-verified, idempotent webhook as the source of truth for subscription state. Plan limits are enforced in the database with row-level security, not just hidden in the UI. (This is the part most free boilerplates skip — here is why the webhook is the product.)
- Transactional email — Resend, with idempotent sends so a Stripe retry can't fire the receipt twice.
- A dashboard — a real app shell with a collapsible sidebar, a revenue-analytics view built on dependency-free SVG charts, an integrations directory, and a notes CRUD that demonstrates the typed-composable + RLS pattern end to end.
- A blog — Markdown via Nuxt Content, prerendered and in the sitemap (the one you're reading runs on the same setup).
- Internationalization — every user-facing string is a locale key, shipped in English, German, Spanish, and French with a language switcher and locale-aware currency and dates. Light/dark theming out of the box.
Everything is TypeScript strict with generated Supabase types shared across app and server, so you stop guessing at column names.
If you want the long version of why each of those pieces takes longer than it looks, we wrote about what it actually takes to wire up Nuxt, Supabase and Stripe.
Quick start
- Create a free account — that's the whole "checkout".
- On your dashboard, the BoiledPlate Lite card asks for your GitHub username — the invite to the repo arrives within seconds.
- Accept it, then:
git clone https://github.com/irmscheremilio/boiledplate-lite-release
cd boiledplate-lite-release
npm install
cp .env.example .env # add your Supabase keys (Stripe/Resend optional to start)
npm run dev
Apply the migrations in supabase/migrations/, generate types with npm run db:types, and you have auth, a dashboard, and the data layer running locally. Add Stripe keys when you're ready to turn on billing.
Where the free version stops, and the paid one starts
The free starter gives you the working product. You wire it up.
The paid BoiledPlate is the same app built to be set up and extended by AI coding agents. The difference is the build experience, not the feature checklist:
- An
AGENTS.mdconventions contract plus vendored skills, so Claude Code, Cursor, or Codex build on-pattern instead of inventing a second way to do everything. - A scripted setup interview that brands and configures the whole codebase to your answers, and one-command provisioning of Supabase and Stripe.
- Semantic updates you apply to your customized code with one sentence, instead of a scary upstream merge.
If you just want a free, honest, production-shaped SaaS starter kit, the Lite version is genuinely all you need. If you'd rather an agent did the wiring — and kept the starter updatable as your product grows — that's what the full version is for. Either way, you start from the same plumbing we trust enough to run this site on. Here's how we think about shipping SaaS fast.
Read more
How to ship SaaS fast: the stack is easy, the plumbing is the project
The framework picks itself. Webhook idempotency, RLS, refunds, EU consent: the plumbing is what eats your launch. The anti-plumbing SaaS stack.
What it actually takes to wire up a Nuxt, Supabase and Stripe SaaS
Picking a Nuxt + Supabase + Stripe + Resend stack is the easy decision. Here is the wiring each piece really demands, and where a SaaS starter saves you weeks.
How to set up Stripe subscriptions in a Nuxt + Supabase app
The five decisions behind Stripe subscriptions on a Nuxt + Supabase stack: plans in config, checkout, webhooks, RLS-enforced access, and the customer portal.

BoiledPlate