learningequality / learningequality/studio
[QTI] Build and ship the new QTI editor for core interaction types
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 191
- Forks
- 307
- Avg merge
- 5d 6h
- Merged PRs (30d)
- 10
Description
❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.
Overview
This is a tracking issue. It covers the work to build a new self-contained QTI authoring editor in Kolibri Studio and fully replace the existing AssessmentEditor with it, scoped to the interaction types Studio currently supports: Single Choice, Multiple Choice, True/False, and Text Entry.
For product requirements, interaction type definitions, and the full nine-type scope, see #5927. Future tracking issues (siblings of this one) will cover the remaining interaction types.
What we are building
A new QTI editor from scratch. The existing AssessmentEditor was built for the Options API and is tightly coupled to Vuex, and difficult to extend for more question types. The new editor lives under shared/views/QTIEditor/, and is Vuex-independent at the component level — making it extractable as a standalone package in the future. It reuses the card-list UX of the existing editor but is a clean rebuild, not a refactor.
Support for the four core interaction types. The new editor will support authoring Single Choice, Multiple Choice, and Text Entry questions as QTI 3.0 interactions. Each interaction type is a self-contained plugin that owns its editor component, its XML parse/serialize logic, and its validation rules. The plugin registry pattern means adding new interaction types later is additive.
A full replacement of the existing AssessmentEditor. Once the new editor supports all four interaction types end-to-end — including reading from and writing back to Studio's content pipeline — it replaces the existing AssessmentEditor entirely.
Acceptance criteria
- The new
shared/views/QTIEditor/is the live editor for Single Choice, Multiple Choice, and Text Entry items in the Studio channel editor - The existing
AssessmentEditoris removed - Studio generates valid QTI 3.0 packages for each of the four interaction types that render correctly in Kolibri's QTI viewer
- All new components use the Vue Composition API and carry no direct Vuex coupling
AI usage
This issue was drafted using assistance from Claude Code (Sonnet 4.6).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with #5927 for the product requirements, then inspect shared/views/QTIEditor/ and the existing AssessmentEditor in the Studio channel editor. Trace how supported interactions are read from and written to Studio's content pipeline. Done means the new editor replaces AssessmentEditor, supports the four listed interaction types, produces valid QTI 3.0 packages, and uses the Composition API without direct Vuex coupling.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, xml
- Domain
- content, frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 15/100