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.
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 dev2. 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.