Open Source|All improvements go through Pull Requests with automated CI checks before review by@Leo-Galli|Join Discord|Contributing guide
Whitelabeling

Dynamic whitelabeling

Every branding surface is configurable at runtime from the Admin Panel. No rebuild required — change a logo, accent color or platform name and the next page load reflects it.

What you can change

SurfaceExample
Platform name and taglineHeader, footer, emails, meta tags
Logo URLsHeader, footer, invoices
Accent themeEmerald / Indigo / Amber via CSS variables
Border radius and fontDesign tokens
Navigation linksSite header and sitemap
Email templatesWorker email rendering
Custom domainsEdge routing per tenant
Module togglesFeature flags in the UI

How it works

  1. Admin Panel writes a WhitelabelConfig row in PostgreSQL.
  2. GET /api/whitelabel?organization=<slug> reads Redis (300s TTL), falls back to PostgreSQL.
  3. The website fetches this and deep-merges over the static default.
  4. WhitelabelProvider sets data-accent on <html>, activating CSS variables.

First paint uses the static JSON — zero layout shift.

Quick links

  • Whitelabel API — endpoints, email templates, custom domains
  • Theming — CSS tokens, accent colors, design system

See also: Admin panel, Backend.