low complexity extracted Event Management Confidence: 100%
2
Components
18
Shared
0
User Stories
Yes
Analyzed

Description

Event Listing presents users with a browsable, searchable list of upcoming and past events within their organization. The screen displays event title, date, time, location, and participation status at a glance, enabling peer mentors and coordinators to stay informed about scheduled group activities. The list is filtered to the user's organization context and respects module-toggle visibility rules. Offline caching ensures the last-fetched list remains accessible without connectivity, consistent with the platform's offline-first architecture.

Sources & reasoning

The mobile architecture section lists event wizard as a core screen and places events in the primary Add-tab navigation, implying a listing surface is equally core. The blueprint marks Event Listing MVP. Without a listing screen the event creation feature has no discovery path, making it a prerequisite for any event participation flow.

  • Bottom nav with 5 tabs: Home, Contacts, Add (modal launcher for Activity and Event wizards), Work, Notifications
  • docs/source/likeperson.md · line 295-299
    Screens - Role-specific home content (peer mentor vs coordinator variants) - Contacts list with role-specific views - Contact detail, edit, and peer mentor profile screens - Activity wizard (multi-step: contact → date → time → duration → summary) - E

Analysis

Business Value

Peer mentors and coordinators need a reliable, at-a-glance view of what is happening in their organization. Without event listing, created events are invisible to potential participants, making the creation feature effectively useless. The listing screen is the primary discovery surface that drives sign-up, reduces no-shows through visibility, and supports coordinators in monitoring participation levels. For Bufdir reporting, having a complete record of group events alongside individual activities provides a richer data picture of organizational reach and volunteer engagement across all partner organizations.

Implementation Notes

The EventListScreen fetches paginated results from GET /api/v1/events using the EventListService, which wraps the REST client with organization-scoped query parameters. Results are cached in Drift via the EventRepository for offline access. The list uses Flutter's ListView.builder for efficient rendering of large event sets. Sort order defaults to ascending by date; a filter chip row allows switching between upcoming and past events. Pull-to-refresh triggers a background sync. All list items are keyboard navigable and include semantic labels for screen-reader compatibility per WCAG 2.2 AA.

Quality Assurance

Peer Mentor · Coordinator (same flow)
1
Scenarios
4
UAT Steps
15
A11y Annotations
3
Role Boundaries
Peer Mentor

Peer Mentor

Quick UAT

  1. Logg inn i appen som Likeperson. Naviger til Arrangementer-fanen via bunnnavigasjonen.
  2. Bla gjennom listen over kommende arrangementer. Bekreft at tittel, dato, tid, sted og deltakerstatus vises for hvert arrangement.
  3. Bruk søkefeltet øverst på skjermen til å søke på navn på et arrangement. Bekreft at listen filtreres i sanntid.
  4. SlĂĄ av wifi og mobildata. Ă…pne Arrangementer-fanen pĂĄ nytt. Bekreft at sist hentede liste vises uten nettverkstilkobling.

Quick UAT — Accessibility

  1. Logg inn i appen som Likeperson. Naviger til Arrangementer-fanen via bunnnavigasjonen.
    • Screen reader Bunnnav-element annonseres som 'Arrangementer, fane, 3 av 5'; aktiv fane bekreftes ved valg.
    • Keyboard / focus Tab-rekkefølge: logg inn-skjema → bunnnav → listeinnhold. Piltaster navigerer mellom faner.
    • Focus visibility Synlig fokusring pĂĄ aktiv fane-knapp; ikon og etikett er semantisk merket.
    • Touch target Bunnnav-faner er minimum 44Ă—44 CSS px.
  2. Bla gjennom listen over kommende arrangementer. Bekreft at tittel, dato, tid, sted og deltakerstatus vises for hvert arrangement.
    • Screen reader Hvert listeelement annonseres som Ă©n sammenhengende enhet: 'Arrangementsnavn, dato, tid, sted, deltakerstatus'.
    • Keyboard / focus Piltaster navigerer mellom listeelementene. Enter ĂĄpner arrangementsdetaljer.
    • Zoom Listekortet er lesbart og ikke avskĂĄret ved 200 % zoom; status vises ikke bare med farge.
    • Contrast Deltakerstatus bruker ikon + tekstetikett i tillegg til farge; kontrast minimum 4.5:1 for tekst.
  3. Bruk søkefeltet øverst på skjermen til å søke på navn på et arrangement. Bekreft at listen filtreres i sanntid.
    • Screen reader Søkefelt annonseres som 'Søk i arrangementer, redigeringsfelt'. Antall resultater annonseres etter filtrering.
    • Keyboard / focus Tab nĂĄr søkefelt; skriv søkeord; filtret liste oppdateres uten ĂĄ flytte fokus.
    • Focus visibility Synlig fokusring pĂĄ søkefelt; tekstinnhold slettes via Escape-tast.
    • Live region 'X arrangementer funnet' annonseres som polite live region etter filtrering.
  4. SlĂĄ av wifi og mobildata. Ă…pne Arrangementer-fanen pĂĄ nytt. Bekreft at sist hentede liste vises uten nettverkstilkobling.
    • Screen reader Offlinebanner annonseres som 'Du er frakoblet. Viser lagret liste.' ved sideinnlasting.
    • Live region 'Frakoblet. Viser lagret innhold.' annonseres som polite live region nĂĄr offlinetilstand oppdages.
    • Contrast Offlinebanner bruker ikon + tekst; bakgrunnsfargen oppfyller 3:1 mot tilgrensende overflate.

Role Boundaries

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

    Organisasjonsadministratorer logger ikke inn i mobilappen; skjermen finnes ikke i admin-portalen.

  • Global Administrator

    Global administrator omdirigeres til admin-portalen ved innlogging; ingen tilgang til mobilappens arrangementsvisning.

  • Prospective Organization Representative

    Rollen har ingen brukerkonto i operativsystemet; tilgang avvises ved autentisering.

Expected End State

Arrangementslisten vises korrekt med tittel, dato, tid, sted og deltakerstatus. Søk filtrerer listen i sanntid. Sist hentede liste er tilgjengelig uten nettverkstilkobling.

User Stories

No user stories have been generated for this feature yet.