medium complexity high priority should have v1.1 extracted Course & Certification Management Confidence: 100%
5
Components
0
Shared
11
User Stories
Yes
Analyzed

Description

Course Enrollment Management enables peer mentors and coordinators to browse, enroll in, and track participation in certification courses directly from the app. The feature covers the full enrollment lifecycle from discovering available courses in a catalog view, reviewing course details and prerequisites, confirming enrollment, and receiving confirmation. It integrates with the organization's course administration backend to reflect real-time seat availability and enrollment status, ensuring peer mentors always have accurate information about upcoming training opportunities.

Analysis

Business Value

Streamlining course enrollment directly within the app removes a significant friction point for peer mentors who currently must navigate separate portals or contact coordinators to sign up for mandatory training. For HLF in particular, certification is a prerequisite for active peer mentor status, meaning enrollment efficiency directly impacts the organization's capacity to field qualified mentors. Centralizing enrollment also gives coordinators real-time visibility into training uptake, enabling proactive outreach to uncertified mentors before their certification lapses. This reduces administrative overhead and improves compliance rates across the membership.

Implementation Notes

The feature requires a CourseRepository backed by Supabase tables for courses and course_enrollments, with row-level security ensuring users only enroll themselves unless they hold a coordinator role. The Course Catalog Screen and Course Detail Screen are built as standard Flutter pages using the design token system; the Enrollment Confirmation Screen uses an AppButton CTA that calls the CourseEnrollmentService. The service validates prerequisites and seat availability before writing to the database, returning appropriate error states for full courses or unmet prerequisites. Push notification hooks should be wired to send a confirmation notification via the Push Notification Gateway on successful enrollment.

Dependencies

navigation-shellsupabase-backend-corerole-based-access-control

Definition of Done

Course catalog displays all available courses with title, date, seats remaining, and prerequisite status
Enrollment confirmation persists to the database and reflects immediately in the user's course list
Coordinators can view enrollment counts per course in their dashboard
Unit tests cover enrollment validation logic including seat limits and prerequisite checks
Accessible per WCAG 2.2 AA: all interactive elements have semantic labels and sufficient contrast

User Stories (11)

Receive Push Notification Confirming Successful Enrollment
medium 2 pts

As a As a user

I want I want to receive a push notification immediately after my course enrollment is confirmed

So that So that I have a persistent record of my enrollment in my notification history and can refer back to the course details without re-entering the app

Acceptance Criteria
  • Given a user successfully enrolls in a course, when the enrollment write completes, then a push notification is dispatched within a few seconds of confirmation
  • Given the push notification is received, when the user views it, then it includes the course name and scheduled date
  • Given a user taps the push notification, when the app opens, then they are navigated to the relevant course detail or enrollment confirmation screen
  • +1 more
View Full Story →
Receive Push Notification Confirming Successful Enrollment
medium 2 pts

As a As a user

I want I want to receive a push notification immediately after my course enrollment is confirmed

So that So that I have a persistent record of my enrollment in my notification history and can refer back to the course details without re-entering the app

Acceptance Criteria
  • Given a user successfully enrolls in a course, when the enrollment write completes, then a push notification is dispatched within a few seconds of confirmation
  • Given the push notification is received, when the user views it, then it includes the course name and scheduled date
  • Given a user taps the push notification, when the app opens, then they are navigated to the relevant course detail or enrollment confirmation screen
  • +1 more
View Full Story →
Enroll a Peer Mentor in a Course on Their Behalf
medium 3 pts

As a As a Coordinator

I want I want to enroll a specific peer mentor in a course on their behalf using coordinator-level database access

So that So that peer mentors who are unable or unwilling to navigate the enrollment flow themselves can still be registered for mandatory certification courses without missing deadlines

Acceptance Criteria
  • Given a coordinator initiates an enrollment flow, when they reach the confirmation step, then they can specify a peer mentor under their oversight as the enrollee instead of themselves
  • Given a coordinator submits enrollment on behalf of a peer mentor, when the CourseEnrollmentService processes the request, then it verifies coordinator role authorization via row-level security before writing the enrollment
  • Given the enrollment is successful, when the confirmation is shown, then the enrolled peer mentor's name is displayed in the confirmation to prevent errors
  • +2 more
View Full Story →
Browse Available Courses in the Course Catalog
high 3 pts

As a As a user

I want I want to browse a catalog of available courses with real-time seat availability and enrollment status

So that So that I can quickly identify relevant training opportunities and know whether enrollment is still open before investing time in reading course details

Acceptance Criteria
  • Given a user is authenticated, when they navigate to the course catalog, then all available courses are displayed with title, date, location, and available seat count
  • Given a course has no remaining seats, when it is displayed in the catalog, then it is clearly marked as full with enrollment disabled
  • Given new seat availability data arrives from Supabase real-time subscriptions, when the catalog is open, then seat counts update without requiring a manual refresh
  • +2 more
View Full Story →
View Full Course Details and Prerequisites Before Enrolling
high 3 pts

As a As a user

I want I want to view the full details of a course including description, prerequisites, schedule, location, instructor, and current enrollment versus capacity

So that So that I can make an informed enrollment decision and understand whether I meet all prerequisites before committing

