Learning Management
Manage courses, enrollments, and track member learning progress
Comprehensive LMS for creating courses, tracking progress, and managing member professional development.
Capabilities
| Action | ROLE_CLIENT_ADMIN | ROLE_CLIENT_USER |
|---|---|---|
| View courses | ✅ | ✅ |
| Create courses | ✅ | ❌ |
| Manage enrollments | ✅ | ✅ |
| View progress | ✅ | ✅ |
| Issue certificates | ✅ | ❌ |
Features
Course Management
- Create and edit courses
- Organize into subjects/modules
- Multiple content types (video, PDF, text, quiz)
- Set completion criteria
- Assign CPD points
Acceptance Criteria
Frontend
- UI supports the workflows described in this feature.
Backend / API
- Backend behavior supports this feature as documented.
Permissions
- Access is restricted per the Capabilities matrix on this page (or equivalent role rules).
Business Rules
- All business rules for this feature are enforced.
Error Handling
- Error states return clear messages and appropriate HTTP status codes.
Enrollment Management
- View all enrollments
- Manual enrollment
- Bulk enrollment
- Track completion rates
- Send reminders
Acceptance Criteria
Frontend
- UI supports the workflows described in this feature.
Backend / API
- Backend behavior supports this feature as documented.
Permissions
- Access is restricted per the Capabilities matrix on this page (or equivalent role rules).
Business Rules
- All business rules for this feature are enforced.
Error Handling
- Error states return clear messages and appropriate HTTP status codes.
Progress Tracking
- Individual progress view
- Completion percentages
- Quiz scores
- Time spent
- Certificate status
Acceptance Criteria
Frontend
- UI supports the workflows described in this feature.
Backend / API
- Backend behavior supports this feature as documented.
Permissions
- Access is restricted per the Capabilities matrix on this page (or equivalent role rules).
Business Rules
- All business rules for this feature are enforced.
Error Handling
- Error states return clear messages and appropriate HTTP status codes.
Event → Course Automation
Some organizations run live/Zoom events and then repackage the recording + materials as an on-demand course.
Expected workflow:
- Select an Event
- Choose Create Draft Course from Event
- System clones:
- Event title/description → course title/description
- Zoom recording (when available) → draft course video content
- Marketing/handout materials → draft course resources
- Course is created in draft state for review/editing before publishing
Acceptance Criteria
Frontend
- Admin UI provides a “Create course from event” action on the event or within LMS.
- Generated course is clearly labeled as draft and shows which fields were cloned.
Backend / API
- Backend can create a draft course from an event and attach cloned assets.
Permissions
- Only
ROLE_CLIENT_ADMINcan run event→course automation.
Business Rules
- The generated course defaults to draft and is not visible to members until published.
- If no Zoom recording is available, the course is created without video and flagged for follow-up.
Error Handling
- If cloning assets fails, the system reports which assets failed and allows retry.
UI Spec (from supplied spreadsheet)
The LMS is backed by the "Courses" section in workspace/sources/entity-registry.csv.
Course list / management (selected fields)
| Field | Input Type | Required | Notes |
|---|---|---|---|
| Course Name | Text | Required | model: name |
| Tile Short Description | Text | Required | Used in course tiles |
| Course Category | Multi-select | Required | model: courseCategories |
| Course Type | Selector | Required | model: courseType |
| Publish Date / Time | Date + Time | Required | model: publishDateTime |
| Start Date | Date | Required | model: startDate |
| Close Date | Date | Not Required | model: closeDate |
| CPD Points | Number | Required | model: cpdPoints |
Enrollment / progress (member enrollments)
| Field | Type | Notes |
|---|---|---|
| course | ManyToOne | Course |
| memberProfile | ManyToOne | MemberProfile |
| status | ManyToOne | CourseRegistrationStatus |
| paymentStatus | ManyToOne | PaymentStatus (pending/paid/failed) |
| enrolledAt | datetime | - |
| completedAt | datetime | - |
| progressPercentage | float | - |
Data Model Cross‑Reference (Entities)
- Course definition:
Course - Enrollment + progress:
Course Enrollment - Paid enrollments / receipts / refunds:
Payment Transaction - CPD:
CPD RecordandCPD Category
Implementation Contracts
Backend (API)
GET /api/courses # List courses
POST /api/courses # Create course
GET /api/courses/{id} # Get course details
PUT /api/courses/{id} # Update course
DELETE /api/courses/{id} # Archive course
GET /api/courses/{id}/enrollments # List enrollments
POST /api/courses/{id}/enrollments # Enroll members
GET /api/courses/{id}/progress # Progress report
GET /api/enrollments/{id} # Enrollment details
PUT /api/enrollments/{id}/complete # Mark complete