Profile Data & Settings
Feature Detail
Description
The Profile Data & Settings feature enables peer mentors and coordinators to view and manage their personal information in the Meander Mobile App. Users can update contact details and account settings persisted to the backend and cached locally for offline access. The feature supports per-organization terminology overrides and integrates with role-based access control to surface only the relevant profile fields per user type, ensuring a contextually appropriate and accessible experience that meets WCAG 2.2 AA requirements from day one.
Sources & reasoning
Profile Data & Settings is MVP per the blueprint [MVP] marker. The source doc lists peer mentor profile screens and settings as explicit Mobile App screen inventory items (lines 294, 297), and the Fase 1 MVP scope requires two mobile role profiles (line 325). The org labels system (line 310) means the profile UI must dynamically reflect per-org terminology, making this a foundational integration surface from launch.
-
docs/source/likeperson.md · line 294-297Contact detail, edit, and peer mentor profile screens - Activity wizard (multi-step: contact → date → time → duration → summary) - Event wizard - Settings and preferences
-
docs/source/likeperson.md · line 310Organization labels system - per-org terminology overrides fetched from backend and cached offline (currently: `contacts`, `my_contacts`, `peer_mentors`; extensible to singular forms
-
docs/source/likeperson.md · line 3252 mobilrolle-profiler: Peer Mentor, Coordinator (Organization Admins logger på som Coordinator i app-konteksten)
Analysis
Accurate profile data is foundational to platform trust and operational efficiency. Peer mentors and coordinators need current contact information for coordinator outreach and correct activity attribution in Bufdir reports. The settings interface lets users customize notification preferences, reducing fatigue while ensuring critical alerts are received. Self-service profile management reduces administrative overhead for Org Admins and improves data quality without manual intervention, directly supporting reporting accuracy and multi-organization membership clarity across all four partner organizations.
Implementation uses a ProfileScreen widget backed by a ProfileService for API calls and ProfileRepository for local Drift storage encrypted with SQLCipher. The form applies Flutter reactive validation with WCAG 2.2 AA compliant fields covering minimum touch targets and semantic labels. Profile data syncs via the mutation outbox pattern for offline-first resilience. The organization labels system is integrated at the service layer so field labels dynamically reflect per-org terminology. Changes trigger optimistic mutations with rollback on failure, and Riverpod ensures reactive UI updates across all screens displaying user data.
Quality Assurance
Peer Mentor (primary) · Coordinator (same flow, coordinator-specific fields visible)Peer Mentor
Quick UAT
- Logg inn i Meander-appen som Peer Mentor. Åpne hamburgermenyen øverst til venstre og trykk Profil.
- Bekreft at profilskjermen viser ditt navn, e-postadresse og kontaktopplysninger i skrivebeskyttet visning.
- Trykk på Rediger-ikonet (blyant) øverst til høyre for å åpne redigeringsskjemaet.
- Endre telefonnummeret i Telefon-feltet og trykk Lagre.
- Bekreft at en bekreftelsesmelding vises og at det oppdaterte telefonnummeret nĂĄ vises i profilvisningen.
- SlĂĄ av mobildata og WiFi. Naviger til profilskjermen og bekreft at dataene fremdeles vises fra lokal cache.
Quick UAT — Accessibility
-
Logg inn i Meander-appen som Peer Mentor. Åpne hamburgermenyen øverst til venstre og trykk Profil.
- Screen reader Hamburger-knapp annonseres som 'Meny, knapp'; Profil-menyvalg annonseres med navn.
- Keyboard / focus Tab-rekkefølge: hamburger-ikon → menyvalg; Enter åpner menyen og aktiverer valg.
- Touch target Hamburger-knapp og Profil-menyvalg er minst 24Ă—24 CSS px.
-
Bekreft at profilskjermen viser ditt navn, e-postadresse og kontaktopplysninger i skrivebeskyttet visning.
- Screen reader Sideoverskrift 'Profil' annonseres; felt leses som 'Navn: [verdi]', 'E-post: [verdi]'.
- Zoom Alle feltlabels og verdier er lesbare ved 200% zoom uten horisontal scroll.
- Contrast Tekst mot bakgrunn ≥ 4.5:1; feltlabels ikke kun skilt fra verdier med farge.
-
Trykk på Rediger-ikonet (blyant) øverst til høyre for å åpne redigeringsskjemaet.
- Screen reader Rediger-knapp annonseres som 'Rediger profil, knapp'.
- Focus visibility Synlig fokusring på Rediger-knapp; fokus flyttes til første redigerbare felt etter aktivering.
- Touch target Rediger-ikon er minst 24Ă—24 CSS px.
-
Endre telefonnummeret i Telefon-feltet og trykk Lagre.
- Screen reader Inputfelt annonseres som 'Telefon, redigeringsboks'; inline feilmelding annonseres umiddelbart ved ugyldig verdi.
- Keyboard / focus Tab navigerer mellom alle redigerbare felt; Lagre-knapp nĂĄs med Tab og aktiveres med Enter.
- Focus visibility Alle felt har synlig fokusring og tilhørende label-element.
- Touch target Lagre-knapp er minst 24Ă—24 CSS px.
-
Bekreft at en bekreftelsesmelding vises og at det oppdaterte telefonnummeret nĂĄ vises i profilvisningen.
- Screen reader Skjermleser leser bekreftelsesmeldingen automatisk uten ĂĄ flytte fokus.
- Live region 'Profil lagret.' annonseres via polite live region.
-
SlĂĄ av mobildata og WiFi. Naviger til profilskjermen og bekreft at dataene fremdeles vises fra lokal cache.
- Screen reader Profilfelt leses med samme semantikk som ved nettverkstilgang.
- Contrast Offline-statusindikator (om synlig) er skilt fra online-tilstand med mer enn farge alene.
Role Boundaries
2 role(s) must NOT access this feature-
Global Administrator
Global Admin mottar en ingen-tilgang-skjerm i mobilappen og videresendes til Admin-portalen; mobilprofilskjermen er ikke tilgjengelig.
-
Prospective Organization Representative
Ingen mobilappkonto; deep-link til profilskjermen returnerer 401 uautentisert.
Expected End State
Profilen er oppdatert med ny kontaktinformasjon, endringen er persistert til backend og reflektert i lokal cache. Profilen vises korrekt i frakoblet modus.
Components (22)
Shared Components
These components are reused across multiple features
User Stories
No user stories have been generated for this feature yet.