Environment Checklist
Required production environment variables for Cascades.
Cascades keeps the template platform foundation, but production configuration should be reviewed as Cascades infrastructure rather than starter-kit scaffolding.
Secret delivery (Doppler)
Development defaults wrap doppler run (npm run dev, workers, Prisma CLI helpers — see scripts/with-doppler.cjs). Use Doppler project cascades with config dev locally; mirror the same injection pattern on a VPS (doppler run -- node …). Other Noir Stack repos should each use their own Doppler project (aitracer, hexarch, ledgerbill, etc.), not one shared project.
After login: npm run doppler:validate. Prefer CASCADES_DOTENV_BOOTSTRAP=false in Doppler so .env* files on disk cannot override injected secrets (see root next.config.js). Escape hatch without the CLI: CASCADES_NO_DOPPLER=1 with env provided another way (CI secrets).
Required groups
Application
NEXT_PUBLIC_APP_URL— public application URL.DATABASE_URL— Prisma database connection string.
Identity provider (OIDC — example naming in many builds)
Variable names vary by issuer; Cascades deployments often expose AUTH0_*-style placeholders mapped from any OIDC provider (Okta Entra Azure AD-compatible issuers Keycloak realms etc.).
AUTH0_SECRET— application session encryption secret.AUTH0_BASE_URL— canonical Cascades app URL.AUTH0_ISSUER_BASE_URL— OIDC issuer / tenant URL (or setAUTH0_DOMAINhost-style and Cascades derives an issuer URL — seeenv/server.mjs).AUTH0_CLIENT_ID— OAuth client identifier.AUTH0_CLIENT_SECRET— OAuth client secret.
Treat these values as OIDC_ISSUER / client metadata equivalents when you migrate away from naming that references a single vendor.
Commercial billing (optional — hosted SKU only)
Omit Stripe variables entirely for deployments that skip hosted billing—see Stripe Billing internals when you intentionally enable checkout.
STRIPE_SECRET_KEY— server-side Stripe API key.STRIPE_WEBHOOK_SECRET— webhook signing secret.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY— publishable key.NEXT_PUBLIC_STRIPE_PRO_MONTHLY_PLAN_IDNEXT_PUBLIC_STRIPE_PRO_YEARLY_PLAN_IDNEXT_PUBLIC_STRIPE_BUSINESS_MONTHLY_PLAN_IDNEXT_PUBLIC_STRIPE_BUSINESS_YEARLY_PLAN_ID
Review checklist
- No stray
NEXTAUTH_*placeholders should linger from abandoned NextAuth scaffolding. STRIPE_API_KEYlegacy fallback—preferSTRIPE_SECRET_KEYin production billing stacks.- When Stripe is enabled, test/live Stripe keys align with webhook endpoints / price identifiers.
- Production values belong in encrypted environment storage, not committed files.
- Rotate any key that was exposed in local files, chat transcripts, logs, or screenshots.
Do not commit populated .env* files. Prefer Doppler (or your platform secret store). Legacy local files are optional and must never override injected secrets when using CASCADES_DOTENV_BOOTSTRAP=false.