You have the idea. You can see the feature that makes it worth paying for. So you open a new project — and then you don't build it. Not yet. First there's everything else.
You build a login page. Then password reset, because people forget passwords — which only matters if you also add email verification. Half your users expect "Continue with Google," so that goes in too. Now billing: Stripe checkout is the quick part, but you also need the webhook that flips a user to paid and the portal that lets them cancel without emailing you. And none of it ships until there's a deploy pipeline, because "it works on my machine" is not a launch.
None of that is your product. Every SaaS needs it, nobody pays you for it, and it's the same every single time.
The list nobody warns you about
Here's what stands between a fresh repo and your first real feature. You've probably underestimated at least half of it:
- Auth that survives contact with reality — sessions, email verification, password reset, Google OAuth. Not a fake login that trusts a cookie.
- Billing that actually gates something — Stripe Checkout is the easy 20%. The webhook that keeps your database in sync when someone cancels, upgrades, or lets a card expire is the other 80%.
- Transactional email — and a way to see those emails in development without spamming yourself or wiring up a provider on day one.
- A deploy pipeline — tests, a security audit, staging, and a production gate so a bad merge doesn't ship itself to customers.
- The unglamorous rest — rate limiting, pagination, light/dark mode without a flash, SEO metadata, a sitemap, Terms and Privacy stubs, error monitoring.
You can build all of it. You've maybe built it before. That's exactly the problem — you'll build it again, and it'll take just as long as last time.
Start past the boring part
That's the whole pitch. This is a full-stack starter — Next.js, Go, and
PostgreSQL — with every item on that list already wired up and tested. Not a
screenshot of a dashboard. A running app you can clone, make dev-all, and log
into in a few minutes.
The thing that separates it from a boilerplate that looks great and collapses the moment you touch it:
- It's real, and it's tested. Go unit tests, Vitest, and a full Playwright end-to-end run, wired into CI — not an afterthought bolted on for the demo.
- Every integration is opt-in with safe defaults. A fresh clone runs with no Stripe account, no Google project, no Sentry, no SMTP. Nothing phones home. You flip each one on with a single environment variable when you're ready.
- There's one example feature to copy. A small, dated, categorized "records" resource exists only to show you the full path — migration, query, handler, route, UI, tests. Deleting it and building your own thing is your first hour, and it's a paint-by-numbers hour.
You're reading this on the demo right now. The blog you're looking at is a file-based MDX blog that ships in the box — this post is just a file in the repo. Click around the dashboard, try the CSV import, toggle dark mode, break something.
Then go build the actual thing
The point of skipping the boring part isn't the time you save. It's that you get to the interesting part — the feature only your product has — while you still care about it.
See the whole thing running — take the demo for a spin. It's all there, wired up and waiting. If it saves you the boring part, it's yours for $49.