Practitionist / Practitionist/elluminar_web
SCORM/xAPI export for enterprise interoperability
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 1
- Forks
- 0
- Avg merge
- 17h 2m
- Merged PRs (30d)
- 18
Description
Why / Context
PRD §7.2F: content interoperability (SCORM/xAPI-style export) is a frequent enterprise procurement requirement — clients need to pull content or completion data into their own internal LMS. It's a checkbox that unblocks deals more than a daily-use feature; scope it to completion-data export first, packaged content second.
Schema already in place — NO migration required
- Completion data:
Enrollment,LessonProgress,QuizAttempt,ProgramEnrollment,Credential— everything xAPI statements need ReportExporthandles async generation + file delivery- No content-model changes: SCORM packaging wraps existing lessons
Implementation plan
- Scope decision doc: Phase A = xAPI statement export + completion CSV (covers most procurement asks); Phase B = SCORM 1.2 package export for selected self-paced courses (video+article lessons only; labs/live excluded with documented rationale).
- xAPI mapping (
src/lib/interop/xapi.ts): map events → statements (actor=hashed learner id or org email per contract, verbs: launched/completed/passed/scored, activities: course/lesson/quiz with our IRIs); batch export viaReportExport(kind: COMPLETION)variant + optional push to client LRS endpoint (config per OrgLicense). - LRS push worker: per-org endpoint+auth config (in
OrgLicense.catalogScope-style Json or Program branding Json — no schema change needed; document the key), retry with backoff, delivery log in ReportExport.params. - SCORM packaging (Phase B): generator producing imsmanifest.xml + HTML shim per lesson that plays hosted content with our auth-tokenized embed (content stays DRM-protected on Fermion; SCORM package is a wrapper, not an offline copy) + completion postback to our API → recorded like normal progress.
- Enterprise admin UI: export buttons on program/license dashboards (completion CSV, xAPI bundle), SCORM download per eligible course.
- Contract/consent gating: exports available only to orgs with the interop clause (flag on OrgLicense notes/config).
- Conformance smoke: validate statements against an open-source LRS (e.g., SQL LRS) and SCORM package in SCORM Cloud trial.
Acceptance criteria
- Org admin exports an xAPI statement bundle for a program cohort; validates in a reference LRS
- Optional LRS push delivers with retries and a visible delivery log
- SCORM 1.2 package for an eligible course imports into SCORM Cloud and reports completion back
- Learner identifiers respect the contract's privacy mode (hashed vs email)
- Labs/live content clearly excluded with graceful messaging
Dependencies / sequencing
- Requires issue #17 (enterprise GA surfaces); DRM boundary respected via M4's Fermion embed model
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with PRD §7.2F, issue #17, and the existing Completion data models and ReportExport flow. Inspect src/lib/interop/xapi.ts, OrgLicense configuration, and the planned admin dashboard entry points before resolving the Phase A/B scope. Done means meeting the listed xAPI, LRS, SCORM, privacy, exclusion, and conformance acceptance criteria.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- api, backend, documentation, frontend, testing
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100