medium complexity extracted Activity Registration & Reporting Confidence: 100%
11
Components
198
Shared
20
User Stories
Yes
Analyzed

Description

Core activity logging with the absolute minimum number of interaction steps. Peer mentors can record a completed activity in under two clicks using pre-filled default values: today's date, 30-minute duration, and the most recently used activity type. All defaults are overridable but never mandatory to change, ensuring that the most common case — a short, uncompensated session — requires almost no cognitive effort. The form surfaces only the fields required for the current registration context. NHF's Word-based manual workflow and HLF's 380-registrations-per-year use case both demonstrate that friction directly causes underreporting. The UI must feel closer to a check-in than a form, with a strong visual confirmation state so the peer mentor knows the record was saved.

Analysis

Business Value

Eliminates the primary cause of underreporting across all four organisations. Every activity that gets logged represents validated output for Bufdir funding applications, internal KPIs, and peer mentor recognition. Even a 20% improvement in capture rate materially affects grant amounts and organisational accountability.

Implementation Notes

Use a bottom-sheet wizard pattern (already established in the codebase) with steps: activity type → date → duration → optional notes → confirm. Persist last-used values in local storage. Duration picker should offer preset chips (15 min, 30 min, 1 h, 2 h) before a free-entry fallback. Bloc/Cubit per wizard step. Supabase insert on final confirm with optimistic local state update.

Components (209)

User Interface (6)

Service Layer (3)

Data Layer (2)

Shared Components

These components are reused across multiple features

User Interface (59)

ui Role Switch Widget medium Shared ui Role-Aware Bottom Navigation medium Shared ui Activity Type Selection Screen low Shared ui Speech-to-Text Field Overlay medium Shared ui Receipt Capture Widget medium Shared ui Peer Mentor Single Selector low Shared ui Proxy Audit Badge Widget low Shared ui Export Period Picker low Shared ui Contact Card Widget low Shared ui Contact Search Bar low Shared ui Peer Mentor Card Widget low Shared ui Activity History List low Shared ui Multi-Chapter Affiliation Chip Widget medium Shared ui Certification Status Badge low Shared ui Duplicate Activity Warning Dialog medium Shared ui Mentor Multi-Select Widget medium Shared ui Map Filter Panel medium Shared ui Claim Status Badge low Shared ui Export Date Range Picker low Shared ui Custom Date Range Picker low Shared ui Duplicate Activity Warning Dialog low Shared ui Proxy Activity Form medium Shared ui Proxy Peer Mentor Selector medium Shared ui Expected Return Date Picker low Shared ui Pause Activation Screen low Shared ui Pause Status Indicator low Shared ui Admin KPI Stat Widget low Shared ui Organisation Hierarchy Navigator high Shared ui Bufdir Period Selector Widget low Shared ui Export History List medium Shared ui Activity Type Donut Chart medium Shared ui Monthly Activity Bar Chart medium Shared ui Statistics Period Filter Bar low Shared ui Statistics Summary Cards low Shared ui Notification Badge Widget low Shared ui Certificate Expiry Status Indicator low Shared ui Animated Stat Card Widget medium Shared ui In-App Notification Banner low Shared ui Accessible Modal Sheet Widget high Shared ui Live Region Announcer medium Shared ui Semantics Wrapper Widget medium Shared ui Sensitive Field Warning Dialog high Shared ui Confirm Before Submit Screen medium Shared ui Inline Contextual Help Widget low Shared ui Labelled Navigation Bar low Shared ui Plain Language Error Display low Shared ui Single-Action Screen Layout medium Shared ui Wizard Progress Indicator low Shared ui Accessible Text Style System medium Shared ui Accessible Touch Target Wrapper low Shared ui Contrast-Safe Color Palette Widget medium Shared ui Accessible Bottom Navigation Bar medium Shared ui Modal Close Button low Shared ui Persistent Back Button low Shared ui Vertical Scroll Container low Shared ui Organization Card Widget low Shared ui Terminology-Aware Text Widget low Shared ui FeatureGate Widget low Shared ui Chapter Switcher medium Shared

