Coordinator
Coordinators are employed or senior volunteer staff within local or regional associations who manage a group of peer mentors. They are responsible for overseeing activity registration quality, dispatching assignments, approving travel reimbursements, generating Bufdir reports, and maintaining an overview of their peer mentor pool. Coordinators interact with the app more intensively and strategically than peer mentors, often working across many mentors simultaneously. They have intermediate digital skills and use the app both on mobile and potentially on a tablet or larger device.
Story Priority Distribution
User Stories by Feature
Email & Password Login
View FeatureThe logout action is accessible from the app's settings menu. When triggered, the Auth Service calls Supabase Auth's sig...
When authentication fails, the user must receive actionable, localized feedback rather than a generic error. The Auth Se...
From the login screen, the user can navigate to the password reset flow by tapping a 'Forgot password?' link. The Passwo...
When the user taps the reset link in their email, the app handles the deep-link redirect via the registered URI scheme a...
After a successful email/password login, the Supabase JWT session token is securely persisted via Flutter Secure Storage...
Any registered user must be able to authenticate using their email address and password as a universal fallback authenti...
BankID & Vipps Authentication
View FeatureWithin the app's settings, users can view their current biometric authentication status and manage enrollment. Options i...
After a successful first-time BankID or Vipps authentication, the app prompts the user to enable biometric re-authentica...
On subsequent app launches, when the user has previously enrolled biometrics, the Biometric Auth Screen presents the pla...
When biometric authentication fails for any reason — hardware failure, too many failed attempts, biometric data changed...
Both BankID and Vipps can return a variety of error states: user cancellation, network timeout, provider unavailability,...
When a user authenticates with Vipps and the Vipps OIDC token contains a personnummer claim, the Vipps Integration Servi...
After successful BankID or Vipps authentication, the Auth Token Repository stores the Supabase access token and refresh...
On first login, the user selects BankID as their authentication method. The app launches an in-app browser that navigate...
On first login, the user selects Vipps as their authentication method. The app launches an in-app browser pointing to th...
Role-Based Access Control
View FeatureUsers who hold multiple roles across their organizational memberships can toggle their active role via the Role Switch W...
The Role Config Store provides a local cache layer for role and membership data fetched from Supabase. When the device l...
When a user switches their active role via the Role Switch Widget, the Role Authorization Service triggers a full naviga...
When a user belongs to multiple organizations or local associations, the Organization Selection Screen is displayed imme...
When an authenticated user navigates to a route that requires permissions their current role does not grant, the Permiss...
The coordinator role in the Role Authorization Service grants a defined permission set that includes elevated features n...
The Permission Guard is integrated into GoRouter's redirect mechanism and is evaluated on every navigation event includi...
Activity Logging Wizard
View FeatureThe Activity Registration Service implements partial save (draft persistence) throughout the wizard flow. After each ste...
The Activity Summary Screen is displayed as the final step of the wizard, presenting a read-only summary of all entered...
The Default Values Widget is an inline settings component embedded within the wizard flow and accessible from user setti...
When the wizard pre-fills fields with stored defaults, users can edit any field within the standard wizard flow to overr...
Coordinators have the authority to register activities on behalf of peer mentors within their organizational scope. In c...
When initiating an activity registration, the user is presented with the Activity Type Selection Screen showing all acti...
The Activity Wizard Screen implements a multi-step registration flow using BLoC for step state management and GoRouter n...
Quick Registration mode is triggered when the user has stored defaults that fully satisfy the required activity fields (...
Event Creation & Management
View FeatureThe Event Detail Screen exposes an edit action (via an icon or contextual menu) that opens an inline edit mode or naviga...
The Event Detail Screen includes an 'Add Participants' action that opens the Event Participants Widget in an addition mo...
Each participant entry on the Event Detail Screen includes a remove action (swipe-to-delete or a contextual button). Tap...
The Event Detail Screen displays event title, date, time, duration, location, and summary in a structured layout, follow...
When a Bufdir report is generated, the Event Service exposes aggregation methods that count each event as one activity e...
The event creation wizard walks the user through sequential steps: event title → date → time → duration → location → sum...
The Event Participants Widget renders a debounced search input that queries the Contact Repository against the user's or...
Bulk Registration & Proxy Reporting
View FeatureThe Delegation Repository provides read access to the delegation_grants table, which records the acting coordinator's us...
During and after a bulk registration submission, the Batch Submission Progress Widget is rendered inline within the Bulk...
When one or more mentor rows display an error state in the Batch Submission Progress Widget, a retry action (button or t...
The Peer Mentor Selection Widget applies a 'peer_mentor' role filter to the Contact Repository to render only the coordi...
Proxy and bulk registration routes are guarded at the Flutter navigation layer: only users with coordinator or admin rol...
The coordinator opens the Bulk Registration Screen and is presented with a multi-select peer mentor picker filtered to t...
The coordinator navigates to the Proxy Registration Screen, which is a role-guarded route available only to coordinator...
Document Attachment to Activities
View FeatureThe Document Attach Widget provides remove controls (e.g., a delete icon) on each document thumbnail. Tapping the remove...
Coordinators preparing Bufdir reports need confidence that activities with documentary evidence requirements (such as ev...
After completing an activity registration, the user sees a Document Attach Widget embedded in the activity summary scree...
Within the File Upload Screen, the user can choose the camera option to open the device camera through Flutter's image_p...
Within the File Upload Screen, users can choose the gallery or file picker option. Flutter's image_picker handles galler...
The Document Attach Widget is embedded not only in the activity summary screen during registration but also in the activ...
The File Upload Screen performs client-side validation before any network request: file size must not exceed 10 MB and t...
Contact List & Search
View FeatureThe View Switcher Widget provides a toggle control that allows users to switch between the Contacts list view and the Pe...
The Contact Filter Panel provides a slide-up or inline panel with filter controls for status (active, paused, inactive),...
The Contact Repository caches contact data locally using Riverpod with periodic background refresh when connectivity is...
All elements of the Contact List screen must meet WCAG 2.2 AA accessibility requirements. Contact Card Widgets carry sem...
Coordinators require quick access to management actions from the contact list to minimise navigation overhead during hig...
Both coordinators and peer mentors access the Contacts screen, but the data shown is scoped to their organizational role...
The Contact Search Bar provides an inline search experience with debounced input that triggers Supabase queries filtered...
Contact Detail & Management
View FeatureThe Custom Fields Table Widget fetches the organisation's field definitions from the organisation labels system in Supab...
Within the Edit Contact Screen, the Custom Fields Table Widget switches to editable input mode for coordinators. Each cu...
The Edit Contact Screen implements periodic auto-save of the current form state to SQLite on the device. The draft is ke...
The Contact Detail Screen supports deep-link navigation, meaning it can be opened directly from any screen that referenc...
The Contact Notes Repository implements a local-first caching strategy. Recent notes for each contact are cached in SQLi...
The Contact Detail Screen is the primary read view for a single contact record. It presents personal information (name,...
The Edit Contact Screen provides a guided, step-by-step reactive form built with Flutter's Form widget and custom AppTex...
The Contact Notes Widget provides inline add-note functionality accessible from the contact detail screen. When a note i...
The Contact Notes Widget renders the full notes history as a scrollable vertical timeline. Each note entry displays the...
The Edit Contact Screen applies field-level validation as part of Flutter's reactive form validation system. Validation...
Peer Mentor Profiles
View FeatureThe assignment history tab on the peer mentor detail screen lists all assignments dispatched to that mentor, including o...
Peer mentor profiles are accessible from multiple entry points in the application: the contacts list (when filtered to s...
The peer mentor card widget provides a condensed summary card optimised for list and search contexts. Each card renders...
The peer mentor profile service uses a Riverpod provider backed by real-time Supabase subscriptions to compute derived s...
The certification tab within the peer mentor detail screen surfaces data from the certifications and certification_renew...
Coordinators require a comprehensive view of each peer mentor's profile to efficiently dispatch assignments and manage t...
Peer Mentor Pause & Availability
View FeatureThe member overview screen displays each mentor's availability status as a colour-coded badge (active, paused, inactive)...
Coordinators have administrative oversight over peer mentors within their organisation. When a mentor reports unavailabi...
The Coordinator Notification Service is triggered automatically on every availability status change within the Pause Man...
A Supabase Edge Function (Certificate Expiry Scheduler) runs on a daily cron schedule. Each run queries all HLF peer men...
Encrypted Task Assignment to Peer Mentors
View FeatureFrom the Assignment Status Overview Screen, the coordinator taps a specific assignment row to open its detail view. The...
The coordinator opens the Assignment Status Overview Screen, which loads all open assignments from the Task Assignment R...
A Supabase scheduled Edge Function (Assignment Reminder Service) runs daily and scans all assignment_dispatches records...
The coordinator opens the Task Assignment Screen and fills in the sensitive fields: recipient contact name, home address...
During the onboarding flow, after successful BankID or Vipps authentication, the Key Management Service generates an asy...
Geographic Matching & Map View
View FeatureThe coordinator opens the Map View Screen, which renders peer mentor home-area centroids (municipality or postal code le...
A horizontal filter bar sits at the top of the Map View Screen with toggle chips for 'Available', 'Paused', and 'All'. S...
When a coordinator taps a location pin, the Mentor Map Bottom Sheet slides up from the bottom of the screen displaying a...
The 'View Full Profile' action in the Mentor Map Bottom Sheet navigates the coordinator to the Peer Mentor Detail Screen...
The Geographic Matching Service computes proximity rankings for peer mentor home-area centroids relative to a specified...
Each Location Pin Widget renders with a colour that reflects the mentor's current availability status pulled from the Av...
The Privacy Consent Service manages the opt-in consent flow presented to peer mentors during onboarding or profile setup...
The Map View Screen is protected by a role-based access guard that allows only coordinator and above roles to navigate t...
Travel Reimbursement Registration
View FeatureThe Expense Repository provides a query interface to fetch the authenticated user's expense report history from the `tra...
Coordinators have the organisational responsibility to ensure that peer mentors who cannot use the app directly are stil...
After selecting a fixed-amount expense type (toll, parking, or public transit), the wizard renders the Expense Amount In...
The Expense Rules Riverpod Provider fetches organisation-specific reimbursement configuration from Supabase and makes it...
The expense type selector is the mandatory first step in the travel reimbursement wizard. It presents a dropdown sourced...
After selecting 'Kilometre allowance' as the expense type, the wizard renders the Mileage Calculator Widget. The user en...
The Expense Registration Screen orchestrates the full wizard flow using the Expense Registration BLoC for state manageme...
Receipt Upload & Management
View FeatureFrom the bottom sheet action menu opened by the Camera Capture Widget, the user can select 'Choose from Library' to open...
The Receipt Upload Screen renders a thumbnail grid via the Receipt Thumbnail Widget. Each thumbnail shows the compressed...
When a coordinator opens a reimbursement claim in the approval queue, the expense detail view surfaces receipt thumbnail...
Users can open the receipt upload screen from within the expense detail view and attach one or more receipt images to th...
When on the Receipt Upload Screen, the user can tap a camera action button that opens a bottom sheet action menu via the...
Reimbursement Approval Workflow
View FeatureThe Approval Status Widget provides a compact, reusable status indicator that can be embedded wherever a reimbursement s...
From the Reimbursement Detail Screen, the coordinator taps the Reject button. A mandatory comment field is presented — t...
Both coordinators and organisation administrators can open the Reimbursement Detail Screen for any submission (not just...
The Approval Queue Screen maintains a Riverpod stream provider subscribed to real-time Supabase changes on the reimburse...
The coordinator accesses the Approval Queue Screen, which subscribes to real-time Supabase changes on the reimbursement_...
When a coordinator selects a submission from the approval queue, the Reimbursement Detail Screen loads the complete reco...
From the Reimbursement Detail Screen, the coordinator taps the Approve button. An optional comment field appears (e.g.,...
Bufdir Automated Reporting
View FeatureThe Report Preview Screen renders the generated report in the layout required by Bufdir, showing all aggregated data sec...
The Bufdir Report Screen displays a chronological list of all previously generated report snapshots for the user's organ...
From the report history list, the user can select any stored snapshot and trigger a re-export. The export is rendered fr...
Large organizations with many registered activities may take significant time to aggregate data for a full reporting per...
The system asynchronously aggregates all registered activities, events, and participant data within the selected reporti...
The Report Period Selector Widget presents available Bufdir reporting periods as defined by the organization's grant req...
The Report Export Service renders the finalized report snapshot into the selected export format. PDF export produces a f...
Coordinator Reports & Dashboards
View FeatureThe coordinator dashboard includes a period-over-period comparison capability exposed via the Report Filter Widget. The...
The Report Filter Widget provides a multi-select filter panel that allows users to combine filters across area, organiza...
The Export Action Widget is embedded in the coordinator dashboard toolbar and triggers a CSV export of whatever data is...
The coordinator dashboard surfaces a dedicated section or filterable view highlighting peer mentors with zero or below-a...
Upon navigating to the coordinator dashboard, the user sees a consolidated view of activity statistics, peer mentor coun...
The Report Scope Resolver service reads the authenticated user's role and organizational memberships to derive a concret...
Assignment Counting & Honorarium Tracking
View FeatureThe Assignment Count Screen includes a milestone history section sourced from honorarium records in the Assignment Count...
The Coordinator Dashboard surfaces a summary view powered by the Honorarium Calculation Service, listing peer mentors wh...
A dedicated Assignment Count Screen displays the peer mentor's total completed assignments alongside a visual progress i...
When the Honorarium Calculation Service detects that a newly completed assignment has caused a peer mentor's count to cr...
A Supabase PostgreSQL database trigger fires automatically on every insert into the assignments table, incrementing a de...
Duplicate Activity Detection
View FeatureAfter the Duplicate Warning Dialog is displayed, the user has the option to review the conflicting record and confirm th...
When the Duplicate Warning Dialog is presented, the user can choose to cancel the submission instead of proceeding. Canc...
When a coordinator submits a bulk registration batch, the Duplicate Detection Service evaluates each activity record in...
When a user submits an activity record, the system runs a server-side similarity check against existing activities for t...
Push Notifications & Scenario-Based Alerts
View FeatureEach push notification payload includes a deep-link route payload that the Push Notification Service interprets when the...
When a peer mentor updates their availability status to 'paused' or back to 'active' via the Pause Management Service, a...
The Notification Item Widget supports three interaction patterns for notification management. Tapping a notification mar...
The Notifications Screen provides a chronological, date-grouped list of all push notifications delivered to the authenti...
The Notification Settings Screen allows each user to control which push notification categories they subscribe to. A mas...
The Calendar Sync Service integrates with the device's native calendar using the device_calendar Flutter plugin. On firs...
In addition to sending a reminder to the peer mentor at the 10-day mark, the Notification Scenario Engine also sends a p...
Encrypted Assignment Dispatch
View FeatureThe Assignment Status Dashboard aggregates all open assignments dispatched by the coordinator (or within their organizat...
Within the Assignment Status Dashboard, the coordinator can filter to show only unacknowledged assignments — those in 'D...
On first BankID-authenticated login, the Key Management Service generates an asymmetric X25519 key pair. The private key...
The coordinator opens the Assignment Compose Screen and selects the target peer mentor. The screen retrieves the recipie...
Assignment Status Tracking
View FeatureCoordinators managing large peer mentor teams need flexible filtering to reduce cognitive load when working through assi...
Coordinators using the assignment status screen during active supervision sessions need real-time visibility into state...
Both peer mentors (for their own assignments) and coordinators (for any assignment in their scope) need access to the fu...
The urgency badge widget is a reusable component applied to each assignment row in the status list. It calculates elapse...
In addition to notifying the peer mentor (story-006), the auto-reminder system also alerts the responsible coordinator w...
Coordinators require a cross-peer-mentor assignment overview to fulfill their supervisory responsibilities. The assignme...
Yearly Impact Summary
View FeatureWithin the impact summary sequence, individual metric slides use the Animated Stats Widget to display numbers using Flut...
In addition to the annual summary triggered on 31 December, the system generates a half-year variant on 30 June. The Yea...
Within the Impact Summary Screen, a share button invokes the Impact Share Service to generate either a static shareable...
The Impact Summary Repository caches the summary JSON payload locally on the device after the first successful load. Sub...
When the Impact Calculation Service determines that a user has zero qualifying activities for the summary period, it gen...
The Impact Summary Trigger Config infrastructure component exposes organisation-level settings that control when impact...
When a new annual impact summary is available (triggered on 31 December), the user can open a full-screen animated retro...
When the Impact Summary Trigger Service generates a new summary for a user, it dispatches a push notification via the Pu...
The Impact Summary Screen presents the retrospective as a paginated sequence of themed story slides rendered by the Year...
Achievement Badges & Recognition
View FeatureWhen the Achievement Service determines that a user has crossed a badge threshold — triggered as a background job after...
Tapping a badge on the Achievements screen expands or navigates to a detail view showing the badge's full name, category...
The Achievement Service supports a category of coordinator-specific organisational award badges that are distinct from a...
The Badge Repository stores badge definitions with an organisation scope field, and the Achievement Service evaluates el...
The Achievements screen displays every badge in the user's organisation-scoped catalogue, grouped by recognition categor...
Each Badge Widget renders a circular progress ring around the badge illustration indicating the user's current progress...
Every Badge Widget includes a descriptive alt text string that conveys the badge name, its unlocked/locked state, and cu...
Course Enrollment Management
View FeatureOn successful enrollment, the CourseEnrollmentService triggers the Push Notification Gateway to dispatch a confirmation...
Coordinators hold a role that bypasses the row-level security restriction that limits regular users to enrolling only th...
The Course Catalog Screen presents all available courses in a scrollable list or grid view, showing each course's title,...
The Course Detail Screen presents comprehensive information about a selected course: description, prerequisite certifica...
The CourseEnrollmentService returns typed error states for two failure scenarios: full capacity and unmet prerequisites....
After tapping the enrollment CTA on the Course Detail Screen, the user is presented with the Enrollment Confirmation Scr...
Digital Certificate Management
View FeatureHLF's physical certification card is culturally significant — referred to as an 'adelsmerke' (badge of honour) — and the...
The Certificate Service supports configurable lead-time intervals for expiry reminders. Coordinators can adjust the defa...
The Certificate Card Widget renders a detailed view of an individual certification record. For peer mentors, this provid...
Coordinators today track certificate expiry manually using spreadsheets — a process that does not scale and is prone to...
Coordinators are responsible for issuing certificates after a peer mentor completes the required course or programme. Th...
The Certificate Service integrates with the peer mentor pause management flow. When a certificate expiry check detects t...
Mentor Program Management
View FeatureCoordinators can dissolve a pairing directly from the Pairing Detail Screen using the coordinator intervention controls....
From the Pairing Detail Screen, coordinators can mark individual programme milestones as complete using the intervention...
Coordinators access the Mentor Program Screen to see a comprehensive list of all active pairings within their organisati...
Both peer mentors and coordinators can access the Pairing Detail Screen for a specific pairing by tapping an entry in th...
Coordinators use the Mentor Match Widget to initiate new pairings. The widget surfaces available peer mentors and eligib...
Mentor Workshop & Career Tools
View FeatureThe Workshop Notes Widget integrates with the Speech Recognition Service from the speech-to-text-input feature, enabling...
The Workshop Management Service exposes completed workshop counts to the Bufdir reporting pipeline. The Workshop List Sc...
The Participant List Screen displays enrolled participants for a given session, pulling from the contacts database filte...
The Workshop Notes Widget provides an embeddable rich-text note-taking area scoped to a single workshop session. Notes a...
The To-Do List Widget is a lightweight checklist embedded within a workshop session and persisted alongside the session...
The Workshop Session Screen provides action buttons for each valid lifecycle transition. The Workshop Management Service...
The Workshop Session Screen acts as a dashboard for all session-related information and actions. It displays session met...
The coordinator needs a central overview of all workshop sessions they facilitate, organized by lifecycle status (upcomi...
Coordinators need to create workshop sessions in advance to prepare the digital workspace — adding participants, pre-loa...
Screen Reader Support
View FeatureWeb fallback views rendered in the application must expose proper ARIA landmark regions (main, nav, aside, banner), ARIA...
The Accessibility Config Repository persists per-user accessibility preferences to the accessibility_preferences table i...
The Semantic Label Service is responsible for triggering live region announcements whenever dynamic UI state changes occ...
All wizard screens in the app use a step progress model that is currently communicated visually via a progress bar or st...
Every widget in the application — including AppButton, AppTextField, navigation bars, cards, dialogs, and list items — m...
Sensitive fields — including encrypted assignment details, contact personal identification numbers, epikrise content, me...
Cognitive Accessibility
View FeatureCognitiveModeService enforces a maximum-five-item constraint on all selection lists when cognitive mode is active. Lists...
Coordinators can access an accessibility overview within the member management section that indicates which peer mentors...
The StepProgressWidget renders in all wizard screens (activity registration, event creation, bulk registration, NDA sign...
The SimplifiedNavigationScreen consumes the simplified layout flag from CognitiveModeService and conditionally renders a...
The shared PageHeader widget enforces the presence of a back button on all non-root screens via a required parameter. Sw...
AccessibilityPreferencesRepository persists the cognitive mode flag, font scale, and contrast theme as a per-user record...
Users can toggle cognitive accessibility mode on or off through the settings screen. When enabled, CognitiveModeService...
Typography & Contrast Settings
View FeatureThe Accessibility Settings screen displays a live preview area that updates in real time as the user interacts with the...
A dedicated Accessibility entry is surfaced in the main Settings screen, giving users a clear and discoverable path to f...
When a user saves font scale or contrast theme preferences, ThemeService writes the values to ThemeRepository, which per...
Users access the Accessibility Settings screen and use the Font Scale Widget to select a font scale factor. The widget r...
The Contrast Theme Widget presents three theme options with colour swatch previews: Standard (default design token set),...
The WCAG Contrast Validator service programmatically asserts minimum contrast ratios (4.5:1 for normal text, 3:1 for lar...
Coordinator Member Overview
View FeatureThe Member Status Filter Widget integrates with the Navigation State Store to persist active filter selections across na...
The Coordinator Overview Service computes each peer mentor's current assignment count relative to configured honorarium...
The Member Status Filter Widget renders a horizontal chip bar at the top of the member overview screen with multi-select...
The Coordinator Overview Service aggregates multiple status signals for each peer mentor — last activity date, pause dur...
Access to the member overview screen is gated by the Permission Guard service, which validates that the authenticated us...
The member overview screen presents a unified, scrollable list of all peer mentors and members scoped to the authenticat...
Coordinator Activity Approval & Correction
View FeatureAny authorized user (coordinator within their organizational scope, or organization administrator for their entire organ...
The approval queue supports multi-select mode allowing coordinators to check multiple registrations simultaneously. Once...
When a coordinator determines a registration is invalid and cannot be salvaged through correction (e.g., it is a clear d...
When the Duplicate Detection Service flags a registration as a potential duplicate of an existing approved record, it ap...
The approval queue presents all activity registrations awaiting coordinator review, scoped to the coordinator's organiza...
When a coordinator opens a pending registration from the approval queue, they see the full record including activity typ...
When a coordinator identifies an error in a submitted registration (wrong activity type, incorrect date, wrong duration,...
Navigation Shell
View FeatureThe Navigation Shell Widget includes an AppBar with a hamburger menu icon that opens a Flutter Drawer. The Drawer lists...
Using Flutter's StatefulShellRoute, each tab branch maintains its own Navigator stack and widget state independently. A...
The App Router Service is configured with go_router deep link support. When the app receives a push notification tap eve...
The Navigation Shell Widget and Bottom Navigation Bar are built using Flutter's Accessible Widget Library with semantic...
The bottom navigation bar provides persistent, one-tap access to all five primary tab destinations throughout the app. T...
The App Router Service applies role-based route guards at the shell level using Riverpod providers that reactively read...
The App Router Service uses a Riverpod provider that listens to Supabase's auth state stream. When the authentication st...
Settings & Preferences
View FeatureA language selection card in Settings allows the user to choose their preferred display language. The selection is appli...
User preferences (notification toggles, language selection, and references to accessibility settings) are stored using a...
The Settings screen provides a notifications card section where users can enable or disable individual notification cate...
The Settings screen includes an account management card containing a sign-out action. Tapping the sign-out button presen...
The Settings screen includes a dedicated accessibility card section that serves as the navigation entry point to the ful...
The Settings screen must be reachable via the hamburger menu on every tab of the bottom navigation bar. The screen displ...