Preparing for launch…
Preparing for launch…
A production-grade Next.js 14 SaaS starter — auth, team workspaces, Stripe subscriptions and transactional email wired end to end, tested, and documented so every module can be deleted cleanly.

Every SaaS rebuilds the same four things before it can build anything: sign-in, teams, billing, email. Stackmesa is those four things finished — wired together and clicked through end to end, not just present in package.json. Before this listing went up, the starter was booted against a fresh Postgres and every claim below was exercised in one continuous run: sign-up created a user and their workspace, an invitation email carried a working link that survived the new member's sign-up, a real test-mode Stripe Checkout charged a per-seat plan (two members, so two seats — $24, with the maths visible on Stripe's own page), the webhook mirrored the subscription, a simulated payment failure started the grace period and sent the dunning email, the recovery cleared it, and the same webhook delivered twice was refused by the idempotency ledger with a polite {"duplicate":true}. The demo shows that run: real screenshots, verbatim code, and the actual webhook transcript. Billing is where most starters wave their hands, so it gets the most engineering here: an idempotency ledger that makes webhook retries and races safe, per-seat quantities that track your member count with prorations, flat plans beside them so both modes are exercised, a 7-day grace window when a card fails (cutting access on the first decline churns customers who just got a new card in the mail), dunning emails written for humans, and a signed-fixture harness that replays the entire lifecycle against your local webhook with no Stripe account and no internet. Auth arrives three ways — email + password, passwordless magic links, Google/GitHub OAuth — resolving to one identity, with sessions as JWTs and route protection at the edge. Teams are the data backbone: invitations are personal 7-day links, roles are owner/admin/member with the escalation paths closed, ownership transfer works, and the last owner can't be removed. Email is nine React Email templates through Resend — or, with no key set, printed to your dev console with links intact, which is why the whole product is clickable locally with zero third-party accounts. Configuration is one zod schema: required keys fail the boot with readable errors, optional keys gate features off gracefully. The code is deliberately boring: server components, server actions, plain CSS, one client component in the whole app, TypeScript strict with noUncheckedIndexedAccess, and 72 unit tests over the logic that loses money when it's wrong. And because a starter should shrink to fit, every module ships a guide that ends with deletion instructions — remove billing, teams, OAuth or email cleanly and typecheck your way to done.
- Full source: 79 files / ~5,500 lines — Next.js 14 App Router, TypeScript strict, Prisma/Postgres (docker-compose included) - Auth three ways: credentials, magic links, Google/GitHub OAuth — one identity, JWT sessions, edge middleware - Team workspaces: personal team on sign-up, email invitations with 7-day personal links, owner/admin/member roles, ownership transfer, last-owner protection - Stripe subscriptions: hosted Checkout + customer portal, idempotent webhook with a delivery ledger, per-seat AND flat plans, proration, 7-day grace periods, dunning + recovery emails - 9 React Email templates with a console transport for keyless local dev - Webhook harness + 6 signed fixtures (replays the full billing lifecycle offline), Stripe bootstrap script, dev seed - 72 passing unit tests (env, validators, passwords, access rules, plan mapping, ledger, seats) - README + 4 module guides (auth, billing, teams, email), each ending in a step-by-step deletion guide
- Stripe, Resend or hosting accounts (test/free tiers are fine for development) - An admin panel, analytics, or a UI component library — the minimal plain-CSS system is meant to be replaced by your design - Mobile apps (responsive web only) - Your product — this is deliberately a starter, not a business in a box
- Node.js 18.17+ and a Postgres (included docker-compose, or any hosted Postgres — Supabase/Neon free tiers work) - Comfortable with TypeScript and the Next.js App Router - A Stripe account in test mode when you switch billing on (optional — it's a feature flag) - Nothing else: email, OAuth and billing all degrade gracefully until configured
1. npm install, copy .env.example to .env, fill the two [required] keys (DATABASE_URL, AUTH_SECRET). 2. docker compose up -d (or point DATABASE_URL at any hosted Postgres), then npx prisma db push. 3. npm run db:seed — dev account founder@stackmesa.local / stackmesa-dev — and npm run dev. 4. Billing on: paste a test-mode Stripe key, run node scripts/stripe-bootstrap.mjs (creates the three plan prices and prints the env lines), set STRIPE_WEBHOOK_SECRET. 5. Webhooks locally: npm run stripe:listen (Stripe CLI) — or replay the signed fixtures with node scripts/webhook-harness.mjs lifecycle --team <id>, no Stripe account needed. 6. Verify your setup like the acceptance run: npm test (72), npm run typecheck, then click sign-up → invite → checkout with 4242 4242 4242 4242. 7. Make it yours: pricing in src/lib/billing/plans.ts, brand in globals.css and src/emails/_components.tsx, and delete unused modules with the guides in docs/.
Single-project commercial licence. Use Stackmesa as the foundation of one product — yours or a client's — and modify it without limit for that product. Each additional product needs its own licence. You may not resell, redistribute or re-list the starter or a derivative of it as a starter, boilerplate, template or code product, whether paid or free.
14-day refund if the product is materially not as described in this listing or its demo. The demo is generated from the shipped source — the file tree, code excerpts, test counts and screenshots are the real ones, so you can judge the codebase before buying. Refunds are not offered for change of mind or for third-party costs (Stripe, Resend, hosting). Open a refund request from your Launchstock library and we will respond within 2 business days. An approved refund ends your licence to the product — you must delete all copies of the files and stop using them.
Email support (support@stackmesa.io) for 3 months from purchase, replies within one business day. Covers the boot, configuration, the webhook harness, and the module deletion guides on unmodified code. Building your features, custom integrations, or debugging code you have substantially rewritten is available as paid work.
These terms are snapshotted at purchase — what you see here is what applies to your order.
5.0
1 verified review
Augustine Alexander
Verified purchase · 27 Aug 2026
Other listings buyers compared with this one.
Production-grade Express 4 + strict TypeScript REST API starter: JWT auth with refresh rotation, zod validation, typed errors, rate limits.
15 accessible, production-ready React + Tailwind components in TypeScript — copy them in, register one preset, ship.