Service Layer (52)

service Authentication Service medium Shared service Authentication Session Manager medium Shared service Biometric Authentication Service medium Shared service Biometric Authentication Service medium Shared service Biometric Authentication Service medium Shared service Permission Checker Service medium Shared service Role State Manager medium Shared service No-Access Route Guard low Shared service Activity Type Metadata Resolver low Shared service Chapter Scope Resolver medium Shared service Organisation Hierarchy Resolver medium Shared service Coordinator Notification Service medium Shared service Duplicate Activity Detection Service high Shared service Mentor Filter Service low Shared service Receipt Threshold Validator low Shared service Approval Status Notification Service medium Shared service Threshold Evaluation Service medium Shared service Declaration Encryption Service high Shared service Organization Feature Flag Service low Shared service Participant Deduplication Service high Shared service Reporting Period Service medium Shared service Activity Attribution Service low Shared service Proxy Duplicate Detection Service medium Shared service Pause Management Service medium Shared service Pause Notification Service medium Shared service Admin Export Service medium Shared service Admin Row-Level Security Guard high Shared service Organisation Hierarchy Service high Shared service User Management Service high Shared service Role Access Validator low Shared service Peer Mentor Stats Aggregator medium Shared service Push Notification Dispatcher medium Shared service Notification Preference Service low Shared service Scenario Deep-Link Router medium Shared service Scenario Notification Content Builder medium Shared service Badge Criteria Integration medium Shared service Activity Summary Aggregator low Shared service Focus Management Service medium Shared service Screen Reader Detection Service medium Shared service Sensitive Field Privacy Guard high Shared service Plain Language Content Service medium Shared service Wizard State Manager medium Shared service Tab State Manager medium Shared service Organization Route Guard medium Shared service Tenant Context Service high Shared service Label Key Resolver Service low Shared service Organization Labels Notifier medium Shared service FeatureFlagProvider (Riverpod) medium Shared service Access Scope Service high Shared service Hierarchy Aggregation Service high Shared service Hierarchy Service high Shared service Unit Assignment Service medium Shared

Data Layer (33)

Infrastructure (54)

infrastructure Keyboard-Aware Layout Utility low Shared infrastructure Supabase Auth Client low Shared infrastructure Deep Link / OAuth Redirect Handler medium Shared infrastructure Secure Storage Adapter low Shared infrastructure Supabase Session Manager medium Shared infrastructure URL Launcher Utility low Shared infrastructure Local Storage Adapter low Shared infrastructure Supabase Activity Client low Shared infrastructure Organization Labels Provider low Shared infrastructure Supabase Client low Shared infrastructure Organisation Field Config Loader medium Shared infrastructure Speech-to-Text Adapter medium Shared infrastructure File Download Handler low Shared infrastructure Duplicate Reviewed Flag Middleware low Shared infrastructure Contact RLS Query Builder low Shared infrastructure Contact Form Validator low Shared infrastructure Design Token Theme low Shared infrastructure Organization Labels Provider low Shared infrastructure Supabase Client Provider low Shared infrastructure Search Debounce Utility low Shared infrastructure Expense Type Analytics Tracker low Shared infrastructure Receipt Image Picker Integration low Shared infrastructure CSV / JSON File Generator medium Shared infrastructure Coordinator Role Guard low Shared infrastructure Nightly Job Scheduler medium Shared infrastructure Supabase RLS Policy Configuration high Shared infrastructure Export File Storage Adapter low Shared infrastructure Supabase Storage Adapter low Shared infrastructure Peer Mentor Pause Management Service medium Shared infrastructure Push Notification Service medium Shared infrastructure fl_chart Adapter medium Shared infrastructure Push Notification Service low Shared infrastructure FCM Push Notification Sender medium Shared infrastructure FCM Notification Dispatcher medium Shared infrastructure Push Notification Dispatcher medium Shared infrastructure Supabase Realtime Subscription Service medium Shared infrastructure Organisation Data Isolation Guard low Shared infrastructure Push Notification Dispatcher medium Shared infrastructure Deep Link Handler medium Shared infrastructure QR Code Generator low Shared infrastructure Share Sheet Bridge low Shared infrastructure Semantics Service Facade medium Shared infrastructure Accessibility Design Token Enforcer medium Shared infrastructure Accessible Theme Builder medium Shared infrastructure Navigation Route Configuration medium Shared infrastructure Accessibility Live Region Announcer low Shared infrastructure Feature Flag Provider low Shared infrastructure Secure Storage Adapter low Shared infrastructure Supabase RLS Tenant Scope Configurator medium Shared infrastructure Label Key Registry low Shared infrastructure Terminology Riverpod Providers low Shared infrastructure WCAG Semantics Label Resolver low Shared infrastructure Feature Flag Key Constants low Shared infrastructure RLS Policy Manager high Shared

