In 2024, I thought I could build something big. I launched a teacher-rating platform—and ended up getting a call from my director. That project is now closed, but I haven’t stopped shipping.
Over the past two years, I’ve tried dozens of projects: an AI image tool, an AI gateway, an AI learning app. Today, I’m still building LearnX, and I have plenty more ideas I want to try.
But every new idea came with the same first week: wiring up login, payments, emails, a database, and deployment. Before I could build the part I was excited about, I was rebuilding the same foundation.
So I built Supastack for myself: a boilerplate I could reuse whenever I wanted to start something new. Set up the foundation once, then spend my time on the idea.
Then I realized I couldn’t be the only one stuck doing this. If it helped me spend more time building, maybe it could help you too. That’s why I’m sharing it.
I’m still shipping. I just want the next idea to start with the idea, directly.
Everything that comes with supastack.
Codebase
Next.js and Expo share TypeScript modules so agents and humans extend one codebase instead of forking surfaces.
apps / web + mobile
Next.jsWeb app
Shared modules
ExpoiOS / Android
Next.js web application
Expo for iOS and Android
Shared TypeScript modules
Next.js
Expo
Tauri
TypeScript
Auth
Email, OTP, and social providers land in Better Auth sessions scoped to the user’s personal workspace.
Sign in
Welcome back
Continue to your personal workspace.
Email and password
One-time passwords
Google and Apple sign-in
Better Auth
Google
Apple
GitHub
Payments
Checkout, customer portal, and signed webhooks keep subscriptions and product access in sync. Swap Stripe for Paddle, Polar, or another adapter without rebuilding billing.
Billing
stripeSubscriptions
$1,248.00
Pro planActive · monthly
Entitlementai.enqueue
PortalManage billing
Nine payment providers
Checkout and customer portal
Entitlements for product access
Stripe
Lemon Squeezy
Paddle
Polar
PayPal
AI workflows
Route through OpenAI, Anthropic, or a compatible API with encrypted keys, usage tracking, and workspace budgets.
AI assistant
OpenAIAnthropicCompatible
Summarize this workspace’s usage.
Usage is within budget. 1,032 tokens on the last reply.
Usage
1,032 tokens
Configurable model providers
Encrypted bring-your-own-key
Usage tracking and budgets
OpenAI
Anthropic
OpenRouter
Jobs + email
Trigger.dev runs jobs through a narrow enqueue, status, and cancel contract. Transactional email stays separate from outreach.
Jobs
generate-briefTrigger.dev
Running
send-welcomeTransactional
Queued
sync-entitlement2m ago
Completed
Trigger.dev background jobs
Enqueue, status, and cancel
Transactional product email
Trigger.dev
Resend
Audit
Audit records, analytics hooks, and sanitized error context keep operational history attached to the right workspace.
Audit log
Event
Workspace
When
provider.config.updated
ws_8f2a
2m
subscription.updated
ws_8f2a
1h
workspace.created
ws_8f2a
1d
Workspace-scoped audit records
Provider configuration history
Analytics and error monitoring
Sentry
PostHog
Orgs
Invitations, membership boundaries, and a consistent workspaceId scope connect identity, data, and product access — for a solo space or a full organization.
Workspace
workspaceIdPersonal workspace
IdentityRecordsAccessBilling
Every user-owned record stays inside this scope.
Personal workspace provisioning
Workspace-scoped records
Membership and invitations
Better Auth
PostgreSQL
Email
Transactional email belongs to product workflows, with provider adapters behind a shared interface—never mixed with outreach.
I'm a marketer, not a full-time developer. Supastack brings auth, workspaces, billing, BYOK AI, email and themes together in one codebase. The AGENTS.md and prompts help me start building with Claude Code without learning every corner of the repo. It's a solid base for an AI SaaS.
I'm building Lixing, a local-first reflection app, so I didn't move it onto Supastack. I ran the monorepo on Windows and borrowed four patterns for my app: config, secure license storage, entitlements and a paywall. Those changes passed 26 tests behind a feature flag. I don't need auth or billing today, but I know where to look when Lixing needs a backend.
I'm using Supastack for my app's backend now. I wish I'd had it from the start; it would have saved me even more work.
Raven S.
I went through the repo in depth and ran the Rust tests. Few boilerplates ship a desktop option, so Supastack feels like a dream come true. The boundaries are written down and the code honors them — the desktop app never forks the web app's UI or auth.