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.brandfills the home screen and the bar at the top of every other screen;actionis 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. actionmust reach 3:1 against white, the colour of the text on it, or the save is refused. The text onbrandis 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.
actionalso 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.