User Stories (20)

Receive a Duplicate Activity Warning Before Submitting
medium 5 pts

As a As a Peer Mentor (Likeperson)

I want to be warned if the activity I am about to register appears to be a duplicate of one already submitted

So that I avoid accidentally logging the same session twice, which would inflate statistics and complicate Bufdir reports

Acceptance Criteria
  • Given I submit an activity of type 'Phone Call' on today's date for 30 minutes, and I already have a 'Phone Call' registration for today lasting 30 minutes, when I tap Confirm, then the duplicate warning bottom sheet appears before the record is saved
  • Given the duplicate warning is shown, when I tap 'Submit Anyway', then a reason selector appears with options (e.g. 'Two separate calls', 'Correcting previous entry') before the submission proceeds
  • Given the duplicate warning is shown, when I tap 'Cancel', then the bottom sheet closes and I am returned to the registration form with my data intact
  • +2 more
View Full Story →
Attach a Photo or Document to an Activity Registration
medium 5 pts

As a As a Peer Mentor (Likeperson)

I want to optionally attach a photo or document (such as an event invitation or a screenshot) to an activity I am registering

So that I can provide supporting evidence for the activity, which NHF requires for Bufdir verification

Acceptance Criteria
  • Given the registration confirmation view is shown, when I tap 'Add Attachment', then I can choose between 'Camera', 'Photo Library', and 'File' options
  • Given I select a photo from the library, when the attachment is processed, then it is compressed to under 1 MB and a thumbnail preview is shown on the confirmation view
  • Given I have attached two files, when I attempt to add a fourth, then an error message informs me the maximum of three attachments per registration has been reached
  • +2 more
View Full Story →
Use Speech-to-Text to Dictate Registration Notes
medium 5 pts

As a As a Peer Mentor (Likeperson)

I want to dictate my registration notes verbally after a session instead of typing them

So that I can complete documentation quickly and comfortably, especially when I have limited dexterity, poor lighting, or am on the move

Acceptance Criteria
  • Given I am on the notes step, when I tap the microphone button, then a recording-state indicator becomes visible and the device's speech recognition service is activated
  • Given speech recognition is active and I am speaking, when partial results are available, then the transcription preview field updates in real time with what has been recognised so far
  • Given I finish speaking and tap Stop, when recognition completes, then the transcribed text is inserted into the notes field and I can edit it before proceeding
  • +3 more
View Full Story →
Receive a Duplicate Activity Warning Before Submitting
medium 5 pts

As a As a Coordinator

I want to be warned if the activity I am about to register appears to be a duplicate of one already submitted

So that I avoid accidentally logging the same session twice, which would inflate statistics and complicate Bufdir reports

