medium complexity extracted Coordinator & Admin Tools Confidence: 100%
10
Components
198
Shared
12
User Stories
Yes
Analyzed

Description

Tracks the certification status and expiry dates of peer mentors, primarily for HLF where certification is mandatory and carries a formal physical card that peer mentors regard as a mark of distinction. The system stores certification issue date, expiry date, and renewal history per peer mentor, and sends automated reminders to both the peer mentor and their coordinator as expiry approaches. Coordinators can view certification status across their roster, manually record renewals after in-person course completion, and initiate course enrolment from within the app. Expired certifications trigger automatic status transitions (pause) and, for HLF, synchronisation with the external Dynamics portal to remove the peer mentor from public listings.

Analysis

Business Value

Ensures only qualified peer mentors are active and publicly visible, protecting the credibility of the peer mentor schemes. Reduces coordinator effort in manually tracking expiry dates and chasing renewals. Critical for HLF's compliance requirements.

Implementation Notes

Store: cert_issued_at, cert_expires_at, cert_type, renewal_history (JSONB). Nightly cron checks for expiry within 30, 14, and 7 days — push notification + in-app badge. Auto-pause on day of expiry. Coordinator dashboard widget: 'Certifications expiring this month'. HLF Dynamics sync via webhook on status change. Physical card detail is out of scope for digital system.

Components (208)

User Interface (4)

Service Layer (4)

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

See Certification Status Badge on My Profile
medium 2 pts

As a As a Coordinator

I want to see a certification status badge displayed prominently on my peer mentor profile within the app

So that I can quickly confirm at a glance that my profile accurately reflects my certified status without navigating to a dedicated certification screen

Acceptance Criteria
  • Given I have an active certification, when I view my peer mentor profile or detail screen, then I see a green 'Certified' badge near my name or role label
  • Given my certification expires within 60 days, when I view my profile, then the badge changes to amber and displays 'Expiring Soon' with the expiry date as a subtitle
  • Given my certification has expired, when I view my profile, then the badge displays a red 'Expired' label with the expiry date
  • +2 more
View Full Story →
Understand the Consequences of an Expired Certification
medium 3 pts

As a As a Coordinator

I want to clearly understand what happens to my profile and assignments if my certification expires

So that I appreciate the importance of renewal and am motivated to act before my status is affected

Acceptance Criteria
  • Given my certification expires within 30 days, when I view the certification screen, then I see a plain-language explanation stating that upon expiry my profile will no longer appear in the organization's peer mentor directory until I renew
  • Given my certification has expired, when I view the certification screen, then I see a confirmation that my profile has been suppressed from the directory, alongside the date suppression took effect
  • Given I am suppressed from the directory due to expiry, when I view my profile from the app, then I see a visibility indicator showing 'Not visible to contacts' with a link to start the renewal process
  • +2 more
View Full Story →
Be Prompted to Enroll in a Renewal Course
medium 8 pts

As a As a Coordinator

I want to see a contextual prompt within the app that guides me to enroll in a certification renewal course when my certification is nearing expiry

So that I can quickly act on the renewal without needing to navigate external systems or contact a coordinator

Acceptance Criteria
  • Given my certification expires within 60 days, when I open the certification status screen, then I see a course enrollment prompt section listing upcoming renewal courses with dates, locations (online or in-person), and an 'Enroll' button
  • Given I tap 'Enroll' on a course, when the enrollment flow begins, then I am either enrolled in-app or redirected to the HLF course portal with pre-filled personal details to minimize friction
  • Given no renewal courses are currently available in the system, when I view the enrollment prompt, then I see a message explaining that no courses are scheduled yet, with an option to be notified when a course becomes available
  • +2 more
View Full Story →
See Certification Status Badge on My Profile
medium 2 pts

As a As a Organization Administrator

I want to see a certification status badge displayed prominently on my peer mentor profile within the app

So that I can quickly confirm at a glance that my profile accurately reflects my certified status without navigating to a dedicated certification screen

Acceptance Criteria
  • Given I have an active certification, when I view my peer mentor profile or detail screen, then I see a green 'Certified' badge near my name or role label
  • Given my certification expires within 60 days, when I view my profile, then the badge changes to amber and displays 'Expiring Soon' with the expiry date as a subtitle
  • Given my certification has expired, when I view my profile, then the badge displays a red 'Expired' label with the expiry date
  • +2 more
View Full Story →
Understand the Consequences of an Expired Certification
medium 3 pts

As a As a Organization Administrator

I want to clearly understand what happens to my profile and assignments if my certification expires

So that I appreciate the importance of renewal and am motivated to act before my status is affected

Acceptance Criteria
  • Given my certification expires within 30 days, when I view the certification screen, then I see a plain-language explanation stating that upon expiry my profile will no longer appear in the organization's peer mentor directory until I renew
  • Given my certification has expired, when I view the certification screen, then I see a confirmation that my profile has been suppressed from the directory, alongside the date suppression took effect
  • Given I am suppressed from the directory due to expiry, when I view my profile from the app, then I see a visibility indicator showing 'Not visible to contacts' with a link to start the renewal process
  • +2 more
View Full Story →
Be Prompted to Enroll in a Renewal Course
medium 8 pts

As a As a Organization Administrator

I want to see a contextual prompt within the app that guides me to enroll in a certification renewal course when my certification is nearing expiry

