EngagedLab

Interactive labs from your teaching material

Teaching material, brought to life.

Upload a lecture. Get a living lab — every concept paired with an interaction, progress your learners can feel, and a guide at their side the whole way.

Built for your LMS

Drops into the systems you already run.

Every lab exports as one standards-conformant zip — upload it to your LMS and it just plays.

  • SCORM 1.2
  • SCORM 2004 4th Edition

Evidence return is optional and off by default. Switch on Send attempts back to EngagedLab when you export, and attempts made inside your LMS come back to your cohort report. Leave it off — the default — and the package makes no requests at all.

  • Moodle
  • Canvas
  • Blackboard
  • Brightspace (D2L)
  • SCORM Cloud

Self-contained by default

One zip, zero external requests — no CDNs, no fonts, no calls home. Runs on locked-down LMS servers and in offline pilots. Switch evidence return on and the package contacts exactly one address, this deployment's own, which the dialog prints in full before you download; the export refuses to build if the package would reach anything else.

scorm-package.test.ts · "OFFLINE CLAIM: index.html contains zero http(s) URLs — no CDNs, fonts, or telemetry" · "no direct LRS sender survives in the built package" · export-switch.test.ts · "builds a package with no telemetry whatsoever — absence, not a flag" · "refuses to hand over a package that would contact anything undeclared"

Resume where they left off

Progress, XP and position persist in the LMS's own suspend data, within each standard's byte budget — learners pick up mid-lab.

scorm-package.test.ts · "runtime ships as a minified IIFE with the SCORM adapter and suspend budget" — both budget constants asserted present in the built bundle

Per-question reporting

Every answered interaction is journalled to cmi.interactions — instructors see per-question results and response times in their gradebook, not just one number.

export-switch.test.ts · "the built package journals to the LMS's own cmi records" · new-blocks-export.test.ts · "interaction type mapping" — every block type maps to a cmi interaction type

Outcome-shaped in the gradebook

The lab's stated objectives ship as cmi.objectives in both dialects, and every interaction declares the objectives it evidences — so the customer's own gradebook reports against outcomes, not just against questions. SCORM 2004 packages additionally declare them in the manifest's imsss sequencing block.

scorm-telemetry.test.ts · "both manifests declare the lab's objectives, by each dialect's own mechanism" · "the runtime spells an objective id exactly as the manifest declares it"

Works without an LMS too

No SCORM API found? The runtime falls back to browser storage — the same package doubles as a standalone web lab.

scorm-package.test.ts · "DUAL ADAPTER: index.html ships both SCORM API literals under both standards" · export-switch.test.ts · "the built package journals to the LMS's own cmi records" — the localStorage fallback is asserted present in the built bundle

Every package is a self-contained lab that makes no external request until you switch evidence return on — try the demo, then export it yourself.

Never a wall of text

Every concept arrives in a bite-sized step with something to do — answer, sort, fill, explain. Reading alone never counts as progress.

Progress you can feel

A living progress strip, mastery per section, and XP paid only for real effort. Learners always know where they are and what's next.

Help that teaches, not tells

The Lab Assistant escalates from nudge to hint to worked step — Socratic by design, never blurting the answer while an attempt is open.