-
Notifications
You must be signed in to change notification settings - Fork 3
LMS
Ed Mozley edited this page May 13, 2026
·
1 revision
Folder: lms/
Colour: Blue #2563eb
Learning Management System with SCORM course player, learning groups, assignments with deadlines, and per-user progress tracking. Supports SCORM 1.1, 1.2, and 2004.
- Upload SCORM ZIP packages — the manifest is auto-parsed to detect SCORM version and launch URL
- Each course's files are extracted to
lms/content/<course-id>/ - Courses can be deactivated without deleting (keeps historical progress data intact)
- Full-viewport iframe rendering the course's launch page
-
Dual JavaScript API bridge — exposes both
window.API(SCORM 1.x) andwindow.API_1484_11(SCORM 2004) so courses find whichever they look for - All CMI calls (
LMSInitialize,LMSGetValue,LMSSetValue,LMSCommit,LMSFinishand their 2004 equivalents) are bridged to the LMS backend -
Resume support —
cmi.suspend_dataandcmi.locationare persisted so courses pick up where they left off
Per-user state per course:
- Status: Not started, Incomplete, Completed, Passed, Failed
- Score (raw, min, max, scaled)
- Bookmark (
cmi.location) - Suspend data (
cmi.suspend_data) - All raw CMI key/value pairs
- Create groups of analysts (e.g. "Service Desk L1", "Engineers")
- Many-to-many membership — an analyst can be in multiple groups
- Assign courses to groups with optional deadlines — gives everyone in the group the assignment, with a single deadline policy
Four tabs:
| Tab | Purpose |
|---|---|
| Courses | List uploaded courses, version info, total assignments |
| Groups | Manage learning groups and membership |
| Assignments | Assign courses to groups or individuals, with deadlines |
| Progress | Every assigned analyst's completion status with overdue highlighting. Filterable by course, group, or status |
For each learner × course pair, a View button shows:
- Quiz responses with correct / incorrect badges
- Objectives and their status
- Scores (raw, scaled, mastery)
- Suspend data with syntax-highlighted JSON (when the content vendor stores JSON in suspend_data)
- All raw CMI elements
Useful for diagnosing "why did this person fail" and for compliance audits.
| Table | Purpose |
|---|---|
lms_courses |
Course metadata (title, SCORM version, launch URL, active flag) |
lms_groups |
Learning groups |
lms_group_members |
Many-to-many group membership |
lms_assignments |
Course assignments to individuals or groups (with deadlines) |
lms_progress |
Per-user per-course status, score, bookmark |
lms_cmi_data |
All raw CMI key/value pairs |
lms_quiz_responses |
Captured quiz responses for the learner data viewer |
FreeITSM — an open-source IT Service Management platform · github.com/edmozley/freeitsm · MIT licence