medium complexity extracted Activity Registration Confidence: 100%
4
Components
18
Shared
0
User Stories
Yes
Analyzed

Description

Document Attachments allows peer mentors to attach files - images, PDFs, and documents - to individual activity records. Typical use cases include attaching event invitations, Facebook screenshots, meeting agendas, or scanned forms that provide evidence for Bufdir auditing. The feature supports selecting files from the device's file picker and camera roll, compresses images before upload to manage storage costs, and stores attachment metadata in the activity record. Attachments are accessible from the activity detail view and synchronized when the device is online.

Sources & reasoning

Lines 107-108 give the exact use-case (invitations, screenshots for Bufdir auditing). Line 348 places it in Fase 2 (v1.0). The needs matrix marks it NICE TO HAVE / Fase 2, consistent with should_have at v1.0.

Analysis

Business Value

NHF specifically called out document attachments as important for Bufdir auditability - attachments like event invitations and Facebook screenshots constitute evidence that an activity occurred as described. Without attachment support, peer mentors must maintain separate paper or digital archives, which degrades over time and creates gaps in the audit trail. Given that all four organizations receive Bufdir funding and are subject to audits, the ability to attach supporting documents directly to activity records significantly reduces administrative burden at report time and provides a stronger compliance posture. This is categorized as NHF-specific but broadly useful.

Implementation Notes

Use file_picker and image_picker Flutter plugins for device file and camera access. AttachmentPickerWidget wraps both pickers behind a unified bottom sheet. AttachmentService handles upload to the backend file storage (S3-compatible) using multipart POST with progress reporting. FileStorageClient abstracts the storage backend. Images are compressed using the flutter_image_compress plugin before upload with configurable quality/size limits. Attachment metadata (name, size, MIME type, storage URL) is stored in the activity_attachments table via AttachmentRepository. Offline support stores pending uploads in the Drift outbox and completes them when connectivity is restored. File picker permission is requested lazily.

Quality Assurance

Peer Mentor (primary) · Coordinator (same flow)
1
Scenarios
6
UAT Steps
20
A11y Annotations
3
Role Boundaries
Peer Mentor

Peer Mentor

Quick UAT

  1. Logg inn i Meander-appen som Likeperson. Åpne en eksisterende aktivitet fra aktivitetslisten.
  2. Trykk pÄ «Legg til vedlegg»-knappen nederst pÄ aktivitetsdetaljsiden.
  3. Velg en fil fra filvelgeren eller kamerarullen (f.eks. en PDF-invitasjon eller et Facebook-skjermbilde).
  4. Bekreft at et miniatyrbilde vises og at opplastingsfremdrift per vedlegg er synlig.
  5. Vent til opplastingen er fullfÞrt. Bekreft at vedlegget vises i vedleggslisten pÄ aktivitetsdetaljen med filnavn og stÞrrelse.
  6. Lukk aktiviteten og Äpne den pÄ nytt. Bekreft at vedlegget fortsatt er synlig og kan Äpnes.

Quick UAT — Accessibility

  1. Logg inn i Meander-appen som Likeperson. Åpne en eksisterende aktivitet fra aktivitetslisten.
    • Screen reader Sideoverskrift for aktivitetsdetalj annonseres; skjermleser leser aktivitetstittel og dato.
    • Keyboard / focus Tab-rekkefĂžlge: overskrift → feltliste → handlingsknapper.
    • Focus visibility Synlig fokusring pĂ„ valgt aktivitet i listen.
  2. Trykk pÄ «Legg til vedlegg»-knappen nederst pÄ aktivitetsdetaljsiden.
    • Screen reader Knapp annonseres som «Legg til vedlegg, knapp».
    • Keyboard / focus Knappen nĂ„s med Tab; aktiveres med Enter eller Space.
    • Focus visibility Synlig fokusring pĂ„ «Legg til vedlegg»-knappen.
    • Touch target ≄ 24×24 CSS px
  3. Velg en fil fra filvelgeren eller kamerarullen (f.eks. en PDF-invitasjon eller et Facebook-skjermbilde).
    • Screen reader Systemets filvelger annonserer mappenavn og filnavn ved navigasjon. Kamerarull-alternativ er merket semantisk.
    • Keyboard / focus Piltaster navigerer filer i systemvelger; Enter bekrefter valg.
    • Focus visibility Fokus flyttes inn i systemvelgerdialogen ved Ă„pning.
    • Zoom Filvelger-dialog brukbar ved 200 % zoom uten overlapping.
  4. Bekreft at et miniatyrbilde vises og at opplastingsfremdrift per vedlegg er synlig.
    • Screen reader Fremdriftsindikator annonseres som «Laster opp, X prosent».
    • Live region Polite live region oppdaterer prosentverdi under opplasting.
    • Contrast Fremdriftslinje: farge brukes ikke alene — prosenttall vises i tekst ved siden av.
  5. Vent til opplastingen er fullfÞrt. Bekreft at vedlegget vises i vedleggslisten pÄ aktivitetsdetaljen med filnavn og stÞrrelse.
    • Screen reader «Opplasting fullfĂžrt. [Filnavn] lagt til.» annonseres av live region.
    • Focus visibility Fokus flyttes til det nylig lagt til vedlegget i listen.
    • Live region 'Opplasting fullfĂžrt. [Filnavn] lagt til vedleggslisten.'
  6. Lukk aktiviteten og Äpne den pÄ nytt. Bekreft at vedlegget fortsatt er synlig og kan Äpnes.
    • Screen reader Vedleggsrad i liste annonseres med filnavn, type og stĂžrrelse. «Trykk for Ă„ Ă„pne»-hint inkludert.
    • Keyboard / focus Tab navigerer til vedleggsrad; Enter Ă„pner vedlegget.
    • Touch target ≄ 24×24 CSS px pĂ„ vedleggsrad og slett-knapp.

Role Boundaries

3 role(s) must NOT access this feature
  • Organization Administrator

    Organisasjonsadministrator bruker Admin Web Portal, ikke mobilappen. Skjermen for dokumentvedlegg finnes ikke i admin-portalen; deep-link til vedleggsflyt returnerer 403.

  • Global Administrator

    Global administrator har ikke tilgang til mobilappen. ForsÞk pÄ innlogging i mobilappen omdirigerer til admin-portalen. Ingen tilgang til dokumentvedlegg-funksjon.

  • Prospective Organization Representative

    Prospektive organisasjonsrepresentanter er ikke brukere av mobilappen. Ingen konto, ingen tilgang.

Expected End State

Vedlegget er lagret og synlig pÄ aktivitetsdetaljsiden med korrekt filnavn, MIME-type og stÞrrelse. Metadata er persistert i activity_attachments-tabellen med referanse til aktivitets-ID og organisasjons-ID. Filen er tilgjengelig via signert URL i skylagringen, og vedlegget synkroniseres til serveren neste gang enheten er online.

User Stories

No user stories have been generated for this feature yet.