Introduction
TSKit is a SaaS starter kit built on TanStack Start. It comes with authentication, billing, teams, email, storage, and more, all wired together so you can skip the boilerplate and start building your product.
What’s included
Section titled “What’s included”- Authentication - Email/password, GitHub and Google OAuth, two-factor authentication, email verification, and password reset. Built on Better Auth with a Drizzle adapter.
- Billing - Stripe checkout, subscription management, webhooks, customer portal, and plan-based entitlements. Subscriptions are org-scoped, meaning they belong to teams, not individual users.
- Teams - Multi-tenant organizations with roles (owner, admin, member), email invitations, and a team switcher. Every user gets a personal team on signup.
- Email - Transactional templates built with React Email, sent through Resend. The email driver is swappable.
- Storage - File uploads through Cloudflare R2 or any S3-compatible provider. Also driver-swappable.
- Database - PostgreSQL with Drizzle ORM, migrations, and a seed script.
- Design system - Selia UI components with Tailwind CSS v4.
- Admin dashboard - User management, subscriptions, plans, and audit logs.
- Audit logging - Records who did what across the entire app.
- Rate limiting - Per-route rate limiting with a pluggable driver.
Tech stack
Section titled “Tech stack”Framework
Section titled “Framework”TSKit is built on TanStack Start, a full-stack React framework with SSR, file-based routing, and typed server functions. It runs on React 19, uses TypeScript in strict mode, and Bun as the package manager and runtime.
Database
Section titled “Database”PostgreSQL with Drizzle ORM for type-safe queries, schema definitions, and migrations.
Authentication
Section titled “Authentication”Better Auth handles authentication with a Drizzle adapter. Supports email/password, social providers (GitHub, Google, and more), two-factor authentication, and email verification out of the box.
Integrations
Section titled “Integrations”Billing, email, and storage are built on a driver system that makes providers swappable. Each integration follows the same config-driver-facade pattern, so you can switch providers or add new ones without changing application code. See the architecture page for how this works.
- Billing - Stripe and Polar
- Email - Resend and SendGrid, with templates built using React Email
- Storage - Any S3-compatible provider (Cloudflare R2, AWS S3, MinIO, etc.)
- Rate limiting - In-memory by default, pluggable for Redis or other backends
Design system
Section titled “Design system”Selia UI provides a set of ready-to-use components styled with Tailwind CSS v4 and an OKLCH color system. Components are copied into your project so you own the code and can customize them freely.
Next steps
Section titled “Next steps”- Installation - Get TSKit running locally.
- Architecture - How the codebase is organized and why.