What a real SaaS boilerplate should include before you write product code
A login form, a checkout button, and a dashboard shell is not a SaaS foundation. Here is the workflow-level checklist that separates a starter from a demo.
It is easy to ship a starter that looks complete: a sign-in page, a Stripe button, and a dashboard with some placeholder cards. The trouble is that the hard parts of a SaaS product are the workflows between those screens, and those are usually left as an exercise for the buyer.
Here is the checklist we think a real foundation should clear before you write a single line of product-specific code.
Authentication that connects to everything else
Sign-in is the easy 20%. The other 80% is sessions, two-factor, and the ability to require a fresh login before a sensitive action. Authentication has to be wired to your organization model, not bolted on beside it.
Teams, roles, and permissions from the start
Even a solo product often grows into a team product. Retrofitting workspaces, invitations, and role-based access after launch means re-touching every query you already wrote. A real foundation ships personal and team modes together and gates access with capabilities, not scattered conditionals.
Billing that grants access, not just collects money
A checkout button is not billing. Billing is a verified webhook that maps a plan to an entitlement your app can check. This starter includes adapters for Stripe, Polar, and Lemon Squeezy and turns a verified webhook into capability grants — so "did this user pay for this feature" is one question with one answer.
Security inside the flows
Audit events, fresh-session checks, and sensitive-action verification belong in the workflows where risk actually lives. If they are a checklist item rather than a code path, they will not be there when you need them.
Operational baseline
Transactional email, logging, error handling, and an optional analytics boundary are not glamorous, but they are the difference between "it runs on my machine" and "it runs in front of customers."
You can see how these fit together in the FAQ, and the demo walks through the live versions of each. The point is simple: a starter should save you the integration weeks, not just the first screen.