For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /docs/web/tech-stack.md (or send Accept: text/markdown).
Tech stack
The technologies behind the kit and the role each one plays.
Before you begin
Open your downloaded supastack project in Visual Studio Code using File → Open Folder, then choose Terminal → New Terminal. The repository root is the folder containing package.json, apps and packages. Run the command below there and leave its terminal open. If a command is not recognized, finish the tool installation guide before continuing.
Read the platform tutorial first. A server is the app process that answers browser or phone requests. Web reads apps/web/.env.local, Expo reads apps/mobile/.env.local, and database migration commands read root .env. The no-database /dashboard demonstration is separate from real /auth accounts, which need migrated Postgres. A phone or desktop-only checkout needs a separately running Web backend.
- Install the tools and get the code
- Learn commands, files and configuration
- Complete the Web first-run tutorial
corepack pnpm --filter @supastack/web devApplication stack
The web app is a Next.js application composed from shared TypeScript packages — the same packages feed the Expo mobile app. Product chrome uses CSS modules over design tokens, so there is no runtime CSS-in-JS to debug, and object storage is S3-compatible. The tools below are the deliberate defaults.
Next.js + React
The web app runs Next.js 16 with the App Router and React 19 server components.
TypeScript + Turborepo
TypeScript strict mode applies across the whole pnpm workspace, and Turborepo coordinates builds.
Better Auth
Better Auth is the identity engine; an Auth.js engine is available for teams that standardize on it.
Drizzle + PostgreSQL
Persistence runs through Drizzle ORM on PostgreSQL — the schema and helpers every record flows through.
Billing
Stripe billing is the default, and a Lemon Squeezy adapter is included.
Trigger.dev
Background jobs run on Trigger.dev.
Transactional email
Transactional email sends through Resend or AWS SES.
Sentry + PostHog
Expo
The Expo mobile app consumes the same TypeScript packages, so contract changes typecheck against both surfaces at once. Expo ships for iOS and Android.
Shared modules
Every cross-cutting capability lives in a package with a small contract: auth, db, billing, ai, jobs, email, storage, observability, config, i18n, and api. Applications compose them; product domain logic stays outside the kit.
Each provider-backed module ships a fake or local adapter so the default test and development loop never calls a billable service.
Verification tooling
Vitest covers unit and integration behavior, Playwright covers browser flows, and ESLint plus Prettier keep the code consistent. The deterministic suite runs without provider credentials; real-provider acceptance is a separately gated path.
corepack pnpm test # deterministic unit + integration
corepack pnpm check # lint, types, tests, format
corepack pnpm build # production builds
corepack pnpm test:e2e # browser flows