Configuration
Choose your feature flags in config.ts.
Choose your feature flags. Disable in flags any integration you won't use (Stripe, Paddle, websockets, queues, whichever email providers you don't need) — this reduces how many secrets you have to configure.
Your identity is not set in this file: the brand name, your production domain and the full sender email are the BRAND_* variables in the Branding section of your stage's env file — the single place they live. Fill them in with your credentials in Secrets; Environment Variables explains each one.
export const flags: {
stripe?: boolean;
paddle?: boolean;
googleAuth?: boolean;
githubAuth?: boolean;
resend?: boolean;
mailgun?: boolean;
ses?: boolean;
sparkPost?: boolean;
smtp?: boolean;
websockets?: boolean;
cron?: boolean;
jobsQueue?: boolean;
} = {
stripe: true,
paddle: true,
githubAuth: true,
googleAuth: true,
resend: true,
websockets: true,
jobsQueue: true,
};
The same file also declares layers — separate from flags, and about the Nuxt Layers that get compiled into apps/app at all, not about which Cloudflare resources get provisioned:
export const layers = {
// Always extended, never toggleable — every tenant needs them.
core: ["teams", "billing", "notifications", "admin"] as string[],
// Toggleable per build/deploy. `false` drops the layer's pages, components
// and Nuxt config from the bundle entirely — it does NOT drop its tables
// from the database schema (see Database).
features: {
kanban: true,
} satisfies Record<string, boolean>,
};
core lists the four business-domain layers every deployment ships (multi-tenancy/RBAC, billing, notifications, the platform admin console) — see Project Structure. features is where an optional layer like kanban gets turned off for a build that doesn't need it.
Prompt for AI agents:
Open config.ts. Ask the user which integrations they want before
editing the flags object — do not guess or invent any of these values.
The domain, sender email and brand name are not in this file: they are
the BRAND_* variables the user fills in their own env file — never
edit or fill those in yourself. Only touch layers.features if the user explicitly asks to
disable an optional layer (e.g. kanban) — never touch layers.core.
Next
Secrets — load your credentials into SST's vault.
Ready to build and launch your SaaS?
Get 100% full source code ownership, zero proprietary wrappers, and architecture engineered for millions of requests on Cloudflare.