A free-tier SaaS starter · open source

$0 for 1,000 users is a lie.

Free tiers don’t fail at a user count. They fail at a usage shape. Thirty people using session replays will torch a million-event analytics quota in a week. This starter ships with the replays off, the limits written down, and code that stops the meter before you get billed.

Open source. MIT core. Runs on free tiers until it genuinely can’t.

One email with the full limits table. Nothing after that until the numbers change.


We point at the wall instead of pretending it isn’t there.

We’re tired of “$0 forever” starters that quietly assume you’ll never send an email or store a file. So we publish the wall up front: every service, its real ceiling, what breaks it first, and the date we checked. The repo will ship this same list as LIMITS.md, and when a provider moves the goalposts, the file moves with it. That’s the whole product.

Preview of LIMITS.md — repo launching soon · verified 24 Jul 2026 The repo will ship this exact file. When a provider changes, the file changes.
Service Free ceiling What breaks it first
Hosting Cloudflare Pages Unlimited bandwidth · 500 builds/mo Build frequency, not traffic — bandwidth is genuinely uncapped. Our default because it allows commercial use.
Hosting Vercel Hobby 100 GB · 1M fn calls/mo The terms first: Hobby forbids commercial use — a paying SaaS is out of compliance the day Stripe goes live.
Auth Supabase 50,000 MAU Inactivity, not headcount — free projects pause after 7 days idle, which bites a side project long before 50K users.
Database Neon 0.5 GB / project (~5 GB total) Raw logs, blobs, or unindexed JSON in Postgres. Relational data fits fine; bulk unstructured data goes in R2.
Analytics PostHog 1M events/mo · 5K replays Session replays burn the quota fastest — off by default. Flip them on deliberately.
Email Resend 3K/mo · 100/day The daily cap stops you first. Fine for resets and receipts — not a newsletter.
Storage Cloudflare R2 10 GB · zero egress Storage volume, never bandwidth — a traffic spike can't produce a surprise transfer bill.

Every number re-checked against the provider on the date above. Wrong or stale? It’s a bug.


One SDK over the whole stack.

You call saas.user.create(); the driver underneath decides which vendor answers. Outgrow Neon, swap to Turso by changing one environment variable — your app code never finds out. Same for storage, email, and analytics.

Guardrails that admit what they can’t do.

Middleware throttles what you send — it drops non-critical telemetry and queues non-urgent email as you near a limit.


For anyone who’d rather not pay before there’s traffic.


Free core is MIT, forever.

The free core covers the essentials. Paid tiers add the parts that are a pain to build:

Free core

$0

MIT · one project

Base stack, single tenant, portable drivers, LIMITS.md and the guardrails.

Solo

$79/ yr

One project

Multi-tenancy, roles, Stripe + merchant-of-record, admin panel, agent rules.

Agency

$249/ yr

Unlimited projects

Everything in Solo, plus client resale.

We make money when a provider changes their free tier and we keep your drivers working. That’s exactly why we have no reason to lie to you about those tiers today.


Join the waitlist.

Waitlist only, no checkout — we’re measuring intent, not taking your money yet.