medium complexity extracted Contacts Confidence: 100%
20
Components
2
Shared
0
User Stories
Yes
Analyzed

Description

Unified contact management combining list browsing, search, detail viewing, and editing capabilities for peer mentors and coordinators. Users can browse their assigned contacts, perform basic search across names and identifying fields, drill into individual contact records to see history and relationships, and edit contact information with proper validation. The list view supports role-specific filtering so peer mentors see their own contacts while coordinators see broader sets within their local association. Detail and edit screens surface organization-specific terminology (e.g. "Familie", "Bruker") via the labels system.

Sources & reasoning

Blueprint explicitly merges contact-list-search and contact-detail-edit into a single Contacts feature. Marked MUST/Phase 1 in the matrix and listed in MVP mobile screens (lines 219-220), so target_release is MVP.

  • Basic search (contact og notater) | ✓ | ✓ | ✓ | ✓ | ✓ | MUST | 1
  • docs/source/likeperson.md · line 219-220
    Contacts list with role-specific views Contact detail, edit, and peer mentor profile screens
  • Organization labels system - per-org terminology overrides fetched from backend and cached offline (currently: `contacts`, `my_contacts`, `peer_mentors`
  • contacts | Contacts | Contact List & Search, Contact Detail & Edit, Caregiver & Next-of-Kin

Analysis

Business Value

Contacts are the primary operational entity around which every peer mentor's day revolves - activities, notes, assignments, and reports all link back to a contact. Without fast, reliable contact list, search, and edit capabilities, the entire activity registration flow collapses, because mentors cannot find the person they are logging an interaction for. Basic search across contact and notes was flagged as a MUST in the prioritization matrix by all four organizations plus Norse Test. Merging list/search with detail/edit into a single feature also reduces UI fragmentation and accelerates MVP delivery, since these screens share the same contact data model, terminology overrides, and offline sync paths. A coherent contacts experience is the foundation that activity registration, notes, and proxy reporting depend on.

Implementation Notes

Implement on Flutter mobile using Riverpod for state and Drift+SQLCipher for offline-first persistence, with optimistic mutations and automatic rollback on failure. The contact list uses paginated queries against the REST API (`/api/v1/contacts`) with local cache fallback when offline. Search runs against the local Drift index first for instant results, then reconciles with backend results when connectivity returns. Display strings ("Contact", "My Contacts") MUST resolve through the Organization Labels system so per-tenant terminology overrides (e.g. NHF's "Familie") render correctly. All interactive elements must meet WCAG 2.2 AA: 24x24 touch targets, 4.5:1 contrast, semantic labels for VoiceOver/JAWS, keyboard navigation. Edit screens validate inputs, surface clear error messages with remediation hints, and queue mutations into the sync outbox when offline.

Quality Assurance

Peer Mentor (primary) · Coordinator (same flow)
1
Scenarios
7
UAT Steps
20
A11y Annotations
3
Role Boundaries
Peer Mentor (Likeperson)

Peer Mentor (Likeperson)

Quick UAT

  1. Logg inn i Meander-appen som Likeperson og Äpne fanen Kontakter fra bunnmenyen.
  2. Bekreft at listen viser dine tildelte kontakter med navn synlig, sortert alfabetisk.
  3. Skriv et delvis navn i sĂžkefeltet Ăžverst og bekreft at listen filtreres til treff innen ett sekund.
  4. Trykk pÄ en kontakt i listen for Ä Äpne detaljvisningen.
  5. Bekreft at detaljsiden viser kontaktens kjernedata, relaterte aktiviteter og notater.
  6. Trykk Rediger, endre telefonnummeret til et gyldig nummer, og trykk Lagre.
  7. Bekreft at endringen vises umiddelbart i detaljvisningen og at en bekreftelsesmelding er synlig.

Quick UAT — Accessibility

  1. Logg inn i Meander-appen som Likeperson og Äpne fanen Kontakter fra bunnmenyen.
    • Screen reader VoiceOver/TalkBack annonserer 'Kontakter, fane, valgt' ved aktivering.
    • Focus visibility Synlig fokusring pĂ„ aktiv fane.
    • Touch target Fane-knapp ≄ 24×24 CSS px.
  2. Bekreft at listen viser dine tildelte kontakter med navn synlig, sortert alfabetisk.
    • Screen reader Hver listerad annonseres som 'Kontakt, [navn], knapp'.
    • Keyboard / focus Piltaster opp/ned navigerer mellom rader; Enter aktiverer.
    • Zoom Listen er brukbar ved 200 % zoom uten horisontal scroll.
  3. Skriv et delvis navn i sĂžkefeltet Ăžverst og bekreft at listen filtreres til treff innen ett sekund.
    • Screen reader SĂžkefelt har label 'SĂžk i kontakter'.
    • Focus visibility Tastaturfokus forblir i sĂžkefeltet under skriving.
    • Live region 'X treff funnet' annonseres hĂžflig etter filtrering.
  4. Trykk pÄ en kontakt i listen for Ä Äpne detaljvisningen.
    • Screen reader Sideoverskrift 'Kontaktdetaljer, [navn]' annonseres ved sideĂ„pning.
    • Focus visibility Fokus flyttes til sideoverskrift i detaljvisningen.
    • Touch target Hver listerad ≄ 24×24 CSS px med tilstrekkelig vertikal padding.
  5. Bekreft at detaljsiden viser kontaktens kjernedata, relaterte aktiviteter og notater.
    • Screen reader Seksjonsoverskrifter ('Kjernedata', 'Aktiviteter', 'Notater') leses som overskriftsnivĂ„ 2.
    • Zoom Innhold reflowes ved 200 % uten tap av funksjonalitet.
    • Contrast Tekst minst 4.5:1 mot bakgrunn; status ikke kun via farge.
  6. Trykk Rediger, endre telefonnummeret til et gyldig nummer, og trykk Lagre.
    • Screen reader Rediger-knapp annonseres; skjemafelt har label 'Telefonnummer, obligatorisk'.
    • Keyboard / focus Tab-rekkefĂžlge fĂžlger visuell rekkefĂžlge; Lagre nĂ„s uten musepeker.
    • Focus visibility Synlig fokusring pĂ„ alle skjemafelt og knapper.
  7. Bekreft at endringen vises umiddelbart i detaljvisningen og at en bekreftelsesmelding er synlig.
    • Live region 'Kontakt oppdatert' annonseres hĂžflig av skjermleser.
    • Contrast Bekreftelsesmelding har kontrast ≄ 4.5:1 og ikon i tillegg til farge.

Role Boundaries

3 role(s) must NOT access this feature
  • Organization Administrator

    Logger ikke inn i mobilappen; Kontakter-fanen finnes ikke i Admin Web Portal. Tilgang skjer kun via brukeradministrasjon, ikke som likepersons-kontaktliste.

  • Global Administrator

    Ingen tilgang til organisasjonens kontaktdata uten eksplisitt, tidsbegrenset support-flagg satt av Org Admin. ForsÞk pÄ Ä Äpne kontaktlisten uten flagg gir 403 og logges i audit-loggen.

  • Prospective Buyer

    Har ingen konto i mobilappen; deep-link til Kontakter returnerer 401/redirect til offentlig nettside.

Expected End State

Kontaktlisten er synlig og rollefiltrert, sÞk returnerer korrekte treff, valgt kontakts detaljside Äpnes, og en redigering av et kjernefelt er lagret persistent og synlig umiddelbart i detaljvisningen.

User Stories

No user stories have been generated for this feature yet.