Acceptance Criteria
  • Given a user navigates to a course detail page, when the page loads, then all course metadata is displayed: description, prerequisites, schedule, location, instructor, and enrollment count vs. capacity
  • Given a user meets all prerequisites and seats are available, when they view the course detail, then the enrollment CTA button is enabled and tappable
  • Given a user does not meet one or more prerequisites, when they view the course detail, then the CTA button is disabled and a clear message explains which prerequisite is missing
  • +2 more
View Full Story →
Receive Clear Error Feedback When Enrollment Fails Due to Full Course or Unmet Prerequisites
high 3 pts

As a As a user

I want I want to receive a clear, actionable error message when my enrollment attempt fails because the course is full or I have not met the prerequisites

So that So that I understand exactly why I cannot enroll and what steps I can take next, without needing to contact a coordinator for an explanation

Acceptance Criteria
  • Given a user attempts to enroll in a course that is at full capacity, when the CourseEnrollmentService returns a full-capacity error, then a clear 'Course Full' message is shown explaining that no seats are available
  • Given a user attempts to enroll in a course with unmet prerequisites, when the CourseEnrollmentService returns a prerequisite error, then the specific unmet prerequisite is named in the error message
  • Given an enrollment error occurs, when the error state is displayed, then the user is not navigated away from the confirmation screen and can go back to the catalog without losing their place
  • +2 more
View Full Story →
Browse Available Courses in the Course Catalog
high 3 pts

As a As a user

I want I want to browse a catalog of available courses with real-time seat availability and enrollment status

So that So that I can quickly identify relevant training opportunities and know whether enrollment is still open before investing time in reading course details

Acceptance Criteria
  • Given a user is authenticated, when they navigate to the course catalog, then all available courses are displayed with title, date, location, and available seat count
  • Given a course has no remaining seats, when it is displayed in the catalog, then it is clearly marked as full with enrollment disabled
  • Given new seat availability data arrives from Supabase real-time subscriptions, when the catalog is open, then seat counts update without requiring a manual refresh
  • +2 more
View Full Story →
View Full Course Details and Prerequisites Before Enrolling
high 3 pts

As a As a user

I want I want to view the full details of a course including description, prerequisites, schedule, location, instructor, and current enrollment versus capacity

So that So that I can make an informed enrollment decision and understand whether I meet all prerequisites before committing

Acceptance Criteria
  • Given a user navigates to a course detail page, when the page loads, then all course metadata is displayed: description, prerequisites, schedule, location, instructor, and enrollment count vs. capacity
  • Given a user meets all prerequisites and seats are available, when they view the course detail, then the enrollment CTA button is enabled and tappable
  • Given a user does not meet one or more prerequisites, when they view the course detail, then the CTA button is disabled and a clear message explains which prerequisite is missing
  • +2 more
View Full Story →
Receive Clear Error Feedback When Enrollment Fails Due to Full Course or Unmet Prerequisites
high 3 pts

As a As a user

I want I want to receive a clear, actionable error message when my enrollment attempt fails because the course is full or I have not met the prerequisites

So that So that I understand exactly why I cannot enroll and what steps I can take next, without needing to contact a coordinator for an explanation

Acceptance Criteria
  • Given a user attempts to enroll in a course that is at full capacity, when the CourseEnrollmentService returns a full-capacity error, then a clear 'Course Full' message is shown explaining that no seats are available
  • Given a user attempts to enroll in a course with unmet prerequisites, when the CourseEnrollmentService returns a prerequisite error, then the specific unmet prerequisite is named in the error message
  • Given an enrollment error occurs, when the error state is displayed, then the user is not navigated away from the confirmation screen and can go back to the catalog without losing their place
  • +2 more
View Full Story →
Confirm and Complete Course Enrollment
critical 5 pts

As a As a user

I want I want to confirm my course enrollment through a dedicated confirmation screen that summarizes the course details before I commit

So that So that I can review my enrollment decision one final time and receive immediate confirmation that my spot has been secured

Acceptance Criteria
  • Given a user taps the enrollment CTA on the course detail screen, when the confirmation screen appears, then it displays course name, date, and location for review
  • Given a user taps the confirm button on the enrollment confirmation screen, when the CourseEnrollmentService validates successfully, then the enrollment is written to the database and the user sees a success state
  • Given enrollment is confirmed successfully, when the success state is shown, then a push notification is also dispatched confirming the enrollment
  • +2 more
View Full Story →
Confirm and Complete Course Enrollment
critical 5 pts

As a As a user

I want I want to confirm my course enrollment through a dedicated confirmation screen that summarizes the course details before I commit

So that So that I can review my enrollment decision one final time and receive immediate confirmation that my spot has been secured

Acceptance Criteria
  • Given a user taps the enrollment CTA on the course detail screen, when the confirmation screen appears, then it displays course name, date, and location for review
  • Given a user taps the confirm button on the enrollment confirmation screen, when the CourseEnrollmentService validates successfully, then the enrollment is written to the database and the user sees a success state
  • Given enrollment is confirmed successfully, when the success state is shown, then a push notification is also dispatched confirming the enrollment
  • +2 more
View Full Story →