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

Description

Coordinators can log activities on behalf of one or more peer mentors who are unwilling or unable to use the app themselves. Single-proxy mode allows the coordinator to select a peer mentor and fill in the activity wizard as if acting as that person. Bulk mode targets recurring group activities — e.g. a weekly exercise session — where the coordinator selects multiple peer mentors and a single activity record and creates linked individual registrations in one action. All proxy-created records are flagged with the coordinator's user ID as the recorder alongside the peer mentor's ID as the attributed actor, creating a clear audit trail. This distinction is important for Bufdir reporting: the activity counts toward the peer mentor's statistics, not the coordinator's.

Analysis

Business Value

Captures activity that would otherwise go entirely unrecorded because a subset of peer mentors will never self-report regardless of how simple the app is. For NHF with 1 400 local chapters, the volume of unrecorded activity this represents is significant.

Implementation Notes

Add a `recorded_by_user_id` column to the activities table in addition to `peer_mentor_id`. Coordinator's contact list (already in the app) provides the peer mentor selector. Bulk mode renders a multi-select list of contacts; on confirm, insert one activity row per selected peer mentor in a single Supabase RPC call (batch insert). Duplicate-detection logic (see NHF requirement) should check for same peer_mentor_id + activity_type + date within the same coordinator's bulk session.

Components (207)

User Interface (4)

Service Layer (3)

Data Layer (1)

Infrastructure (1)

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 (8)

View Audit Trail of All Proxy Registrations Submitted
medium 3 pts

As a As a Coordinator

I want to view a log of all activities I have registered on behalf of other peer mentors, with the ability to identify and review each proxy entry

So that I can verify the accuracy of my proxy submissions, correct errors, and demonstrate accountability when questioned about entries I have made on others' behalf

Acceptance Criteria
  • Given the coordinator navigates to their proxy activity log, when the log loads, then it shows all activities they have submitted on behalf of other peer mentors, sorted by most recent first
  • Given the proxy activity log is displayed, when the coordinator views an entry, then it shows the peer mentor's name, activity type, date, duration, submission timestamp, and the coordinator's name as submitter
  • Given the log is displayed, when the coordinator filters by a specific peer mentor, then only activities registered for that mentor are shown
  • +3 more
View Full Story →
Use Recurring Templates to Prefill Bulk Registrations
medium 5 pts

As a As a Coordinator

I want to save and reuse templates for recurring group activities so that I can register the same weekly or monthly activity with a single tap

So that the registration of predictable, repeated activities requires minimal effort and is consistently structured across time periods

Acceptance Criteria
  • Given the coordinator is on the bulk registration screen, when they tap 'Load template', then a list of their previously saved templates is shown with name, participant count, and activity type
  • Given the coordinator selects a template, when it loads, then the activity form and participant list are pre-populated with the template values
  • Given the coordinator has loaded a template, when they adjust individual fields (e.g., date, duration, remove one participant), then changes apply only to this submission and do not modify the saved template
  • +4 more
View Full Story →
Apply Default Activity Values for Faster Proxy Entry
high 2 pts

As a As a Coordinator

I want the proxy registration form to pre-fill with sensible defaults (today's date, standard duration, most-used activity type) that I can override when needed

So that entering a typical activity on behalf of a peer mentor requires as few taps as possible, matching the 'under two clicks' design goal

Acceptance Criteria
  • Given the coordinator opens the proxy activity form for a peer mentor, when the form renders, then the date field defaults to today's date
  • Given the coordinator opens the proxy activity form, when the form renders, then the duration field defaults to 30 minutes (or the organization's configured standard)
  • Given the coordinator has previously registered activities of the same type, when they open the proxy form, then the activity type pre-selects the most recently used type
  • +3 more
View Full Story →
Select Peer Mentors from Contact List for Proxy Registration
high 3 pts

As a As a Coordinator

I want to search and filter my assigned peer mentor contacts when choosing who to register activities for

So that I can quickly find the right peer mentor in large chapters without scrolling through an unfiltered list

Acceptance Criteria
  • Given the coordinator opens the peer mentor selector for proxy registration, when the list loads, then it shows all peer mentors within the coordinator's access scope, with name and chapter affiliation visible
  • Given the peer mentor selector is open, when the coordinator types in the search field, then the list filters in real time to show only matching names
  • Given the peer mentor selector is open, when the coordinator applies a status filter (e.g., 'Active only'), then paused or inactive peer mentors are hidden
  • +3 more
View Full Story →
Confirm and Review Bulk Registration Before Submission
high 3 pts

As a As a Coordinator

I want to see a clear summary of all activities I am about to submit in a bulk operation before they are saved

So that I can catch mistakes — wrong date, missing participants, wrong activity type — before the data is committed to the database

Acceptance Criteria
  • Given the coordinator has selected peer mentors and filled the activity form, when they tap 'Next', then a confirmation screen displays a summary of the activity details and the complete list of selected mentors
  • Given the confirmation screen is shown, when any mentor has a potential duplicate detected, then that mentor's row is highlighted with a warning icon and brief explanation
  • Given the confirmation screen is shown, when the coordinator taps 'Back', then they return to the form with all their selections and entries intact
  • +3 more
View Full Story →
Register Activity on Behalf of a Single Peer Mentor
high 5 pts

As a As a Coordinator

I want to register an activity on behalf of a specific peer mentor who is unable or unwilling to use the app themselves

So that no volunteer work goes unrecorded and the organization maintains complete activity data even for digitally excluded peer mentors

Acceptance Criteria
  • Given the coordinator is on the home or activity screen, when they tap the registration action button, then a mode selector appears offering 'For myself' or 'On behalf of a peer mentor' options
  • Given the coordinator selects proxy mode, when the peer mentor selector opens, then it displays a filterable list of all peer mentors assigned to the coordinator's chapter or scope
  • Given the coordinator selects a specific peer mentor, when they proceed to the activity form, then the form is pre-populated with defaults (today's date, standard duration) and clearly shows the selected peer mentor's name in the header
  • +3 more
View Full Story →
Detect and Resolve Duplicate Activities During Proxy Registration
high 5 pts

As a As a Coordinator

I want to be warned when a proxy registration I am submitting appears to duplicate an existing activity for the same peer mentor on the same date

So that I can avoid double-counting activities that would inflate statistics and create data integrity problems for Bufdir reporting

Acceptance Criteria
  • Given the coordinator submits a proxy registration, when the system detects an existing activity for the same peer mentor on the same date with the same activity type, then a duplicate warning dialog is shown before final save
  • Given the duplicate warning dialog is shown, when the coordinator reviews it, then the dialog displays the conflicting existing activity's details (date, duration, who registered it, registration source)
  • Given the duplicate warning is displayed, when the coordinator decides to proceed anyway, then the registration is saved with a flag indicating it was submitted despite a duplicate warning
  • +3 more
View Full Story →
Bulk Register the Same Activity for Multiple Peer Mentors
high 8 pts

As a As a Coordinator

I want to register the same activity (e.g., a weekly group session) for multiple peer mentors in a single submission

So that I can log recurring group activities in seconds rather than entering the same data repeatedly for each participant

Acceptance Criteria
  • Given the coordinator selects bulk registration mode, when the multi-select peer mentor list opens, then they can search, filter by chapter, and select multiple mentors with checkboxes
  • Given multiple peer mentors are selected, when the coordinator fills out the shared activity form, then all fields (activity type, date, duration, notes) apply to all selected mentors
  • Given the coordinator taps submit, when the bulk registration is processed, then a confirmation screen summarizes the number of registrations to be created and lists all selected mentors
  • +4 more
View Full Story →