Acceptance Criteria
  • Given I submit an activity of type 'Phone Call' on today's date for 30 minutes, and I already have a 'Phone Call' registration for today lasting 30 minutes, when I tap Confirm, then the duplicate warning bottom sheet appears before the record is saved
  • Given the duplicate warning is shown, when I tap 'Submit Anyway', then a reason selector appears with options (e.g. 'Two separate calls', 'Correcting previous entry') before the submission proceeds
  • Given the duplicate warning is shown, when I tap 'Cancel', then the bottom sheet closes and I am returned to the registration form with my data intact
  • +2 more
View Full Story →
Attach a Photo or Document to an Activity Registration
medium 5 pts

As a As a Coordinator

I want to optionally attach a photo or document (such as an event invitation or a screenshot) to an activity I am registering

So that I can provide supporting evidence for the activity, which NHF requires for Bufdir verification

Acceptance Criteria
  • Given the registration confirmation view is shown, when I tap 'Add Attachment', then I can choose between 'Camera', 'Photo Library', and 'File' options
  • Given I select a photo from the library, when the attachment is processed, then it is compressed to under 1 MB and a thumbnail preview is shown on the confirmation view
  • Given I have attached two files, when I attempt to add a fourth, then an error message informs me the maximum of three attachments per registration has been reached
  • +2 more
View Full Story →
Use Speech-to-Text to Dictate Registration Notes
medium 5 pts

As a As a Coordinator

I want to dictate my registration notes verbally after a session instead of typing them

So that I can complete documentation quickly and comfortably, especially when I have limited dexterity, poor lighting, or am on the move

Acceptance Criteria
  • Given I am on the notes step, when I tap the microphone button, then a recording-state indicator becomes visible and the device's speech recognition service is activated
  • Given speech recognition is active and I am speaking, when partial results are available, then the transcription preview field updates in real time with what has been recognised so far
  • Given I finish speaking and tap Stop, when recognition completes, then the transcribed text is inserted into the notes field and I can edit it before proceeding
  • +3 more
View Full Story →
Add Optional Free-Text Notes to a Registration
high 3 pts

As a As a Peer Mentor (Likeperson)

I want to optionally add a brief text note to my activity registration

So that I can capture relevant context for the coordinator or for my own records without this step being mandatory or slowing down the common case

Acceptance Criteria
  • Given the notes step is visible, when I tap 'Skip', then I advance to the confirmation view without any note attached
  • Given I type a note of up to 1000 characters, when I proceed, then the note is saved with the registration
  • Given I attempt to type more than 1000 characters, when the limit is reached, then a character counter turns red and further input is blocked with an accessible error message
  • +2 more
View Full Story →
See a Personal Activity Count and Running Total on the Home Screen
high 3 pts

As a As a Peer Mentor (Likeperson)

I want to see a summary of how many activities I have registered this month and this year directly on my home screen

So that I feel recognised for my contributions and can easily verify that my registrations are being captured

Acceptance Criteria
  • Given I am on the peer mentor home screen, when the screen loads, then I see at minimum three stat cards: 'This month', 'Total hours this month', and 'This year'
  • Given I have registered 5 activities this month, when I view the home screen, then the 'This month' card displays 5
  • Given I tap the 'This month' stat card, when it is tapped, then I am navigated to the personal statistics view filtered to the current month
  • +2 more
View Full Story →
Override Date and Duration When Registering Retroactively
high 5 pts

As a As a Peer Mentor (Likeperson)

I want to easily change the date and duration from their defaults when I am registering an activity that happened earlier

So that I can accurately log sessions I completed yesterday or earlier in the week without being forced to use today's date

Acceptance Criteria
  • Given the date step is open, when I view it, then today's date is selected and the 6 previous days are shown as tappable date chips for quick selection
  • Given I tap a date chip for yesterday, when I proceed, then the registration uses that date without requiring me to open a full calendar
  • Given I need a date older than 7 days, when I tap 'Pick another date', then a full calendar date picker opens allowing selection of any past date
  • +3 more
