Short version: The Vercel SaaS Starter is excellent for learning Next.js App Router with Stripe — it's free, well-documented, and maintained by the Next.js team. It is intentionally minimal: no multi-tenancy, no admin, no AI, no observability, no compliance scaffolding. Already CH ships the production layer on top of the same ideas, with every provider swapped to a Swiss-sovereign equivalent.
Stack comparison
| Layer | Next.js SaaS Starter | Already CH (CH 🇨🇭) |
|---|---|---|
| Framework | ||
| Next.js App Router | ✓ | ✓ |
| TypeScript + Tailwind + shadcn/ui | ✓ | ✓ |
| Drizzle ORM | ✓ | ✓ |
| Postgres | any (Neon default) | Supabase self-hosted on Exoscale CH |
| Auth | ||
| Email + password | ✓ | ✓ |
| OAuth (Google, GitHub) | — | ✓ |
| Magic link / passwordless | — | ✓ |
| TOTP + Passkeys | — | ✓ |
| Org-wide MFA mandate | — | ✓ |
| Auth event audit log | — | ✓ |
| Billing | ||
| Payment processor | Stripe (US) | Payrexx (CH) |
| Default currency | USD | CHF |
| TWINT | — | ✓ |
| PostFinance | — | ✓ |
| Swiss VAT 8.1% pre-wired | — | ✓ |
| Idempotent webhook + dead-letter queue | — | ✓ |
| Customer billing portal | ✓ | ✓ |
| Multi-tenancy | ||
| Team / organisation model | ~ basic teams | ✓ full RBAC |
| Postgres RLS | — | ✓ |
| Query-layer tenant scoping | — | ✓ withOrgScope() |
| Admin dashboard + impersonation | — | ✓ |
| Transactional email | — | Infomaniak SMTP (CH) |
| React Email templates | — | ✓ |
| In-app notifications (Realtime) | — | ✓ |
| Background work | ||
| Cron-based background jobs | — | ✓ |
| Postgres-backed job queue | — | ✓ |
| API key management (hashed at rest) | — | ✓ |
| Security | ||
| CSP nonces + secure transport headers | — | ✓ |
| Rate limiting (ioredis) | — | ✓ |
| Bot protection | — | Friendly Captcha (DE) |
| Suspicious activity detection | — | ✓ |
| AI integration | ||
| Multi-provider AI | — | ✓ |
| Primary AI provider | — | Mistral AI (FR) |
| AI credits ledger | — | ✓ |
| Observability | ||
| Error tracking | — | GlitchTip self-hosted (CH) |
| Analytics | — | Matomo self-hosted (CH) |
| Feature flags | — | Unleash self-hosted (CH) |
| Compliance | ||
| nFADP data register at /admin | — | ✓ |
| GDPR export + deletion endpoints | — | ✓ |
| Pre-written privacy policy | — | nFADP + GDPR |
| Pricing | ||
| Price | Free (MIT) | CHF 199 one-time |
| Maintained by | Vercel / community PRs | wait, what. — full-time |
Template vs production kit
Next.js SaaS Starter
A free, MIT-licensed template by the Next.js team. Demonstrates Next.js App Router + Drizzle + Stripe + basic teams in well-organised code. Intentionally minimal — there's no auth library beyond email/password, no admin, no background jobs, no email sending, no observability, no compliance scaffolding. It's a learning aid, not a production foundation.
Already CH production
16 modules ready for production traffic: hardened auth (TOTP + passkeys + MFA mandate), Payrexx billing with idempotent webhooks + dead-letter queue, multi-tenant RBAC with RLS + query-layer scoping, admin dashboard with impersonation, transactional email, background jobs, security hardening, AI integration, observability, nFADP register, and i18n. Maintained as a paid product.
Why the free template isn't enough
The Vercel SaaS Starter is genuinely excellent at what it's designed for — teaching Next.js patterns. For a real SaaS, you'll find yourself building roughly 16 additional modules from scratch:
- Hardened auth (TOTP, passkeys, MFA mandate, audit log) — at least a week
- Idempotent billing webhooks + dead-letter queue — surprisingly tricky to get right
- Multi-tenant RLS + query-layer scoping — a month if you don't know Postgres deeply
- Admin dashboard + impersonation — another two weeks
- Transactional email pipeline + templates
- Background job runner + cron sidecar
- Security headers + rate limits + bot protection
- Suspicious-activity detection
- AI integration + credits ledger
- Feature flags
- Error tracking + analytics
- Privacy / terms templates + GDPR/nFADP endpoints
- i18n with locale routing
That's 4–6 months of work for one engineer. Already CH costs CHF 199 once.
Why Swiss-sovereign on top
Even if you bolted those modules onto the free template, you'd still be on the US stack: Stripe, Vercel, optional Sentry, optional Resend. For Swiss B2B customers, that's a sales blocker. Already CH wires the production layer on a Swiss-sovereign foundation:
- Payrexx (Thun, CH) instead of Stripe — with TWINT + PostFinance
- Exoscale (Geneva / Zurich) instead of Vercel
- Infomaniak SMTP (Geneva) instead of Resend
- Matomo cookie-free instead of PostHog / Google Analytics
- GlitchTip self-hosted instead of Sentry
- Mistral AI (Paris) instead of Anthropic / OpenAI
- Friendly Captcha (DE) instead of Vercel BotID
Who should use what
Use Next.js SaaS Starter when
- You're learning Next.js + Drizzle + Stripe
- You're building a personal project or PoC
- You enjoy writing the production layer yourself
- Free + MIT licence matters more than time-to-launch
- You don't need multi-tenancy, admin, or AI integration
Use Already CH when
- You're shipping a real Swiss SaaS, not a prototype
- Your customers are Swiss or German-speaking
- You need TWINT, CHF billing, Swiss VAT, nFADP
- Multi-tenancy, admin, and AI integration are table stakes
- You'd rather pay CHF 199 than spend 4 months on infra
The honest comparison
The free Next.js SaaS Starter is one of the best learning resources for the Next.js + Drizzle + Stripe shape — clean code, official maintenance, free. If you're building a learning project or have months to spare on infrastructure, it's a fine start.
Already CH is for the founder who'd rather pay CHF 199 and skip the 4–6 months of building the production layer on top of a free template. Same architectural ideas (Next.js + Drizzle); 16 production modules wired and tested; every provider replaced with a Swiss-sovereign equivalent. Same one-time price as a single day of contractor work.