Files
classroomio/prd/scorm-support/implementation-plan.md
T
Rotimi Best d5b07d356e feat: HLS streaming, transcripts, agent course generation & landing-page course previews (#663)
New features:
- HLS video encoding/streaming (hls routes, hls-encoder) and a media
  transcripts pipeline (transcripts route + media-transcript queries)
- AI assistant chat vs. run model: agent-course-generation worker/queue,
  run-monitor pane, chat-changes card, content ask-ai bar
- Per-theme course-page previews across org landing-page themes (bold,
  classic, corporate, editorial, etc.) with a shared course token/component set
- View-as-student mode and login-link / link-invite invite flows

Refactor:
- Extract packages/core consolidating config (env, storage, dashboard-url),
  services and utils previously duplicated under apps/api/src/config
- Remove legacy agent service modules (chat-tools, chat-context,
  context-window, document, fetch-url, lesson-content)
- Relax Cross-Origin-Resource-Policy to allow cross-origin media embedding
- Add format script to tenant-router so turbo run format covers it
2026-06-07 18:43:05 +01:00

3.7 KiB

SCORM Support Implementation Plan

Purpose

Translate the SCORM Support PRD into an engineering-first execution order that fits current ClassroomIO conventions.

Delivery Order

  1. Data model and package storage
  2. Manifest parser and package ingestion
  3. Lesson linkage model
  4. Learner runtime shell
  5. Runtime persistence APIs
  6. Progress/certification integration
  7. Reporting and diagnostics

1. Data Model

Schema work

Add SCORM-focused tables and relations in packages/db/src/schema.ts:

  1. scorm_package
  2. scorm_package_item
  3. scorm_registration
  4. scorm_attempt
  5. scorm_runtime_event

Add lesson linkage for SCORM-backed content.

Query layer

Add pure query modules under:

  • packages/db/src/queries/scorm/package.ts
  • packages/db/src/queries/scorm/registration.ts
  • packages/db/src/queries/scorm/attempt.ts
  • packages/db/src/queries/scorm/runtime-event.ts

2. Validation and Contracts

Add validation modules under:

  • packages/utils/src/validation/scorm/package.ts
  • packages/utils/src/validation/scorm/runtime.ts
  • packages/utils/src/validation/scorm/report.ts

Include:

  1. package upload metadata
  2. lesson attachment payloads
  3. runtime commit payload
  4. reporting query params

3. Package Ingestion Service

Add services under:

  • apps/api/src/services/scorm/package.ts
  • apps/api/src/services/scorm/manifest.ts
  • apps/api/src/services/scorm/storage.ts

Responsibilities:

  1. upload intake
  2. safe unzip
  3. manifest parse
  4. package metadata persistence
  5. warning generation

4. Runtime Service

Add services under:

  • apps/api/src/services/scorm/runtime.ts
  • apps/api/src/services/scorm/registration.ts

Responsibilities:

  1. create/resume learner registration
  2. commit runtime writes
  3. finalize attempts
  4. map SCORM state to ClassroomIO lesson completion

5. Routes

Add routes under:

  • apps/api/src/routes/scorm/package.ts
  • apps/api/src/routes/scorm/runtime.ts
  • apps/api/src/routes/scorm/report.ts
  • apps/api/src/routes/scorm/index.ts

Mount under a single root segment in apps/api/src/app.ts:

  • .route('/scorm', scormRouter)

6. Dashboard

Add feature areas under:

  • apps/dashboard/src/lib/features/scorm/api/
  • apps/dashboard/src/lib/features/scorm/components/
  • apps/dashboard/src/lib/features/scorm/utils/

UI work:

  1. package upload modal
  2. package detail view
  3. lesson editor integration
  4. reporting table and learner detail drawer

7. Learner Shell

Add a SCORM player surface in dashboard lesson rendering.

Potential locations:

  • apps/dashboard/src/lib/features/scorm/components/scorm-player.svelte
  • apps/dashboard/src/lib/features/scorm/components/scorm-shell.svelte

Responsibilities:

  1. load launch target
  2. expose API and API_1484_11
  3. buffer/set runtime values
  4. commit and terminate on lifecycle boundaries

8. Progress Integration

Update existing course completion and reporting logic to include SCORM-backed lessons.

Primary touchpoints:

  • apps/api/src/services/course/completion.ts
  • packages/db/src/queries/course/content.ts
  • packages/db/src/queries/course/course.ts

9. Testing

Unit

  1. manifest parser
  2. runtime data model mapping
  3. completion mapping

Integration

  1. upload and parse endpoints
  2. runtime commit endpoint
  3. registration resume behavior

Compatibility

Store representative fixture packages and run regression checks against:

  1. SCORM 1.2 export
  2. SCORM 2004 export
  3. relaunch/resume flow

Build and Verification

  1. pnpm --filter @cio/utils build
  2. pnpm --filter @cio/db build
  3. pnpm --filter @cio/api build
  4. pnpm --filter @cio/dashboard build

Suggested First Sprint Slice

  1. schema + queries
  2. package upload + parser
  3. lesson linkage
  4. narrow runtime proof of concept for one SCORM 1.2 package