View Full Story →
View and Edit a Recently Submitted Registration
high 5 pts

As a As a Peer Mentor (Likeperson)

I want to view a list of my recently submitted activity registrations and correct one if I made a mistake

So that I can fix errors immediately after registration without needing to contact my coordinator

Acceptance Criteria
  • Given I have just submitted a registration, when the confirmation view is shown, then an 'Edit this registration' button is visible
  • Given I tap 'Edit this registration', when the edit view opens, then all fields (activity type, date, duration, notes) are pre-populated with the submitted values
  • Given I correct the duration from 30 to 45 minutes and save, when I return to my activity list, then the entry shows 45 minutes and an 'edited' timestamp
  • +2 more
View Full Story →
Register an Activity While Offline
high 8 pts

As a As a Peer Mentor (Likeperson)

I want to complete an activity registration even when I have no internet connectivity

So that I can log sessions in low-connectivity environments (e.g. rural areas, basement venues) without losing my work

Acceptance Criteria
  • Given my device is offline (airplane mode), when I complete the full registration flow and tap Confirm, then the activity is saved locally and a confirmation view is shown with a 'Saved offline — will sync when connected' message
  • Given I have 3 pending offline registrations, when connectivity is restored, then all 3 are synced to Supabase within 60 seconds and the pending badges are removed
  • Given a sync fails due to a server error, when the sync is retried, then it retries up to 3 times with exponential backoff before surfacing an error to the peer mentor
  • +2 more
View Full Story →
Add Optional Free-Text Notes to a Registration
high 3 pts

As a As a Coordinator

I want to optionally add a brief text note to my activity registration

So that I can capture relevant context for the coordinator or for my own records without this step being mandatory or slowing down the common case

Acceptance Criteria
  • Given the notes step is visible, when I tap 'Skip', then I advance to the confirmation view without any note attached
  • Given I type a note of up to 1000 characters, when I proceed, then the note is saved with the registration
  • Given I attempt to type more than 1000 characters, when the limit is reached, then a character counter turns red and further input is blocked with an accessible error message
  • +2 more
View Full Story →
See a Personal Activity Count and Running Total on the Home Screen
high 3 pts

As a As a Coordinator

I want to see a summary of how many activities I have registered this month and this year directly on my home screen

So that I feel recognised for my contributions and can easily verify that my registrations are being captured

Acceptance Criteria
  • Given I am on the peer mentor home screen, when the screen loads, then I see at minimum three stat cards: 'This month', 'Total hours this month', and 'This year'
  • Given I have registered 5 activities this month, when I view the home screen, then the 'This month' card displays 5
  • Given I tap the 'This month' stat card, when it is tapped, then I am navigated to the personal statistics view filtered to the current month
  • +2 more
View Full Story →
Override Date and Duration When Registering Retroactively
high 5 pts

As a As a Coordinator

I want to easily change the date and duration from their defaults when I am registering an activity that happened earlier

So that I can accurately log sessions I completed yesterday or earlier in the week without being forced to use today's date

Acceptance Criteria
  • Given the date step is open, when I view it, then today's date is selected and the 6 previous days are shown as tappable date chips for quick selection
  • Given I tap a date chip for yesterday, when I proceed, then the registration uses that date without requiring me to open a full calendar
  • Given I need a date older than 7 days, when I tap 'Pick another date', then a full calendar date picker opens allowing selection of any past date
  • +3 more
View Full Story →
View and Edit a Recently Submitted Registration
high 5 pts

As a As a Coordinator

I want to view a list of my recently submitted activity registrations and correct one if I made a mistake

So that I can fix errors immediately after registration without needing to contact my coordinator

Acceptance Criteria
  • Given I have just submitted a registration, when the confirmation view is shown, then an 'Edit this registration' button is visible
  • Given I tap 'Edit this registration', when the edit view opens, then all fields (activity type, date, duration, notes) are pre-populated with the submitted values
  • Given I correct the duration from 30 to 45 minutes and save, when I return to my activity list, then the entry shows 45 minutes and an 'edited' timestamp
  • +2 more
