Operations & reliability · 2026

Your indie SaaS has no staging environment.
Here is the 30-minute setup (and the 4 bugs it catches).

Solo founders skip staging because the canonical advice is written for teams of ten — Terraform, a CI matrix, separate AWS sub-accounts, a QA engineer. Here is the lean 30-minute version that catches the 4 bugs that bite most indie SaaS in production, regardless of where you ship.

Staging in a single checkbox.

Pick the staging branch, pick the prod branch, get two URLs and two databases with separate secrets. The free Starter tier never sleeps — usable as staging without paying a cent.

No credit card required 1 service free forever Per-environment secrets Free tier never sleeps
Frequently asked

Quick answers

Why do most solo founders skip a staging environment?

The canonical advice for staging was written for teams of ten — it assumes Terraform, a CI matrix, separate AWS sub-accounts, and a QA engineer. A solo founder reads that, decides it isn't for them, and ships straight from main to production. The conclusion is wrong: the 90% version of staging is just a separate branch, a separate web service running that branch, a separate database, separate secrets, and a separate URL — about 30 minutes of setup.

What bugs does a staging environment actually catch?

Four classes your laptop dev server cannot reproduce: schema drift (a migration that ran locally but never shipped to prod), environment-variable assumptions (a key set in prod but forgotten in staging), cold-start and platform-specific failures (in-memory state that's empty after a container recycle), and webhook or OAuth callback URL mismatches. Logic bugs and type errors are better caught by CI, not staging.

Should staging share a database with production?

No. The entire point of staging is to catch schema drift, and you cannot catch drift if staging and prod point at the same database. Spin up a separate physical Postgres instance on the same provider, copy the schema once with pg_dump --schema-only, and seed it with fake data. Never copy production data into staging — that is how PII leaks happen.

How do I keep staging secrets from leaking into production?

Every external service has a test or sandbox version — use it everywhere on staging. Use Stripe test-mode keys with a separate test webhook endpoint, a separate OpenAI project with a $5 hard cap, and a sandbox inbox like Mailtrap for transactional email. If you copy prod's live keys into staging, a confused click can send a real email or charge a real card.

What is stale staging and how do I prevent it?

Stale staging is decay, not deletion: six weeks in, staging stops matching prod because of a different Node version, an env var you only added to prod, or a migration you ran manually against prod but never on staging. You find out the day a "tested on staging" deploy crashes prod. Prevent it with a one-page STAGING.md in the repo listing every env var and integration, changed in the same commit you change prod.