White label branding
Keanan treats branding as configuration. A deployment carries its identity in environment variables, and every surface reads from the same source.
The variables
Section titled “The variables”| Variable | Controls |
|---|---|
BRAND_PRODUCT_NAME |
Product name in apps, emails and API docs |
BRAND_COMPANY_NAME |
Company name in emails and PDF footers |
BRAND_COMPANY_ADDRESS |
Legal address on invoices and emails |
BRAND_COMPANY_EMAIL |
Contact address shown to employees |
BRAND_WEBSITE |
Link target in email footers |
BRAND_COLOR_PRIMARY |
Primary color for emails and PDFs |
BRAND_COLOR_PRIMARY_DARK |
Dark variant of the primary color |
BRAND_COLOR_ACCENT |
Accent color for emails and PDFs |
BRAND_LOGO_PATH |
Logo file used on generated PDFs |
How clients consume it
Section titled “How clients consume it”The public endpoint returns the active branding:
GET /api/v1/branding/{ "product_name": "NordwindHR", "company_name": "Nordwind Logistik GmbH", "color_accent": "#4C7DE0"}The admin dashboard requests this at load and renders the name and logo from it. The employee app does the same. Because the value comes from the server, rebranding never requires a client release.
A worked example
Section titled “A worked example”export BRAND_PRODUCT_NAME=NordwindHRexport BRAND_COMPANY_NAME="Nordwind Logistik GmbH"export BRAND_COMPANY_EMAIL=people@nordwind.exampleexport BRAND_COLOR_ACCENT="#4C7DE0"Restart the web container and the platform introduces itself as NordwindHR: welcome emails, invoice PDFs, the dashboard sidebar and the sign in screen included.