View Full Story →
Register an Activity While Offline
high 8 pts

As a As a Coordinator

I want to complete an activity registration even when I have no internet connectivity

So that I can log sessions in low-connectivity environments (e.g. rural areas, basement venues) without losing my work

Acceptance Criteria
  • Given my device is offline (airplane mode), when I complete the full registration flow and tap Confirm, then the activity is saved locally and a confirmation view is shown with a 'Saved offline — will sync when connected' message
  • Given I have 3 pending offline registrations, when connectivity is restored, then all 3 are synced to Supabase within 60 seconds and the pending badges are removed
  • Given a sync fails due to a server error, when the sync is retried, then it retries up to 3 times with exponential backoff before surfacing an error to the peer mentor
  • +2 more
View Full Story →
Select Activity Type from Organisation-Labelled List
critical 5 pts

As a As a Peer Mentor (Likeperson)

I want to choose an activity type from a short, clearly labelled list that uses my organisation's own terminology

So that I always categorise my work correctly for Bufdir reporting without needing to understand technical codes or generic labels

Acceptance Criteria
  • Given I belong to organisation HLF, when I open the activity type selection step, then I see activity type names exactly as defined by the HLF administrator, not generic codes
  • Given the activity type list is loaded, when the list contains more than 8 items, then the most recently used 5 types appear at the top separated by a divider from the full list
  • Given I select an activity type, when I proceed to the next step, then the selected type is stored in the registration preferences store as my new default
  • +2 more
View Full Story →
Register a Simple Activity in Under Two Taps
critical 8 pts

As a As a Peer Mentor (Likeperson)

I want to register a completed peer support activity using pre-filled default values with minimal taps

So that I can log my work immediately after a session without it feeling like an administrative burden, ensuring my contributions are counted

Acceptance Criteria
  • Given I am logged in as a peer mentor, when I tap the Add button in the bottom navigation, then the activity registration bottom sheet opens immediately with today's date, 30-minute duration, and my most recently used activity type pre-filled
  • Given the bottom sheet is open with correct defaults, when I tap Confirm without changing anything, then the activity is saved and a confirmation view appears within 2 seconds
  • Given I have just submitted a registration, when the confirmation view is shown, then it displays the activity type, date, duration, and a success indicator
  • +3 more
View Full Story →
Select Activity Type from Organisation-Labelled List
critical 5 pts

As a As a Coordinator

I want to choose an activity type from a short, clearly labelled list that uses my organisation's own terminology

So that I always categorise my work correctly for Bufdir reporting without needing to understand technical codes or generic labels

Acceptance Criteria
  • Given I belong to organisation HLF, when I open the activity type selection step, then I see activity type names exactly as defined by the HLF administrator, not generic codes
  • Given the activity type list is loaded, when the list contains more than 8 items, then the most recently used 5 types appear at the top separated by a divider from the full list
  • Given I select an activity type, when I proceed to the next step, then the selected type is stored in the registration preferences store as my new default
  • +2 more
View Full Story →
Register a Simple Activity in Under Two Taps
critical 8 pts

As a As a Coordinator

I want to register a completed peer support activity using pre-filled default values with minimal taps

So that I can log my work immediately after a session without it feeling like an administrative burden, ensuring my contributions are counted

Acceptance Criteria
  • Given I am logged in as a peer mentor, when I tap the Add button in the bottom navigation, then the activity registration bottom sheet opens immediately with today's date, 30-minute duration, and my most recently used activity type pre-filled
  • Given the bottom sheet is open with correct defaults, when I tap Confirm without changing anything, then the activity is saved and a confirmation view appears within 2 seconds
  • Given I have just submitted a registration, when the confirmation view is shown, then it displays the activity type, date, duration, and a success indicator
  • +3 more
View Full Story →