Auth, billing, team management, multi-tenancy, audit logs — pre-wired and production-ready. Skip the plumbing, build your product.
Built with
Next.js 16Drizzle ORMSQLiteStripeJWT AuthTypeScriptEight months of plumbing distilled into one tightly-integrated starter. Each piece is wired together — not glued.
JWT cookies, email verification, password reset, and active session management with per-device revoke.
TOTP via authenticator apps with QR setup and one-time recovery codes. Optional per user.
Organizations, member roles, and invite-by-email with token-based acceptance — the boring stuff, done right.
Hashed API keys with prefixes, per-key rate limits, and a public REST API authenticated by Bearer token.
Subscription Checkout, Customer Portal, and webhook-driven plan updates — three tiers wired up.
Every meaningful action recorded with actor, IP, and timestamp. Indexed and paginated by default.
Resend integration for verification, password resets, and team invitations — with sane retries.
SQLite WAL mode, indexed hot paths, and observability via the audit feed. Ship the boring parts on day one.
Each system is built the way you would build it for production — typed end to end, indexed, and integrated with the rest of the stack.
Email and password sign-in backed by JWT cookies, verification emails, and password resets. Add a second factor with TOTP authenticator apps and one-time recovery codes — opt-in per user.
Recovery codes
7f2a-9c1db4e8-03afd91c-5e7bOrganizations are first-class. Invite teammates by email with token-based acceptance, assign roles, and scope every query to the active tenant — no bolt-on workarounds.
Subscription Checkout, the Customer Portal, and webhook-driven plan changes are wired across three tiers. Plan limits sync to your tenant automatically — add your keys and ship.
Renews on the 1st · via Stripe
Issue hashed API keys with prefixes and per-key rate limits, then let customers hit a versioned /v1 REST API authenticated by Bearer token. Stripe webhooks are verified and idempotent.
$ curl https://api.saasly.dev/v1/members -H "Authorization: Bearer sk_live_••••" { "data": [ { "id": "mem_4f2a", "role": "admin" }, { "id": "mem_9c1d", "role": "member" } ], "has_more": false }
Founders and engineers who skipped the plumbing and got straight to their product.
“Shipped my MVP in a weekend instead of a month. Auth, billing, and teams were already wired together — I just built my actual product on top.”
Alex Rivera
Indie founder · solo
“The multi-tenancy and audit log saved us weeks. It is the boring infrastructure we always end up rebuilding, done properly out of the box.”
Priya Nair
CTO · seed-stage startup
“Clean code, sensible defaults, real TypeScript types everywhere. The Stripe webhooks just worked. Easily paid for itself on day one.”
Marcus Lee
Lead engineer · B2B SaaS
Start free. Upgrade when you outgrow it. Cancel anytime.
For solo builders kicking the tires.
For growing teams shipping fast.
For organizations that need more.
Everything you need to know before you buy.
Everything you need to launch a SaaS: email/password auth with JWT sessions, two-factor auth (TOTP), email verification and password reset, organizations with member roles and email invites, Stripe subscription billing, hashed API keys with a public /v1 REST API, an audit log, and transactional email via Resend — all pre-wired in Next.js 16 with Drizzle ORM and TypeScript.
Yes. The license lets you build and ship your own projects and products — including commercial ones — and modify the code freely. The only restriction is that you cannot repackage and resell it as a competing starter template or boilerplate.
The starter ships on SQLite (WAL mode, with indexed hot paths) so you can run it locally with zero setup. Because data access goes through Drizzle ORM, the schema and queries port cleanly to Postgres or another supported database when you are ready to scale.
Yes. Subscription Checkout, the Customer Portal, and webhook-driven plan updates are all wired up across three tiers (Starter, Pro, Enterprise). Drop in your Stripe secret key and price IDs and billing works end to end.
It is MIT with a single non-compete clause: you may use, modify, and ship it in your own apps and commercial products, but you may not resell or redistribute it — in whole or substantial part — as a competing starter template, boilerplate, or scaffold.
Yes. Buyers receive updates as the starter evolves — bug fixes, dependency bumps, and new building blocks. You keep using whatever version you have shipped; pull in updates on your own schedule.
Sign up in 30 seconds and start shipping the parts that actually matter.
Create your account