Adapt Learning courses
Adapt Learning builds responsive e-learning courses. ulams supports Adapt in two ways (“paths”); only the first is ready for authors today.
Path A: upload the SCORM export (works today)
Section titled “Path A: upload the SCORM export (works today)”- In the Adapt authoring tool or framework, build the course with the spoor extension
(
adapt-contrib-spoor), which exports it as a SCORM package. - Upload the
.zipin Courses → SCORMs. ulams recognises Adapt packages from their files and labels them Adapt in the Authoring tool column. - Put the package’s SCO in a lesson with a SCORM topic, or use it as the whole course.
From there it behaves exactly like any other SCORM package: same upload checks, same player, same completion tracking. See SCORM packages.
Path B: Adapt JSON sources
Section titled “Path B: Adapt JSON sources”Path B keeps the Adapt course source itself in ulams, as versioned JSON (course, config,
contentObjects, articles, blocks, components), and builds it into a SCORM package with a
separate build service (ADR 0013). The built package goes
through Path A, so there is still no separate Adapt topic type.
It is a feature flag, off by default. An operator turns it on with ADAPT_SOURCE_ENABLED=true
and starts the build service (see Configuration). While it is off, Courses → Adapt
shows a notice that Adapt sources are not enabled. You need the adapt_manage permission (given to
admin).
The Adapt library
Section titled “The Adapt library”Courses → Adapt (/courses/adapt) lists sources with their title, status, current version,
the version last built and the SCORM package it produced.
| Status | Meaning |
|---|---|
draft |
Saved, not built yet, or changed since the last build |
building |
A build is queued or running. The list and the editor refresh every 3 seconds |
built |
The built version was imported as a SCORM package |
failed |
The build failed. The error is shown in the row and in the editor |
- New Adapt source: paste the JSON or upload a
.jsonfile, and optionally give a title (it defaults to the course title). The structure is checked first; errors are listed with their path, for example/components/3/_component. - Open the source with Edit to change the JSON. Save as new version (with an optional change note) keeps the previous versions; open an older one with Open in the version list to start from it.
- Build turns the current version into a SCORM package. The editor asks you to save changes first.
- When the status is
built, the editor shows the package number. Add a SCORM topic to a lesson and select that package (see SCORM packages).
Deleting a source does not delete the SCORM package that was built from it.
Configuration
Section titled “Configuration”For operators. Path A needs none of this.
| Variable | Default | Meaning |
|---|---|---|
ADAPT_SOURCE_ENABLED |
false |
Turns Path B on |
ADAPT_BUILDER_URL |
http://adapt-builder:8080 |
Where the API reaches the build service |
ADAPT_BUILDER_TOKEN |
none | Shared secret for calls to the build service; must match the service |
ADAPT_BUILDER_TIMEOUT |
300 |
Seconds the API waits for one build call |
ADAPT_MAX_SOURCE_KB |
4096 |
Largest source JSON accepted |
ADAPT_QUEUE_CONNECTION, ADAPT_QUEUE |
<driver>-builder, builder |
Where the build job runs |
The build runs as a job on the builder queue (job timeout 900 s, retry_after above it), so a worker for
that queue must be running: see Queues and the scheduler. The build
service is a separate GPL-3.0 program in api/adapt-builder (about 30 to 90 seconds of CPU per build). In
the development stack start it with docker compose --profile adapt up -d adapt-builder from api/. Its
image is not among the images published to GHCR, so a production install builds it from
api/adapt-builder (see its README) and runs it where only the API can reach it.