Starter Kits · Starter kit
Typixir
A modular TypeScript SaaS starter kit: a Turborepo monorepo with a Next.js web app, a NestJS API and a NestJS worker.
Overview
Typixir is the TypeScript sibling of Phoenixir: the usual SaaS foundations, already built, in a Turborepo monorepo with a Next.js 16 web app, a NestJS 12 API on Fastify and a separate NestJS worker. Because the API is its own service with an OpenAPI document, mobile apps and third parties can call it too. A setup CLI generates your app with the modules, providers, locales and deploy target you pick, and an upgrade command brings in later kit releases.
Highlights
- Generate your app with only the modules you need: pnpm create-typixir
- Next.js 16 web app, NestJS 12 API and worker, managed with pnpm and Turborepo
- Accounts with Better Auth: email and password, magic links, TOTP two-factor, GitHub and Google
- Organizations with roles, invitations and an audit log, isolated with PostgreSQL row-level security
- Billing through Stripe, Polar or Lemon Squeezy: seats, trials, dunning emails and refunds
- BullMQ jobs in a separate worker, Socket.IO real time with presence
- AI SDK streaming with model fallback, tool calling and per-organization spend limits
- Blog, docs, sitemap, hreflang and JSON-LD for SEO
- Quality gates: Biome, tsc, Vitest with Testcontainers, Playwright with axe, Knip and turbo boundaries
Why teams use it
Months of foundation, done
Accounts, organizations, billing, jobs and real time are built and tested, so your first sprint goes on your product.
An API mobile apps can use
The NestJS API is its own service with an OpenAPI document, so your React Native app can share it with the web.
Take only what you need
The setup CLI generates an app with the modules, providers, locales and deploy target you pick, and can upgrade it later.
Guard rails included
Biome, tsc, Vitest, Playwright with axe, Knip and turbo boundaries run on every change.
How it compares
vsBuilding the foundation from scratch
| Aspect | Building the foundation from scratch | Typixir |
|---|---|---|
| Accounts | Choosing a library, wiring sessions and cookies across two apps, recovery codes | Better Auth with magic links, TOTP and OAuth, already wired |
| Organizations | Designing tenancy and proving no query leaks across tenants | Roles, invitations and an audit log, isolated with row-level security |
| Billing | Webhook verification, idempotency, plan changes, each provider's events | Stripe, Polar or Lemon Squeezy behind one interface |
| Jobs | A queue, retry policy, schedules and a process that can fail safely | BullMQ in a separate worker |
| Quality gates | Setting up and maintaining the same checks | Already running |
| Ownership | Every line is yours | Every line is yours too: full source, change anything |
Time it saves
| Work you skip | Estimated hours |
|---|---|
| Monorepo, tooling and CI quality gates | 20–40 hours |
| Accounts: passwords, magic links, 2FA and OAuth | 50–90 hours |
| Organizations, roles, invitations and row-level security | 40–80 hours |
| Billing with three providers: seats, trials and dunning | 60–120 hours |
| Worker with jobs and schedules | 20–40 hours |
| Real time with presence | 15–30 hours |
| AI streaming with model fallback and spend limits | 20–40 hours |
| Email templates and translations | 20–40 hours |
| Blog, docs and SEO | 30–60 hours |
| Total saved | 275–540 hours |
Let's talk
Need something like this in your app?
Tell us what you are building. You will get a reply within two business days.