high complexity extracted Geographic Map View Confidence: 100%
4
Components
18
Shared
0
User Stories
Yes
Analyzed

Description

The Peer Mentor Map feature provides a geographic visualization layer that displays the locations of active peer mentors across regions and local associations. Coordinators can view a map-based overview to identify coverage gaps, understand distribution, and make informed decisions about assignment dispatch. This is particularly critical for organizations such as Blindeforbundet operating across large counties where spatial awareness directly affects operational efficiency and response capacity for contact outreach.

Sources & reasoning

Line 99 explicitly names geographic map view as a unique Blindeforbundet need for peer mentor matching and assignment dispatch across large counties. Line 358 places it in Fase 3 (third phase), which normalizes to v1.1. The blueprint confirms area [v1.1]. Feature is scoped exactly as defined in the blueprint.

Analysis

Business Value

Geographic visualization enables coordinators to match assignments to the nearest available peer mentor, reducing travel time and improving response quality for contacts. For Blindeforbundet, who operate across large fylker, this capability directly supports encrypted assignment dispatch and ensures mentors are matched by proximity. The map also helps organizations identify underserved areas, supporting strategic planning for mentor recruitment and regional expansion. This spatial visibility translates to better contact outcomes and more efficient use of peer mentor time and travel budgets.

Implementation Notes

Implementation requires integration with a mapping provider such as Mapbox or Google Maps via a Flutter map widget (flutter_map or google_maps_flutter). Geographic coordinates are stored in the geographic_locations table and linked to peer_mentor_profiles. The MapProvider infrastructure component abstracts the map SDK to allow provider swapping without affecting business logic. WCAG 2.2 AA compliance requires a non-map fallback list view and accessible semantic labels for all interactive map elements. The backend exposes a geographic endpoint returning anonymized peer mentor locations scoped to the coordinator's organization, enforcing tenant isolation.

Quality Assurance

Coordinator (primary) · Peer Mentor (no access — not in nav)
1
Scenarios
6
UAT Steps
21
A11y Annotations
1
Role Boundaries
Coordinator

Coordinator

Quick UAT

  1. Logg inn i Meander-appen som Koordinator. Bekreft at kartikonet vises i navigasjonen.
  2. Trykk på kartfanen. Bekreft at kartet lastes og viser likepersonmarkører for ditt lokallag.
  3. Zoom ut til fylkesnivå. Bekreft at klyngemarkører vises der det er flere likepersoner tett.
  4. Trykk på en enkelt likepersonmarkør. Bekreft at en informasjonspanel vises med navn, aktiv status og region.
  5. Zoom inn igjen til lokal visning. Bekreft at regionsoverlegg viser dekningsgap med synlig fargekontrast.
  6. Skru av nettverkstilkobling. Bekreft at kartet viser sist bufret tilstand og et offlinevarsel.

Quick UAT — Accessibility

  1. Logg inn i Meander-appen som Koordinator. Bekreft at kartikonet vises i navigasjonen.
    • Screen reader Navigasjonsfane annonseres som 'Kart, fane, 4 av 5'; aktiv fane indikeres med 'valgt'.
    • Keyboard / focus Tab-rekkefølge: logg inn-knapp → brukernavn → passord → logg inn; kartfane nås med piltaster i bunnavigasjon.
    • Focus visibility Synlig fokusring på alle navigasjonselementer; ikonet har semantisk label 'Kart'.
    • Touch target Kartfane-ikon minimum 44×44 CSS px (utvidet touchzone).
  2. Trykk på kartfanen. Bekreft at kartet lastes og viser likepersonmarkører for ditt lokallag.
    • Screen reader Etter lasting annonseres 'Kart lastet, X likepersoner vist' via polite live region.
    • Live region 'Kart lastet. X likepersoner vises for ditt lokallag.'
    • Zoom Ved 200 % zoom er kartbeholdere og markørknapper fullt synlige og ikke avklipt.
  3. Zoom ut til fylkesnivå. Bekreft at klyngemarkører vises der det er flere likepersoner tett.
    • Screen reader Klyngemarkør annonseres som 'Gruppe: X likepersoner, trykk for å utvide'.
    • Keyboard / focus Zoom-kontroller (+ og −) nås med Tab; Enter/Mellomrom aktiverer.
    • Touch target Klyngeknapper minimum 44×44 CSS px.
    • Contrast Klyngetall lesbar mot markørbakgrunn — minimum 4.5:1; informasjon formidles ikke kun via farge.
  4. Trykk på en enkelt likepersonmarkør. Bekreft at en informasjonspanel vises med navn, aktiv status og region.
    • Screen reader Panel annonseres som dialog: 'Likepersonpanel — [Navn], Aktiv, [Region]'. Lukkeknapp er første fokuselement.
    • Keyboard / focus Escape lukker panelet og returnerer fokus til kartet.
    • Focus visibility Fokus flyttes automatisk til panelet ved åpning; returnerer til markøren ved lukking.
    • Touch target Lukkeknapp minimum 44×44 CSS px.
  5. Zoom inn igjen til lokal visning. Bekreft at regionsoverlegg viser dekningsgap med synlig fargekontrast.
    • Screen reader Regionsoverlegg har aria-label som beskriver dekning: 'Region: Akershus nord, Dekning: Lav'.
    • Zoom Legende og statusetiketter lesbare og ikke overlappende ved 200 % zoom.
    • Contrast Dekningsgap-farger oppfyller 3:1 mot kartbakgrunn for UI-komponenter; legende forklarer status i tekst i tillegg til farge.
  6. Skru av nettverkstilkobling. Bekreft at kartet viser sist bufret tilstand og et offlinevarsel.
    • Screen reader Offlinevarsel annonseres via polite live region: 'Ingen nettverkstilkobling. Viser bufret kart.'.
    • Live region 'Ingen nettverkstilkobling. Viser sist bufret kartdata.'
    • Contrast Offlinevarsel-banner oppfyller 4.5:1 kontrast mot bakgrunn.

Role Boundaries

1 role(s) must NOT access this feature
  • Peer Mentor

    Kartikonet vises ikke i bunnavigasjonen for likepersoner; deep-link til kartskjermen returnerer 403.

Expected End State

Koordinatoren har fått visuell oversikt over aktive likepersoners geografiske fordeling, kan identifisere dekningsgap og er klar til å bruke kartet som grunnlag for oppdragstildeling.

User Stories

No user stories have been generated for this feature yet.