Brand Configuration
Customize identity, logo, quotas and copy, then check public and signed-in surfaces.
Complete first login before customizing. Product choices, copy, visuals and resource identities have different owners.
1. Set identity and quotas
Use productSchema, product and catalog in packages/config/src/index.ts.
| Field | Purpose | Consideration |
|---|---|---|
name | Display name and authentication issuer | Update copy as well as the logo |
slug | Product ID/default resource prefix | Lowercase letters, digits and hyphens |
supportEmail | Support contact | Use your own address |
quotas.welcomeCredits | Initial grant, default 30 | Stable ledger operation prevents duplicates |
quotas.chatCredits / summaryCredits | Stream/summary charge, defaults 1 / 5 | Keep UI explanations aligned |
quotas.storedFiles | User file count, default 100 | Enforced on the server |
billing.enabled / defaultGateway | Enabled/default providers | Empty until products and secrets are ready |
Keep schema validation and change the parsed product input, for example:
export const product = productSchema.parse({
name: 'Your Product',
slug: 'your-product',
supportEmail: '[email protected]',
quotas: { welcomeCredits: 30, chatCredits: 1, summaryCredits: 5, storedFiles: 100 },
billing: { enabled: [] }
})publicConfig() exposes selected public fields only. Never spread root environment variables or all Worker bindings into browser configuration.
2. Replace the mark and brand links
- Image:
apps/web/public/logo.png. - Shared brand:
apps/web/src/components/brand.tsx, used across public/auth/workspace surfaces. - Head metadata:
apps/web/src/lib/seo.tsandroutes/__root.tsx. - Public content: paired
apps/web/src/content/*.en.mdxand*.zh.mdx.
Check actual image dimensions and remove references to obsolete assets such as favicon.svg. Worker APP_URL owns the site origin; renaming the product does not change authentication origins.
3. Copy and theme
Put derivative copy in packages/i18n/messages/en.mvp.json and zh.mvp.json. Base files define keys; keep both overrides aligned rather than scattering product-specific strings through components.
Theme tokens live in apps/web/src/styles.css. Current typography is Geist Sans, Geist Mono and Fraunces. shadcn components live in apps/web/src/components/ui. See Components and themes.
4. Catalog and infrastructure
Flare's catalog sells your product; it is separate from MuseMVP website checkout. Configure stable plan IDs, integer minor-unit amounts, currency, credits and provider mappings using Billing.
product.slug does not override explicit production names in packages/cli/src/target-resources.ts. A new derivative must choose its own five names. An existing deployed project should preserve its current resource identities during upgrades.
Verify
pnpm check:contracts
pnpm type-check
pnpm buildInspect both languages on home, login, /app and pricing. Name, logo, support contact, quotas and plans must agree. Check both themes and 320px width. Restart locally after environment changes; use deployment tooling for production changes.
Continue with Environment variables.