Starting from zero? How to build a SaaS covers the stack, and the Next.js SaaS starter ticks the sign-in, plans and payments boxes below out of the box.
Product
- One clear sentence on the homepage: who it is for and what it does.
- A new user reaches the useful moment in under five minutes.
- An empty state that tells new users what to do first.
Sign-in and accounts
- Sign-up, sign-in, sign-out and password reset (or magic links) all work.
- Google sign-in, if your users expect it, with your own domain on the consent screen.
- Users can delete their account and data.
Plans and limits
- A free plan and at least one paid plan, written down: what each includes.
- Every limit is checked on the server before the work, not by hiding a button. (canAccess / consume.)
- New users are put on the free plan at sign-up.
- At the limit, the user sees why and an upgrade button, not an error.
- Two requests at once cannot both spend the last credit.
Payments
- Checkout works end to end in test mode (Stripe test card 4242 4242 4242 4242).
- Upgrade, downgrade and cancel each change what the user can do.
- A billing page or customer portal to update the card and cancel.
- Sales tax and VAT: Stripe Tax, or a merchant of record like Paddle or Lemon Squeezy.
- Sign-in and receipt emails arrive, from your own domain (SPF and DKIM set).
- A support address that someone reads.
Legal
- Privacy policy and terms of service, linked in the footer.
- In the EU: GDPR basics (what you collect, why, how to delete it). In France: a legal notice (mentions légales).
- Cookie banner only if you use non-essential cookies.
Reliability
- Error tracking (Sentry or similar) with alerts to your phone.
- Database backups turned on, and you have tried a restore once.
- Secrets only in environment variables, never in the browser bundle.
- A status page or at least a way to tell users something is down.
Found by people and AI assistants
- Title and description on every page, a sitemap, and robots.txt.
- Your site submitted to Google Search Console and Bing Webmaster Tools (ChatGPT search relies largely on Bing).
- An llms.txt that explains the product in plain words.
- A page that answers the exact question your users type, with code if they are developers.
Launch
- Analytics on sign-up, activation and upgrade, so you know where people drop.
- Announce where your users are: Product Hunt, Hacker News (Show HN), Indie Hackers, Reddit, X, LinkedIn.
- Reply to every early user personally.
FAQ
What do I need before launching a SaaS?
A product that solves one problem, sign-in, a free plan and at least one paid plan with working checkout, limits enforced on every request, transactional email, a privacy policy and terms, error tracking, and a way for users to reach you.
Do I need a privacy policy and terms of service?
Yes, as soon as you collect emails or take payments. Stripe, Google sign-in and app stores also ask for a privacy policy URL. In the EU, GDPR applies, and in France a legal notice (mentions légales) is required too.
How do I make sure free users can't use paid features?
Check the plan on the server, before the work, on every request. Hiding a button is not enough. UsageGate's canAccess and consume run in your API route, so the check cannot be skipped from the browser.

