Custom Branding
FastSchema ships a single dashboard bundle embedded in the server binary, yet each deployment can present its own brand. The server exposes the brand through a public endpoint and the dashboard applies it at runtime, so you can white-label the login screen, sidebar, browser tab, and favicon without rebuilding anything.
Branding is configured entirely through environment variables. Point several deployments at the same image and give each one a different brand.
Environment variables
| Name | Default | Description |
|---|---|---|
| APP_BRAND_NAME | APP_NAME (falls back to FastSchema) | Brand name shown on login, setup, the sidebar, and the browser tab title |
| APP_BRAND_DESCRIPTION | - | Tagline shown under the brand name in the sidebar, and used as the page meta description |
| APP_BRAND_LOGO | - | Brand logo as a URL, data-URI, or inline SVG string |
| APP_BRAND_FAVICON | - | Favicon as a URL, data-URI, or inline SVG string |
Any variable left empty keeps the built-in FastSchema default for that field.
Example
APP_BRAND_NAME=Acme
APP_BRAND_DESCRIPTION=Internal Platform
APP_BRAND_LOGO=https://acme.example/logo.svg
APP_BRAND_FAVICON=https://acme.example/favicon.pngdocker run \
-e APP_BRAND_NAME=Acme \
-e APP_BRAND_DESCRIPTION="Internal Platform" \
-e APP_BRAND_LOGO=https://acme.example/logo.svg \
-p 8000:8000 \
-v ./data:/fastschema/data \
ghcr.io/fastschema/fastschema:latestLogo and favicon formats
APP_BRAND_LOGO and APP_BRAND_FAVICON each accept three forms:
- URL -
https://acme.example/logo.svg. Prefer HTTPS: an HTTP asset on an HTTPS dashboard triggers mixed-content blocking. - Data-URI -
data:image/svg+xml;base64,...ordata:image/png;base64,.... Self-contained and immune to mixed-content issues. - Inline SVG - a raw string starting with
<svg ...>...</svg>.
Inline SVG is sanitized on the client before it is rendered (script tags, event handler attributes, and external references are stripped) as a defense-in-depth measure. Because these values come from your deployment environment and not from end users, the risk is low, but the sanitizer still runs.
Theme color
There is no separate brand color setting. The dashboard does not recolor its chrome per brand: adjust color by supplying a logo/favicon asset that already uses your brand colors.
Known limitation: initial flash (FOUC)
The embedded index.html carries the static FastSchema tab title and favicon. The custom brand is fetched and applied by JavaScript once the dashboard loads, so on the very first paint the browser tab may briefly show the FastSchema title and favicon before switching to your brand. This flash is expected and only affects the tab title and favicon, not the in-page UI.
The PWA manifest (manifest.json) name is static and is not affected by these environment variables.