Deploy and operate
Supported environment
Section titled “Supported environment”- Python 3.11 or later
- Django 4.2 or 5.2
- Open edX Redwood or later
The Python distribution is interactive-content-xblock; the Advanced Module
List entry point is interactive_content_xblock.
Install with Tutor
Section titled “Install with Tutor”Add the repository to OPENEDX_EXTRA_PIP_REQUIREMENTS:
git+https://github.com/blend-ed/interactive-content-xblock.git@masterFor a repeatable production deployment, replace master with a reviewed commit
or release tag. Rebuild the image and restart Open edX:
tutor images build openedxtutor local restartEnable the XBlock per course from Settings → Advanced Settings → Advanced
Module List. Add interactive_content_xblock.
Author access and browser security
Section titled “Author access and browser security”Treat permission to edit this XBlock as permission to execute browser code in a learner’s authenticated Open edX session. The learner view renders author HTML and CSS and runs author JavaScript in the page context; it is not an iframe sandbox.
- Limit Studio write access to trusted course teams.
- Review custom and AI-generated content before publishing.
- Do not embed credentials, tokens, personal data, or untrusted third-party scripts.
- Apply an appropriate Content Security Policy and allow-list only required external origins at the platform level.
- Test alongside the course theme and other XBlocks for CSS and global JavaScript collisions.
The AI generation endpoint has an additional server-side Studio write-permission check. Standard Studio access control protects the settings save handler.
Learner data
Section titled “Learner data”The XBlock stores these values in per-user state:
| Value | Description |
|---|---|
| Latest response | The complete object most recently passed to submitInteraction(). |
| Interaction count | Number of saved submissions. |
| Last interaction time | Server-side UTC timestamp for the latest submission. |
| Correctness and score | Latest evaluated result. |
| Feedback | Latest feedback message. |
| View/manual completion | Whether the completion-only event has already been emitted. |
Course staff can use Open edX View as Specific Learner to inspect a learner’s rendered state because the block supports read-only masquerade. Use the Open edX instructor dashboard for platform-provided bulk exports.
Enable Debug Mode only while troubleshooting. Its panel is visible to staff and includes the block ID, user ID, interaction count, last interaction time, correctness, and score.
Local development
Section titled “Local development”Install the checkout, add it as an Open edX image mount, and rebuild the development image:
cd interactive-content-xblockpip install -e .tutor mounts add /absolute/path/to/interactive-content-xblockCreate a local Tutor plugin in the directory printed by
tutor plugins printroot:
from tutor import hooks
hooks.Filters.MOUNTED_DIRECTORIES.add_item( ("openedx", "interactive_content_xblock"))Then enable the plugin and start the environment:
tutor plugins enable mount_interactive_content_xblocktutor images build openedx-devtutor dev start -dRun the upstream test environments from the repository:
tox -e py312-django52tox -e py312-django42tox -e qualitySource and issue tracker: blend-ed/interactive-content-xblock.