LMS PRD & screens
LMS PRD & screen inventory
Section titled “LMS PRD & screen inventory”Audience: ux, product, frontend, qa
Status: specced
Owns: product + UX
Depends on: Overview, Personas, Lifecycle, API overview
Use this with the Scalar LMS REST contract. Screens below map to OpenAPI tags — do not invent endpoints from mockups.
Problem
Section titled “Problem”Artisans need structured training (including gap fill after CAP). Instructors need to ship SCORM packages and edit native lessons. Access may be self-paid, staff-granted, sponsor-paid, or CAP-recommended. Completion must produce an LMS certificate and notify CAP.
Goals (v1)
Section titled “Goals (v1)”- Multi-persona onboarding gated before each surface.
- Published catalogue + entitlement-gated player.
- Native modules/items + SCORM 1.2 zip (OL storage + LMS player).
- Sequencing + completion % + native assessments.
- LMS certificate independent of CAP; emit
lms.course.completed. - Instructor invite + co-instructors; staff ⊇ instructor.
- Checkout priced in LMS, processed by OL.
Non-goals (v1)
Section titled “Non-goals (v1)”- LMS organizations / seat marketplaces (OL later).
- SCORM 2004 sequencing, xAPI LRS, forums, live class.
- In-LMS visual editing of a SCORM zip (re-export from authoring tool).
- CAP workflow inside LMS.
Screen inventory
Section titled “Screen inventory”Auth/login/password and country/state/LGA pickers are Orchestrator screens/APIs, reused by the LMS app.
Learner
Section titled “Learner”| Screen | Purpose | Primary APIs |
|---|---|---|
| Finish learner profile | Onboarding wizard | POST /onboarding/start, PATCH /onboarding/learner/save, POST /onboarding/learner/submit, OL /address/* |
| Home / continue learning | Active enrollments + % | GET /me, GET /enrollments/mine |
| Catalogue | Search published courses | GET /courses |
| Course detail | Description, price, outline, CTA enroll/pay | GET /courses/{id}, GET /courses/{id}/outline, POST /courses/{id}/enrollments |
| Checkout | Redirect to Paystack | POST /enrollments/{id}/checkout |
| Course player | Outline, locks, native lesson/video | GET /enrollments/{id}/progress, POST …/items/{itemId}/launch, POST …/progress |
| SCORM player | Iframe + LMS JS API | POST …/launch, GET /player/scorm/{sessionId}, POST …/cmi |
| Quiz | Attempt + submit | GET …/assessment, POST …/attempts, POST …/submit |
| My certificates | List + download (OL resolve assetId) |
GET /certificates/mine, GET /certificates/{id} |
Instructor
Section titled “Instructor”| Screen | Purpose | Primary APIs |
|---|---|---|
| Accept invite / instructor onboarding | Unlock authoring | invites + POST /onboarding/instructor/* |
| My courses | Draft + published | GET /authoring/courses |
| Course settings | Title, price, CAP linkage, completion policy | POST/PATCH /authoring/courses, publish/unpublish |
| Outline editor | Modules, items, order, required flags | modules + items CRUD |
| SCORM attach | Upload zip via OL storage, bind packageAssetId |
OL /storage/upload-url + POST …/items |
| Native lesson / quiz editor | Body, media assetId, questions |
PATCH …/items/{id} |
| Sequencing | Prerequisites | PUT …/sequencing |
| Co-instructors | Add/remove | GET/POST/DELETE …/instructors |
| Learner progress (my courses) | Support view | GET /admin/enrollments?courseId= (scoped) |
| Screen | Purpose | Primary APIs |
|---|---|---|
| Staff onboarding | Unlock admin | POST /onboarding/staff/* |
| Invite instructors / staff | Email + role | POST /instructors/invites, POST /staff/invites |
| Staff directory | Role / suspend | GET /staff, PATCH /staff/{id} |
| All courses | Including drafts | GET /authoring/courses (staff scope) |
| Grant access | admin_grant / sponsor / cap_recommendation | POST /admin/entitlements |
| Enrollment lookup | Support | GET /admin/enrollments |
UX rules
Section titled “UX rules”GET /medrives nav: hide catalogue consume until learner onboarding done; hide authoring until instructor done; hide admin until staff done.- Locked items show why (
lms.sequencing.locked), not a generic 403. - Unpublished courses 404 in catalogue for learners; instructors still see them under Authoring.
- Certificate download uses OL
/storage/resolveonassetId, same as CAP.
Success metrics (suggested)
Section titled “Success metrics (suggested)”- Time-to-first-enrollment after learner onboarding.
- Publish rate of invited instructors.
- Completion rate and certificate issue rate.
- CAP gap learners who complete a recommended course (
lms.course.completedwithcapApplicationId).