Personal Activity Statistics
Feature Detail
Description
Personal Activity Statistics gives each peer mentor a clear, real-time view of their own contribution over time - total activities logged, hours spent, contacts supported, and trends by week, month, or year. The screen is designed for low digital-skill users, prioritising visual clarity (charts, colour-coded summaries) over raw numbers. Data is drawn from the local Drift database so the screen loads instantly even offline, with a background sync keeping figures current when connectivity is restored. The feature also surfaces motivational signals: streaks, personal bests, and a compact "this month vs last month" delta that reinforces the habit of regular logging. All visualisations meet WCAG 2.2 AA contrast requirements and are accompanied by accessible text alternatives so screen-reader users receive the same information as sighted users.
Analysis
Peer mentors are volunteers whose contribution is largely invisible - to their organisation, to funders, and often to themselves. Giving them a personal statistics view transforms abstract effort into tangible evidence of impact, directly addressing the motivation and retention challenge raised across all three workshop organisations. When volunteers can see that they have completed 47 activities this year and supported 12 contacts, they are more likely to continue and to recruit others. From an organisational perspective, a self-service statistics screen also reduces inbound queries to coordinators ("how many hours have I logged?") and creates a shared reference point for performance conversations. The Bufdir funding model rewards documented activity volume, so a feature that encourages more thorough logging has a direct financial return for every participating organisation.
Statistics are computed by querying the local Drift database (activities table filtered by current user) and aggregated in a Riverpod provider with a time-range parameter. Flutter charts library (fl_chart or charts_flutter) renders the visualisations; all chart data is also exposed as a semantics-labelled text summary for VoiceOver / TalkBack. The provider invalidates on sync completion events so figures update automatically after a background sync. Date bucketing (week / month / year) is handled entirely client-side to avoid extra API round-trips; the backend statistics endpoint is reserved for coordinator-level aggregations. Offline-first design means the screen must never show a loading spinner for data the device already holds - only the "last synced" timestamp may indicate staleness. Charts must pass WCAG 2.2 AA colour-contrast checks; use pattern fills in addition to colour for colourblind accessibility.
Components (43)
Shared Components
These components are reused across multiple features
User Interface (9)
Service Layer (15)
Data Layer (8)
Infrastructure (7)
User Stories
No user stories have been generated for this feature yet.