← All decisions

Each organisation chooses its look; looks are defined in code

accepted

0024 — Each organisation chooses its look; looks are defined in code

  • Status: accepted
  • Date: 2026-10-26
  • Deciders: Derek

Context

Until now every organisation on ark saw the same member app. They could add a logo, pick one accent colour and pick a font pairing (branding, workstream D), but the overall look — colours, shapes, shadows, how buttons feel — was the same for everyone. An earlier principle said exactly that: the member app stays consistent across organisations; the public website is where each organisation customises.

The first organisation migrating onto ark — the community currently using internalize — has a member app its people already know. Moving them onto ark should not feel like moving house. They should arrive and recognise the place.

Decision

  1. Each organisation chooses a theme. A theme is a complete look: colours for light and dark mode, fonts, corner rounding, shadows, button feel, motion timing. Today there is one theme (ark (default)); the next will reproduce internalize’s look.
  2. Themes are defined in code, not built in a screen. A theme is a typed definition in the @ark/theme package that must supply every setting — if one is missing, the software won’t build. This keeps every theme complete and lets us learn how fine-grained theming needs to be before designing any tuning screen.
  3. Branding still applies on top. An organisation’s own accent colour and font always win over the theme’s.
  4. Who picks: for now a platform administrator picks an organisation’s theme from the tenant page. The database already allows an organisation’s own admins to change it; the screen for them comes later. This is a choice of preset, not a design tool.
  5. This supersedes “the member app stays consistent” for the member app. The public website keeps using the default theme for now; letting it follow the organisation’s theme is a separate, later decision.

What it means for you

  • Your members see your organisation’s chosen look on every page of the member app, including sign-in on a returning visit.
  • Nothing about your data changes. A theme is purely presentation; switching it is instant and reversible.
  • If you set a brand colour, it recolours highlights in any theme; under the default theme it also colours buttons and links, as it always has.

Guardrails

  • A theme can only supply values for a fixed, named list of settings, plus (later) a small set of named layout switches. It cannot add arbitrary styling aimed at particular screens. This is what keeps themes maintainable and what will make tuning controls possible later.
  • An automated check fails the build if any screen uses a colour or setting outside that list, so no part of the app can be left out of a theme.

Addendum — 2026-10-30: the internalize theme and layout switches

The second theme, internalize, now exists: internalize’s colours, fonts and rounded shapes in light and dark. Some differences between the two apps are about arrangement rather than colour: a list shown as separate cards or as one box with dividers, the “New thread” button floating at the bottom of a phone screen, tiny filled labels instead of outlined ones. These are named layout switches: a short, fixed list a theme picks from, just like its colours. They can’t be used to restyle a particular screen, which keeps the guardrail above intact. Two small changes apply to everyone: the notification bell now shows on phones, and “View site” moves into the phone menu.

References