Skip to content

Branding and Customization

Eric Fitzgerald edited this page Apr 8, 2026 · 2 revisions

Branding and Customization

TMI supports several branding and customization options that allow operators to tailor the application's appearance to their organization. Some options are configured on the TMI server and delivered at runtime via the GET /config endpoint. Others are set in the web application's environment files at build time (or overridden at container startup via TMI_* environment variables). A few are per-user preferences.

Configuration Summary

Capability Where Configured When Applied Config Key
Navbar, home page, and PDF report logo TMI server Runtime ui.logo_url
Organization name in footer TMI server Runtime ui.organization_name
Organization URL in footer TMI server Runtime ui.organization_url
Support link in footer TMI server Runtime ui.support_url
Data classification label (footer and PDF) TMI server Runtime ui.data_classification
Confidentiality warning (PDF reports only) TMI server Runtime ui.confidentiality_warning
User directory hyperlinks TMI server Runtime ui.user_hyperlink_template
User hyperlink provider filter TMI server Runtime ui.user_hyperlink_provider
Default theme for new users TMI server Runtime ui.default_theme
Suppress About link in footer TMI-UX environment Build time / container suppressAboutLink / TMI_SUPPRESS_ABOUT_LINK
Suppress Privacy and ToS links in footer TMI-UX environment Build time / container suppressPrivacyTosLinks / TMI_SUPPRESS_PRIVACY_TOS_LINKS
Operator name on About page TMI-UX environment Build time / container operatorName / TMI_OPERATOR_NAME
Operator contact on About page TMI-UX environment Build time / container operatorContact / TMI_OPERATOR_CONTACT
Operator jurisdiction on About page TMI-UX environment Build time / container operatorJurisdiction / TMI_OPERATOR_JURISDICTION
Light/dark/colorblind theme Per-user preference Runtime User preferences (synced to server)

Note: The TMI server's GET /config endpoint currently returns ui.default_theme from the settings service. The other ui.* fields listed above (logo, organization, support, data classification, confidentiality, user hyperlinks) are consumed by the TMI-UX client when present in the response but are not yet populated by the server's settings service. Until the server is updated to populate these fields, they will have no effect.

Server-Side Branding (Runtime)

These options are configured on the TMI server and delivered to the web application via the GET /config endpoint. Changes take effect without rebuilding the web application.

Custom Logo

The ui.logo_url field specifies a URL to a custom logo image that replaces the default TMI logo in the navigation bar, the home page, and in generated PDF reports.

Requirements:

  • Must serve image/png content type
  • Maximum file size: 2 MB
  • The URL must be accessible from the user's browser
  • The logo is pre-fetched and validated at application startup; if validation fails, the default logo is used

If no custom logo is configured, the default TMI logo is used.

Organization Identity

The footer can display your organization's name and link:

  • ui.organization_name - Displayed as text in the page footer
  • ui.organization_url - If set, the organization name becomes a hyperlink to this URL

Support Link

  • ui.support_url - Adds a support link to the page footer that opens in a new tab

Data Classification and Confidentiality

  • ui.data_classification - Displayed as a label in the page footer and included on the title page of generated PDF reports. Use this for classification markings such as "CONFIDENTIAL" or "INTERNAL USE ONLY".
  • ui.confidentiality_warning - Included on the title page of generated PDF reports. Use this for detailed confidentiality notices or handling instructions. This field does not appear in the web application UI.

User Directory Hyperlinks

  • ui.user_hyperlink_template - A URL template for linking user display names to an external directory. The placeholder {{user.email}} is replaced with the user's email address. Example: https://directory.example.com/?email={{user.email}}. Only https:// and http:// URLs are accepted; other schemes are rejected for security.
  • ui.user_hyperlink_provider - If set, user hyperlinks are only shown when the user authenticated with this specific provider ID (e.g., azure-ad). If not set, hyperlinks apply to all users.

Default Theme

  • ui.default_theme - Sets the default theme for users who have not saved a personal theme preference. Accepted values are auto (follows the user's operating system light/dark setting), light, or dark. If not set, the default is auto.

Web Application Settings (Build Time / Container Runtime)

These options are set in the TMI-UX environment files (e.g., src/environments/environment.prod.ts) and normally require rebuilding the web application to take effect. However, when running in a container deployment (using environment.container.ts), these values can be overridden at container startup via TMI_* environment variables. The server.js runtime serves a GET /config.json endpoint that maps TMI_* environment variables to their corresponding environment properties; the Angular app fetches this before bootstrap and patches the compiled-in defaults.

See Configuration-Reference for the full list of environment settings.

Footer Link Visibility

  • suppressAboutLink (env var: TMI_SUPPRESS_ABOUT_LINK) - Set to true to hide the About link in the footer. Default: false.
  • suppressPrivacyTosLinks (env var: TMI_SUPPRESS_PRIVACY_TOS_LINKS) - Set to true to hide both the Privacy Policy and Terms of Service links in the footer. Default: false. These two links share a single toggle and cannot be hidden independently.

Operator Information

The About page displays operator information configured in the environment. These values are read from the build-time environment by OperatorService and are not overridden by the TMI server's GET /config response (the server's operator.name and operator.contact fields are separate and are not currently used by the About page).

  • operatorName (env var: TMI_OPERATOR_NAME) - Name of the organization operating this TMI instance. Default: 'TMI Operator'.
  • operatorContact (env var: TMI_OPERATOR_CONTACT) - Contact information (email, URL, or other). Default: 'contact@example.com'.
  • operatorJurisdiction (env var: TMI_OPERATOR_JURISDICTION) - Legal jurisdiction of the operator. Default: '' (empty).

Per-User Theme

Users can choose a theme mode and a palette, which combine to produce the active theme. The available modes are:

  • Automatic - follows the operating system's light/dark preference
  • Light - always light
  • Dark - always dark

Each mode can be combined with either palette:

  • Standard palette - default color scheme
  • Colorblind-accessible palette - optimized for color vision deficiency

This produces six effective combinations (e.g., Automatic + Standard, Dark + Colorblind, etc.).

Theme preferences are stored per-user, synced to the server, and cached in localStorage. When a user has no saved preference, the server-configured ui.default_theme is used (see above); if that is also unset, the default is Automatic mode with the standard palette.

Related Pages

Home

Releases


Getting Started

Deployment

Operation

Troubleshooting

Development

Integrations

Tools

API Reference

Reference

Clone this wiki locally