Skip to main content

Theme and branding

How a tenant's apps look and what they say about whose they are. All of it changes on an installed app without a release. A tenant's cohorts can't brand separately. What only an app build changes (the typeface, the icon, the app's name, the screen before sign-in) is not here.

brand.theme​

{ "brand": "#0F2664", "action": "#1F6FEB" }
  • Two colours, each #RRGGBB. brand fills the home screen and the bar at the top of every other screen; action is the buttons and everything tappable, with white text on it. Everything else is a fixed colour the same for every tenant, so a warning always looks like one.
  • action must reach 3:1 against white, the colour of the text on it, or the save is refused. The text on brand is chosen by its lightness, white or black.
  • The apps follow the phone's light or dark setting. The two colours are the same in both.
  • action also colours the portal for that tenant's staff.
  • A tenant with an app of its own has its colours and strings set by that app's build. Those rows can't be edited; they change with the next build.

The tenant's logo is the tenant record's own (assetId, the Logo on the tenant form). It shows at the top of the home screen, on the sign-up page and in the portal's tenant switcher, and must be a public asset.

brand.strings​

Three strings: coachTitle (an unnamed member of staff in a chat), tagline (under the logo before sign-in) and appGreeting (the top of the home screen, replacing a greeting that changes with the hour). Each is at most 80 characters, and a longer one is dropped, not trimmed, so the app's own wording shows.

legal.pages​

Five markdown pages: consent (shown straight after sign-in, the only one a participant can't skip), and privacyPolicy, terms, about and helplines (rows under About in Settings, in that order). A page a tenant leaves empty is the DEFAULT tenant's, which carries the consent, privacy policy and terms. A page empty on both has no row; a page over 32,768 characters is treated as empty, so its row disappears.

home.header and brand.attribution​

home.header holds the home screen's header photo (photoAssetId, a landscape image fading into the brand colour) and a logo to sit on it (logoAssetId); both must be the tenant's own public, ready images, or the save is refused. With no logo there, the tenant's logo is used, on a white tile when there is no photo.

brand.attribution is the credit on the right of the header: a label (up to 80 characters) above an optional logoAssetId, telling a participant whose app this is. A tenant with none takes the DEFAULT tenant's; { "suppress": true } shows none.