medium complexity extracted Achievements & Gamification Confidence: 100%
4
Components
39
Shared
0
User Stories
Yes
Analyzed

Description

The Annual Summary (Wrapped) feature delivers a personalized, visually engaging year-in-review experience for peer mentors, inspired by Spotify Wrapped. At the end of each year (or on demand), the app generates an animated summary screen showcasing the volunteer's total activities, hours contributed, contacts supported, events attended, and milestones reached. The presentation uses motion graphics and progressive disclosure to make the data feel celebratory rather than bureaucratic. The feature transforms invisible volunteer effort into a shareable, pride-inducing artifact that peers and coordinators can highlight in their communities.

Analysis

Business Value

Volunteer retention is a persistent challenge for peer mentor organizations. Research consistently shows that recognition and visible impact are among the strongest predictors of continued engagement. The Annual Summary gives each peer mentor a concrete, emotionally resonant answer to the question 'what did I accomplish this year?', reducing churn and increasing pride of participation. For coordinators, the feature doubles as a recruitment and motivation tool - shareable summaries can be posted in local chapter newsletters or social media, turning individual impact into organizational storytelling. Over time, the aggregated data also gives Norse Digital Products and partner organizations a compelling narrative for Bufdir reporting and funding applications, translating raw activity counts into human stories of impact.

Implementation Notes

The summary is generated server-side by the Annual Summary Service, which aggregates activity records, event participation, contact counts, and badge data from the PostgreSQL database for the trailing 12-month window. The Flutter client receives a pre-computed summary payload and renders it using a sequence of animated screens built with Flutter's animation framework (AnimationController, Tween, Hero transitions). Each screen is a stateless widget parameterized by the payload, making the flow easy to test and extend. The Annual Summaries table stores one record per user per year, enabling year-over-year comparisons. Sharing is handled via Flutter's share_plus package, generating a static image snapshot of key stats using the RepaintBoundary widget. The feature is gated behind the achievements-gamification module toggle and only shown to users whose organization has enabled it.

Components (43)

User Interface (2)

Service Layer (1)

Data Layer (1)

Shared Components

These components are reused across multiple features

User Stories

No user stories have been generated for this feature yet.