Dashboard template
templates/dashboard — a multi-tenant SaaS dashboard / control-plane starter, genericized from a real shipped product.
Stack
A pnpm + Turbo monorepo:
apps/{web,admin,api,e2e}+ 16 shared packages- Supabase SSR auth with jose JWKS, org-scoped RBAC + impersonation
- Drizzle + Postgres with a transactional outbox
- Hono API
- shadcn dashboard kit — sidebar, data-table, command palette, empty-state, status-badge
The entire product domain is reduced to a single example Item resource (one table, one CRUD route, one dashboard page, one admin view) that demonstrates the org/RBAC pattern end to end — add your own resources from there.
Tokens
9 tokens, all prompted unconditionally on every scaffold — the CLI doesn't gate token prompts by which modules you enable:
| Token | Prompt | Default |
|---|---|---|
__APP_NAME__ | Application name | Acme Dashboard |
__PKG_SCOPE__ | Workspace package scope | @app |
__COLOR_PRIMARY__ | Primary brand color | oklch(0.62 0.13 250) |
__DOMAIN__ | Primary auth/email domain | example.com |
__SITE_URL__ | Production URL of the web app (post-deploy availability checks) | https://app.example.com |
__COGS_BRAND__ | Brand slug for @cogs transactional email | acme |
__CF_ZONE_ID__ | Cloudflare DNS Zone ID | REPLACE-WITH-CLOUDFLARE-ZONE-ID |
__CF_ACCOUNT_ID__ | Cloudflare Account ID | REPLACE-WITH-CLOUDFLARE-ACCOUNT-ID |
__SES_REGION__ | AWS SES region | us-east-2 |
__DOMAIN__, __COGS_BRAND__, __CF_ZONE_ID__, __CF_ACCOUNT_ID__, and __SES_REGION__ matter mainly when the auth module is enabled — they configure the auth-email infrastructure — but the CLI still prompts for (or defaults) all 9 regardless of which modules you --enable.
Modules
| Module | Description | Default |
|---|---|---|
billing | Stripe billing | off |
email | Transactional email (Resend) | off |
admin | Admin app | on |
auth | Open-signup auth (Supabase SSR flow + Turnstile captcha + @cogs new-device email + SES/Cloudflare/Turnstile Terraform infra) | off |
mcpAdmin | MCP service-token admin panel — create/revoke scoped service-account tokens from apps/admin (see the mcp-tool-server skill) | off |
Scaffold
node bin/create-client.mjs acme-ops \
--template dashboard \
--out ../acme/02-repos/acme-ops \
--enable billing
See CLI Reference for the full flag list.