← Starters

Production-shaped path

Begin with the common parts of a SaaS product connected.

The SaaS starter is a reference monorepo for teams that already know they need accounts, tenant administration, subscriptions, workers, mobile clients, and deployment.

1. Run the local reference app

Local development uses PostgreSQL in Docker and a development sign-in path. Replace that shortcut with your identity provider before deployment.

terminal
bash
git clone https://github.com/happyvertical/smrt-saas-starter.git my-app
cd my-app
pnpm install
cp .env.example .env
pnpm services:up
pnpm db:migrate
pnpm db:seed
pnpm --filter @happyvertical/smrt-saas-web dev

2. Learn the repository by responsibility

apps/web

SvelteKit public site, onboarding, account area, tenant admin, billing, and MCP routes.

apps/worker

Queued and scheduled jobs for subscription reconciliation and usage checks.

apps/mobile

Android and iOS shells using the shared s-m-r-t mobile foundation.

packages/app-objects

The starter’s objects and subscription or usage services.

packages/app-ui

Reusable SaaS interface components built on s-m-r-t UI.

manifests

Kubernetes base and environment overlays for deployment.

3. Replace the example domain, not the foundations

Start in packages/app-objects. Keep the tenant, membership, permission, session, and generated-interface patterns while replacing the sample product objects and services with your own.

  • Choose which onboarding mode the product needs: public, invite-only, or request access.
  • Replace example plans, entitlements, and usage measures.
  • Add domain navigation to the manifest-driven AdminShell.
  • Keep reusable improvements upstream in s-m-r-t rather than inside the starter.

4. Use the same foundation guides

The starter has more finished surfaces, but its data and access model is the same. Read objects and collections, then continue through tenants, users, memberships, pages, and interfaces in the left navigation.