Offline Data Support
Feature Detail
Description
Offline Data Support enables the Meander Mobile App to function fully without network connectivity by persisting all operational data locally in an encrypted on-device database. Peer mentors and coordinators can view contacts, log activities, edit notes, and access reference data even when offline. The system provides a visible offline indicator so users understand the current connectivity state and trust that their work is preserved. All locally stored personal data is protected with SQLCipher encryption to meet GDPR and sensitive-data requirements.
Sources & reasoning
Listed as a Mobile App area feature in the canonical taxonomy (§8) and explicitly described in the Mobile App Architecture Core/Shared section as offline-first encrypted persistence. Field-work context in §1.1 makes offline non-negotiable, so MVP.
-
docs/source/likeperson.md · line 227Offline-first persistence (Drift + SQLCipher encrypted local DB, mutation outbox, sync queue with retry/backoff, ID mapping for offline-created entities, conflict resolver)
-
docs/source/likeperson.md · line 369offline-sync | Offline & Sync | Offline Data Support, Background Sync
Analysis
Peer mentors frequently work in environments with unreliable connectivity - home visits, rural areas, hospital wards - and any tool that fails offline will drive users back to paper forms, defeating the entire digitalization effort. Offline Data Support is therefore foundational to adoption: it preserves the under-two-clicks activity logging promise regardless of network state, prevents data loss during field work, and gives users the confidence that the app is always available. Encrypted local storage also satisfies GDPR obligations for sensitive personal data on mobile devices, reducing legal and reputational risk for participating organizations.
Implementation uses Drift as the typed SQL layer over SQLCipher for AES-256 encryption of the local database file, with the key stored in the platform secure store (Keychain on iOS, Keystore on Android). The local schema mirrors the relevant subset of backend tables (contacts, activities, notes, preferences, organization labels, enabled modules). Riverpod providers read from the local DB first and treat the network as a refresh source rather than a primary. An OfflineIndicator widget subscribes to connectivity state and renders a persistent banner. WCAG 2.2 AA semantics are required on the indicator so screen readers announce state changes.
Quality Assurance
Peer Mentor (primary) · Coordinator (same flow)Peer Mentor (Likeperson)
Quick UAT
- Logg inn i Meander-mobilappen som Likeperson mens enheten er tilkoblet nett. Ă pne Hjem.
- SlÄ pÄ flymodus pÄ enheten og vent til offline-indikatoren vises i app-skallet.
- Trykk Legg til â Aktivitet. Velg en kontakt fra listen og fullfĂžr registreringen med standardverdier (dagens dato, 30 min).
- Bekreft at den nye aktiviteten vises i Mine aktiviteter med merket 'Venter pÄ synk'.
- Ă pne Kontakter og bekreft at kontaktlisten lastes fra lokal database uten feilmelding.
- SlÄ av flymodus. Bekreft at offline-indikatoren forsvinner og at aktiviteten ikke lenger viser 'Venter pÄ synk'.
Quick UAT â Accessibility
-
Logg inn i Meander-mobilappen som Likeperson mens enheten er tilkoblet nett. Ă pne Hjem.
- Screen reader TalkBack/VoiceOver annonserer 'Hjem, side 1 av 5' i bunnavigasjonen.
- Keyboard / focus Bunnav-faner kan nÄs med Tab/svepebevegelse i lesemodus.
- Focus visibility Synlig fokusring pÄ aktiv fane.
-
SlÄ pÄ flymodus pÄ enheten og vent til offline-indikatoren vises i app-skallet.
- Screen reader Skjermleser annonserer 'Frakoblet. Endringer lagres lokalt.'
- Live region 'Frakoblet. Endringer lagres lokalt.' annonseres via polite live region.
- Contrast Offline-indikator bruker bĂ„de ikon og tekst â status ikke kun ved farge; tekstkontrast â„ 4.5:1.
-
Trykk Legg til â Aktivitet. Velg en kontakt fra listen og fullfĂžr registreringen med standardverdier (dagens dato, 30 min).
- Screen reader 'Legg til, knapp' annonseres; veiviser-steg leses opp som 'Steg 1 av 4'.
- Keyboard / focus Hele veiviseren kan fullfĂžres med tastatur/svepebevegelse; ingen drag-baserte trinn uten alternativ.
- Touch target Legg til-knapp og kontaktrader â„ 24Ă24 CSS px.
-
Bekreft at den nye aktiviteten vises i Mine aktiviteter med merket 'Venter pÄ synk'.
- Screen reader Rad annonseres som 'Aktivitet, [kontaktnavn], i dag, venter pÄ synk'.
- Live region 'Aktivitet lagret lokalt. Venter pÄ synk.'
- Contrast 'Venter pĂ„ synk'-merket har bĂ„de ikon og tekst â status ikke kun ved farge.
-
Ă pne Kontakter og bekreft at kontaktlisten lastes fra lokal database uten feilmelding.
- Screen reader Listeoverskrift 'Kontakter' annonseres; antall elementer leses.
- Keyboard / focus Piltaster/svepebevegelse navigerer mellom kontaktrader.
- Zoom Listen er fortsatt brukbar ved 200 % zoom uten horisontal scrolling.
-
SlÄ av flymodus. Bekreft at offline-indikatoren forsvinner og at aktiviteten ikke lenger viser 'Venter pÄ synk'.
- Screen reader Skjermleser annonserer 'Tilkoblet. Synkroniserer.'
- Focus visibility Fokus beholdes pÄ samme rad etter synk; flytter ikke uventet.
- Live region 'Tilkoblet. Synkroniserer.' etterfulgt av 'Synkronisering fullfĂžrt.'
Role Boundaries
3 role(s) must NOT access this feature-
Organization Administrator
Org Admin logger ikke inn pĂ„ mobilappen som administrator; offline-funksjonen er kun tilgjengelig via mobilappens Likeperson/Koordinator-kontekst. Admin Web Portal har ingen offline-modus â forsĂžk pĂ„ offline-bruk av portalen viser standard nettleserfeil.
-
Global Administrator
Ingen mobiltilgang; Admin Web Portal er ikke offline-aktivert. Funksjonen er ikke synlig og ikke tilgjengelig.
-
Prospective Buyer
Ingen pÄlogging og ingen tilgang til mobilappen; offline-funksjonen er ikke eksponert pÄ salgsnettsiden.
Expected End State
Alle handlinger utfÞrt offline (aktivitetsregistrering, kontakt-/notatvisning, proxy-registrering) er lagret i den krypterte lokale databasen og merket 'Venter pÄ synk'. Offline-indikatoren reflekterer korrekt nettverksstatus. NÄr enheten kommer online igjen forsvinner 'Venter pÄ synk'-merket etter at bakgrunnssynkronisering har fullfÞrt, og dataene er identiske med serverversjonen.
Components (8)
Shared Components
These components are reused across multiple features
User Stories
No user stories have been generated for this feature yet.