Write your course content in reStructuredText, embed interactive H5P exercises, and track learner progress through xAPI/CMI5. Sphinx Courseware turns Sphinx into a full courseware authoring platform.
What it does
You write your course material as Sphinx documentation. The H5P extension lets you embed interactive content (quizzes, drag-and-drop, fill-in-the-blanks) directly into your pages. The xAPI layer records what learners do, so you can see who completed what, how they scored, and where they got stuck.
Everything builds to static HTML that you can host anywhere. The learner tracking works in the browser and syncs when a connection is available.
Project structure
The project is a monorepo with several packages:
- sphinxcontrib.h5p - the core Sphinx extension for embedding H5P content
- sphinxcontrib.xapi / sphinxcontrib.xapi.cmi5 - learner tracking via xAPI and CMI5
- sphinxcontrib-h5p-js / sphinxcontrib-xapi-js - JavaScript that runs in the browser
- xapi-browser-middleware - stores learning records locally until they can be synced
- spec - the formal courseware specification
- demo-courseware - a working example course
Features
- Embed H5P interactive content directly in Sphinx documents
- Track learner progress with xAPI/CMI5
- Offline-capable: learning records are stored in the browser and synced later
- Spec-driven: the courseware format has a formal specification
- Automated H5P component packaging
- Builds to static HTML you can host anywhere
Tech stack
Python 3.8+, Sphinx, TypeScript, Webpack, SCSS, Jest, Make