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.

config.ts
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:

config.ts
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.

Nuxfire Production Kit

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.

© 2026 Nuxfire