Custom Terminology
Feature Detail
Description
Allows Org Admins to override the default display labels used throughout the platform to match their organization's own vocabulary. Each organization may use different terms for the same roles and concepts (e.g. "Familie" instead of "Kontakt", or a different word for "Coordinator"). The terminology editor persists per-org label overrides which are served to all clients - mobile app and admin portal - and applied at render time so users always see their organization's language. Labels are cached offline on mobile for use when the device has no connectivity.
Sources & reasoning
Directly described in the Mobile App Architecture section (line 305-307) as a built-in capability, and grouped with organization settings in the MVP admin scope (line 325). Multiple organizations explicitly use different terminology for the same concepts, making this a launch-critical capability rather than a deferred enhancement.
-
docs/source/likeperson.md · line 305-307Organization labels system - per-org terminology overrides fetched from backend and cached offline (currently: `contacts`, `my_contacts`, `peer_mentors`; extensible to singular forms and role terms
-
docs/source/likeperson.md · line 325Organisasjonsinnstillinger og terminologikonfigurasjon
Analysis
Terminology customization is a key differentiator that lets a single codebase serve organizations with distinct vocabularies without per-tenant code branches. NHF, HLF, Blindeforbundet, and Barnekreftforeningen all use different terms for the people they serve and the roles in their organizations. Forcing a fixed vocabulary would create friction and reduce adoption - volunteers who see unfamiliar labels are more likely to disengage. The labels system also future-proofs onboarding: new tenants configure their vocabulary at setup rather than filing change requests with Norse. This directly supports the incremental rollout strategy (§1.5) where the app must feel native to each organization.
Labels are stored in the organization_labels table (one-to-many from organizations). The backend exposes the full label map as part of the session bootstrap response so the mobile app and admin portal can apply overrides at startup. The Flutter app stores labels in the Drift offline database and falls back to hardcoded defaults if the network fetch has not yet succeeded. The Next.js admin portal reads labels server-side and injects them into the React context. The editor UI is a simple key-value table restricted to Org Admin; adding new label keys requires a backend schema change, so the UI only exposes keys already registered in the system. Current registered keys: contacts, my_contacts, peer_mentors, peer_mentor, coordinator, contact.
Quality Assurance
Organization Administrator (primary)Organization Administrator
Quick UAT
- Logg inn i Admin-portalen som Organisasjonsadministrator. Gå til Organisasjonsadministrasjon → Tilpasset terminologi.
- Bekreft at terminologieditoren viser en liste over konfigurerbare etiketter med nåværende verdier (f.eks. 'Kontakt', 'Likeperson', 'Koordinator').
- Klikk pĂĄ redigeringsfeltet for etiketten 'Kontakt' og skriv inn en organisasjonsspesifikk verdi, f.eks. 'Familie'.
- Trykk Lagre. Bekreft at en bekreftelsesmelding vises og at den nye verdien er synlig i listen.
- Ă…pne mobilappen som en bruker i samme organisasjon og naviger til et skjermbilde som bruker kontaktetiketten. Bekreft at 'Familie' vises i stedet for 'Kontakt'.
- GĂĄ tilbake til Admin-portalen og tilbakestill etiketten til standardverdien 'Kontakt'. Bekreft at endringen er lagret og at mobilappen igjen viser 'Kontakt'.
Quick UAT — Accessibility
-
Logg inn i Admin-portalen som Organisasjonsadministrator. Gå til Organisasjonsadministrasjon → Tilpasset terminologi.
- Screen reader Sideoverskrift 'Tilpasset terminologi' annonseres ved navigasjon; lenker i sidefeltet er tilgjengelige via Tab.
- Keyboard / focus Tab-rekkefølge: sidefeltsnavigasjon → sideoverskrift → terminologiliste.
- Focus visibility Synlig fokusring pĂĄ aktiv navigasjonslens i sidefeltet.
-
Bekreft at terminologieditoren viser en liste over konfigurerbare etiketter med nåværende verdier (f.eks. 'Kontakt', 'Likeperson', 'Koordinator').
- Screen reader Skjermleser annonserer nøkkelnavn og gjeldende verdi for hvert listeelement.
- Keyboard / focus Piltaster navigerer mellom listeelementer; Tab nĂĄr redigeringsknapp for hvert element.
- Zoom Liste med etiketter er lesbar og ikke avskĂĄret ved 200 % zoom.
- Contrast Etikettnøkkel og gjeldende verdi har minst 4.5:1 kontrast mot bakgrunn.
-
Klikk pĂĄ redigeringsfeltet for etiketten 'Kontakt' og skriv inn en organisasjonsspesifikk verdi, f.eks. 'Familie'.
- Screen reader Inndatafeltet annonseres med etiketten 'Kontakt – rediger verdi'; gjeldende verdi leses opp.
- Keyboard / focus Redigeringsknapp nĂĄs med Tab og aktiveres med Enter/Space; felt mottar inntasting direkte.
- Focus visibility Synlig fokusring pĂĄ inndatafeltet; felt er merket med tilgjengelig navn.
- Touch target Redigeringsknapp og inndatafelt er minst 24Ă—24 CSS px.
-
Trykk Lagre. Bekreft at en bekreftelsesmelding vises og at den nye verdien er synlig i listen.
- Screen reader Bekreftelsesmelding leses opp av skjermleser umiddelbart etter lagring.
- Keyboard / focus Lagre-knapp nĂĄs med Tab og aktiveres med Enter.
- Focus visibility Fokus flyttes til bekreftelsesmeldingen eller tilbake til den redigerte listerad etter lagring.
- Live region 'Terminologi lagret. Kontakt er nĂĄ satt til Familie.'
-
Ă…pne mobilappen som en bruker i samme organisasjon og naviger til et skjermbilde som bruker kontaktetiketten. Bekreft at 'Familie' vises i stedet for 'Kontakt'.
- Screen reader Skjermleser i mobilappen annonserer den oppdaterte etiketten 'Familie' pĂĄ relevante skjermelementer.
- Zoom Etiketten er lesbar ved 200 % skriftstørrelse uten tekstoverlapping.
- Contrast Den nye etiketten 'Familie' har minst 4.5:1 kontrast i mobilappens fargepalett.
-
GĂĄ tilbake til Admin-portalen og tilbakestill etiketten til standardverdien 'Kontakt'. Bekreft at endringen er lagret og at mobilappen igjen viser 'Kontakt'.
- Screen reader Bekreftelsesmelding for tilbakestilling leses opp av skjermleser.
- Keyboard / focus Hele tilbakestillingsflyten er gjennomførbar uten mus.
- Live region 'Terminologi tilbakestilt. Kontakt er gjenopprettet til standardverdi.'
Role Boundaries
2 role(s) must NOT access this feature-
Peer Mentor
Skjerm finnes ikke i mobilappens navigasjon; direkte URL til Admin-portalen returnerer 401/403.
-
Coordinator
Skjerm finnes ikke i mobilappens navigasjon; Admin-portalen er ikke tilgjengelig for koordinatorer; direkte URL returnerer 401/403.
Expected End State
Den organisasjonsspesifikke etikettoverstyrningen er lagret i databasen og reflekteres umiddelbart i Admin-portalen og i mobilappen for alle brukere i organisasjonen, inkludert i frakoblet modus etter neste synkronisering.
Components (21)
Shared Components
These components are reused across multiple features
User Stories
No user stories have been generated for this feature yet.