Skip to content

Adapt Learning courses

Generated from docs/phase-1/adapt.md

Notes for the docs site. Decision: ADR 0013; worker: api/adapt-builder/README.md.

Path A: upload an Adapt export (always available)

Section titled “Path A: upload an Adapt export (always available)”

Export the course from the Adapt authoring tool or grunt build with adapt-contrib-spoor enabled (SCORM 1.2) and upload the zip as a SCORM package. ulams recognises Adapt exports and tags them Adapt in the SCORM list. They play on the tenant content origin and are tracked like any SCORM package; completing the package completes the SCORM topics that use it.

Path B: Adapt course JSON built by ulams (off by default)

Section titled “Path B: Adapt course JSON built by ulams (off by default)”

For courses kept as Adapt JSON (course, config, contentObjects, articles, blocks, components), for example generated by the AI course builder.

Operators enable it per installation:

  1. Start the build worker: docker compose --profile adapt up -d adapt-builder (from api/). The image (about 430 MB) contains the Adapt framework and its core plugins; it is GPL-3.0 and runs as a separate service with no internet access.
  2. Set on the API: ADAPT_SOURCE_ENABLED=true, ADAPT_BUILDER_URL=http://adapt-builder:8080, ADAPT_BUILDER_TOKEN=<same token as the worker>.

Authors (permission adapt_manage) create and version sources through /api/admin/adapt (admin screen pending). ulams checks the structure (ids, parent links, allowed components: accordion, assessmentResults, blank, gmcq, graphic, hotgraphic, matching, mcq, media, narrative, slider, text, textinput); the build checks the rest. Build queues a build of the current version; the result is an ordinary SCORM package (Path A) to put in a SCORM topic. A failed build keeps the reason on the source, with the framework’s own error lines, e.g. Missing _ids: b-05 (block).

A small course builds in about 10 seconds; builds run one at a time.