Practitionist / Practitionist/elluminar_web

SCORM/xAPI export for enterprise interoperability

Open
#23 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enterprise post-mvp v2
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
  • ReportExport handles async generation + file delivery
  • No content-model changes: SCORM packaging wraps existing lessons

Implementation plan

  1. 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).
  2. 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 via ReportExport(kind: COMPLETION) variant + optional push to client LRS endpoint (config per OrgLicense).
  3. 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.
  4. 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.
  5. Enterprise admin UI: export buttons on program/license dashboards (completion CSV, xAPI bundle), SCORM download per eligible course.
  6. Contract/consent gating: exports available only to orgs with the interop clause (flag on OrgLicense notes/config).
  7. 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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.