medium complexity extracted Profile Management Confidence: 100%
3
Components
2
Shared
0
User Stories
Yes
Analyzed

Description

Provides each Meander user with a personal profile screen where they can view and edit their own profile data (display name, contact info, language) and configure account-level settings. This is the canonical landing point for "my account" actions in the mobile app and underpins every role-aware surface that needs to know who the current user is. Profile data is stored in the user_profiles table, while preferences (notification defaults, theme, language) live in user_preferences. Edits sync via the standard offline-first outbox so changes made offline reconcile on next connection.

Sources & reasoning

Profile Data & Settings is the canonical 'my account' surface; the source explicitly lists Settings and preferences as an MVP screen and Subprocessors.md mandates application-level encryption for profile name/phone. Placed in MVP because every role-aware feature depends on accurate profile data from day one.

  • docs/source/likeperson.md · line 223-224
    Settings and preferences
  • docs/source/likeperson.md · line 190-190
    Peer Mentor (Likeperson): Creates and tracks activities and follow-ups. Logs in to the Mobile App only. Beginner-level digital skills assumed.
  • Brukerprofiler, e-post, bcrypt-passordhasher... Navn og telefonnummer krypteres pĂ„ applikasjonsnivĂ„ (AES-256-GCM) fĂžr lagring.

Analysis

Business Value

A reliable profile screen is foundational: every other feature that personalises the experience (role-specific home, organisation labels, notification preferences, Bufdir attribution) depends on accurate, user-maintainable profile data. Letting users keep their own data current reduces coordinator/admin support load and improves data quality for Bufdir reporting, where missing or stale contact info directly undermines the funding case. For volunteers with beginner-level digital skills (explicitly called out in the workshop summary), a clear, low-friction "my profile" screen also builds trust in the app as their personal tool, not just a reporting funnel imposed on them.

Implementation Notes

Flutter screen backed by Riverpod state, reading and writing through the REST API client with optimistic mutations and automatic rollback on failure (same pattern as contact edits). Persistence uses the user_profiles + user_preferences tables; sensitive fields (name, phone) follow the AES-256-GCM application-level encryption rule from Subprocessors.md before they leave the device. WCAG 2.2 AA applies from day one: 4.5:1 contrast, ≄24×24 touch targets, full keyboard/screen-reader support, visible focus, sensitive-field readout warning hooked into the same primitives used elsewhere. Edits flow through Drift + sync outbox so offline changes reconcile cleanly.

Quality Assurance

Peer Mentor (primary) · Coordinator (same flow)
1
Scenarios
5
UAT Steps
13
A11y Annotations
2
Role Boundaries
Peer Mentor (Likeperson)

Peer Mentor (Likeperson)

Quick UAT

  1. Logg inn i Meander Mobile App som likeperson og Äpne hamburger-menyen fra startskjermen.
  2. Trykk pÄ Min profil for Ä Äpne profilskjermen og bekreft at navn, e-post og telefon vises korrekt.
  3. Trykk Rediger, endre telefonnummer til et nytt gyldig nummer og bytt sprÄkvalg fra BokmÄl til Nynorsk.
  4. Trykk Lagre og bekreft at bekreftelsesmelding vises og at skjermen gÄr tilbake til lesemodus med oppdaterte verdier.
  5. Lukk og Äpne appen pÄ nytt, gÄ tilbake til Min profil og verifiser at det nye telefonnummeret og sprÄkvalget er bevart.

Quick UAT — Accessibility

  1. Logg inn i Meander Mobile App som likeperson og Äpne hamburger-menyen fra startskjermen.
    • Screen reader TalkBack/VoiceOver annonserer 'Meny, knapp' ved fokus; menyen Ă„pnes med 'Meny utvidet'.
    • Keyboard / focus Hamburger-knapp er nĂ„bar via Tab fra topp av skjerm; aktiveres med Enter/Space.
    • Touch target Meny-ikonet er minst 24×24 CSS-piksler.
  2. Trykk pÄ Min profil for Ä Äpne profilskjermen og bekreft at navn, e-post og telefon vises korrekt.
    • Screen reader Sideoverskrift 'Min profil' annonseres ved navigasjon; hvert felt leses opp som 'label, verdi'.
    • Focus visibility Synlig fokusring pĂ„ Min profil-menyvalg; fĂžrste interaktive element pĂ„ profilskjermen fĂ„r fokus etter navigasjon.
    • Zoom Layout brukbar ved 200 % zoom uten horisontal scroll.
  3. Trykk Rediger, endre telefonnummer til et nytt gyldig nummer og bytt sprÄkvalg fra BokmÄl til Nynorsk.
    • Screen reader Rediger-knapp annonseres som 'Rediger, knapp'; tekstfelt annonseres med label 'Telefonnummer, redigerbar'; nedtrekksliste annonserer valgt sprĂ„k.
    • Keyboard / focus Tab-rekkefĂžlge fĂžlger visuell rekkefĂžlge: Navn → E-post → Telefon → SprĂ„k → Lagre; piltaster velger i sprĂ„k-nedtrekksliste.
    • Focus visibility Tydelig fokusring rundt aktivt felt; sensitive felter (telefon) markert med readout-advarsel.
  4. Trykk Lagre og bekreft at bekreftelsesmelding vises og at skjermen gÄr tilbake til lesemodus med oppdaterte verdier.
    • Focus visibility Fokus flyttes til bekreftelsesmelding eller tilbake til Rediger-knappen i lesemodus.
    • Live region 'Profil lagret. Endringene er bekreftet.' annonseres via polite live region.
  5. Lukk og Äpne appen pÄ nytt, gÄ tilbake til Min profil og verifiser at det nye telefonnummeret og sprÄkvalget er bevart.
    • Screen reader Profilfelter leses opp med nye verdier; appens UI-sprĂ„k reflekterer Nynorsk-valget i menyetiketter.
    • Contrast Tekst i profilfelter har minimum 4.5:1 kontrast mot bakgrunn.

Role Boundaries

2 role(s) must NOT access this feature
  • Global Administrator

    Global Admin logger ikke inn i mobilappen; profilskjermen er ikke i navigasjonen og deep-link returnerer 403.

  • Prospective Buyer

    Har ingen mobil-app-konto; innloggingsforsĂžk avvises og profilskjerm er utilgjengelig.

Expected End State

Brukerens oppdaterte personinformasjon, kontaktdetaljer og sprÄkvalg er lagret i user_profiles og user_preferences, vises umiddelbart i lesemodus, og er bevart etter omstart av appen.

User Stories

No user stories have been generated for this feature yet.