high complexity extracted Contacts & Peer Mentor Management Confidence: 100%
8
Components
58
Shared
0
User Stories
Yes
Analyzed

Description

This feature provides a map-based visualization of peer mentor locations within a coordinator's coverage area, enabling geographic matching between mentors and prospective contacts. A map view screen renders mentor pins on an interactive map with clustering for dense areas. A location service handles geocoding of addresses and reverse geocoding for distance calculations. The map integration infrastructure wraps the chosen mapping SDK (e.g., Mapbox or Google Maps Flutter plugin) behind an abstraction layer. This feature is particularly critical for Blindeforbundet, which operates across large geographic regions (e.g., Troms og Finnmark) where distance between mentor and contact is a primary matching criterion.

User Flow

Geographic Map View for Peer Mentor Matching user flow
Click to expand

Analysis

Business Value

Geographic matching is a coordination bottleneck for organizations operating across large Norwegian regions. Coordinators currently match mentors to contacts based on mental maps or spreadsheets, leading to suboptimal pairings that increase travel burden and reduce engagement frequency. A visual map view reduces matching time from hours to minutes and improves match quality by surfacing proximity-based options that text-based lists obscure. For Blindeforbundet specifically, the assignment dispatch feature (encrypted-assignment-dispatch) depends on accurate geographic matching to route sensitive assignments to the nearest qualified mentor, making this feature a prerequisite for that workflow's efficiency. The map also has secondary value for coordinators planning regional coverage and identifying gaps in mentor availability.

Implementation Notes

The MapViewScreen uses a Flutter map plugin (flutter_map with OpenStreetMap tiles as the privacy-respecting default, or Mapbox for richer styling) wrapped by the MapIntegrationInfrastructure component. The LocationService handles address-to-coordinate geocoding via the backend, which calls a geocoding API server-side to avoid exposing API keys on the client. Mentor locations are stored as lat/lng coordinates in the peer_mentors table, populated during profile creation or edit. The map renders clustered markers using the flutter_map_marker_cluster package. Tapping a cluster expands it; tapping a mentor pin opens a bottom sheet with the PeerMentorCardWidget and a 'View Profile' action. WCAG 2.2 AA compliance requires a non-map alternative list view accessible via a toggle button, since maps are inherently inaccessible to screen reader users. Location data is only stored with explicit user consent, aligned with GDPR requirements.

Components (66)

User Interface (4)

Service Layer (1)

Data Layer (1)

Infrastructure (2)

Shared Components

These components are reused across multiple features

Infrastructure (20)

User Stories

No user stories have been generated for this feature yet.