So that I can quickly act on the renewal without needing to navigate external systems or contact a coordinator

Acceptance Criteria
  • Given my certification expires within 60 days, when I open the certification status screen, then I see a course enrollment prompt section listing upcoming renewal courses with dates, locations (online or in-person), and an 'Enroll' button
  • Given I tap 'Enroll' on a course, when the enrollment flow begins, then I am either enrolled in-app or redirected to the HLF course portal with pre-filled personal details to minimize friction
  • Given no renewal courses are currently available in the system, when I view the enrollment prompt, then I see a message explaining that no courses are scheduled yet, with an option to be notified when a course becomes available
  • +2 more
View Full Story →
View Certification Renewal History
low 3 pts

As a As a Coordinator

I want to view a history of my past certifications and renewals in the app

So that I have a clear record of my qualifications over time and can verify my certification journey for personal reference or organizational requirements

Acceptance Criteria
  • Given I have completed at least two certification cycles, when I scroll to the certification history section on the certification screen, then I see a chronological list of past certifications with issue date, expiry date, and renewal status (Renewed / Lapsed / Active)
  • Given I have only one certification record, when I view the certification history section, then I see a single entry and a message indicating I have been certified since that date
  • Given a certification was allowed to lapse before renewal, when I view that entry in history, then it is marked with a 'Lapsed' label and the date it expired without renewal
  • +2 more
View Full Story →
View Certification Renewal History
low 3 pts

As a As a Organization Administrator

I want to view a history of my past certifications and renewals in the app

So that I have a clear record of my qualifications over time and can verify my certification journey for personal reference or organizational requirements

Acceptance Criteria
  • Given I have completed at least two certification cycles, when I scroll to the certification history section on the certification screen, then I see a chronological list of past certifications with issue date, expiry date, and renewal status (Renewed / Lapsed / Active)
  • Given I have only one certification record, when I view the certification history section, then I see a single entry and a message indicating I have been certified since that date
  • Given a certification was allowed to lapse before renewal, when I view that entry in history, then it is marked with a 'Lapsed' label and the date it expired without renewal
  • +2 more
View Full Story →
View Current Certification Status
high 5 pts

As a As a Coordinator

I want to view my current certification status, expiry date, and any alerts about upcoming expiry in one clear screen

So that I can stay informed about the validity of my certification and take timely action before it lapses

Acceptance Criteria
  • Given I am a peer mentor with an active certification, when I navigate to the certification screen, then I see my certification name, issue date, expiry date, and a green status badge indicating 'Active'
  • Given my certification expires within 60 days, when I open the certification screen, then I see a prominent amber warning banner indicating the number of days remaining and a prompt to enroll in a renewal course
  • Given my certification has expired, when I open the certification screen, then I see a red expiry badge and a clear message explaining that I am no longer visible to contacts in the organization directory until I renew
  • +2 more
View Full Story →
Receive Push Notification Before Certification Expires
high 5 pts

As a As a Coordinator

I want to receive timely push notifications warning me that my certification is approaching its expiry date

So that I have enough lead time to enroll in a renewal course and avoid any interruption to my active peer mentor status

Acceptance Criteria
  • Given my certification expires in exactly 90 days, when the nightly scheduler runs, then I receive a push notification titled 'Your certification expires in 90 days' with a body explaining what will happen if I do not renew and a deep link to the certification screen
  • Given I have already received the 90-day notification, when my certification reaches 60 days from expiry, then I receive a second escalating notification with stronger urgency language
  • Given my certification expires today, when the expiry check edge function runs, then I receive a notification informing me that my certification has expired and I am no longer visible in the organization directory, with a prompt to enroll in a renewal course
  • +2 more
View Full Story →
View Current Certification Status
high 5 pts

As a As a Organization Administrator

I want to view my current certification status, expiry date, and any alerts about upcoming expiry in one clear screen

So that I can stay informed about the validity of my certification and take timely action before it lapses

Acceptance Criteria
  • Given I am a peer mentor with an active certification, when I navigate to the certification screen, then I see my certification name, issue date, expiry date, and a green status badge indicating 'Active'
  • Given my certification expires within 60 days, when I open the certification screen, then I see a prominent amber warning banner indicating the number of days remaining and a prompt to enroll in a renewal course
  • Given my certification has expired, when I open the certification screen, then I see a red expiry badge and a clear message explaining that I am no longer visible to contacts in the organization directory until I renew
  • +2 more
View Full Story →
Receive Push Notification Before Certification Expires
high 5 pts

As a As a Organization Administrator

I want to receive timely push notifications warning me that my certification is approaching its expiry date

So that I have enough lead time to enroll in a renewal course and avoid any interruption to my active peer mentor status

Acceptance Criteria
  • Given my certification expires in exactly 90 days, when the nightly scheduler runs, then I receive a push notification titled 'Your certification expires in 90 days' with a body explaining what will happen if I do not renew and a deep link to the certification screen
  • Given I have already received the 90-day notification, when my certification reaches 60 days from expiry, then I receive a second escalating notification with stronger urgency language
  • Given my certification expires today, when the expiry check edge function runs, then I receive a notification informing me that my certification has expired and I am no longer visible in the organization directory, with a prompt to enroll in a renewal course
  • +2 more
View Full Story →