Hi everyone,
I’m currently exploring the development of a custom XBlock that allows learners to practice mini-project style coding assessments directly within Open edX. The idea is to go beyond single-file/single-language inputs and create an experience similar to HackerRank or HackerEarth, where:
- Learners can write and manage multiple code files per problem
- The editor supports multiple languages (Python, C++, Java, etc.)
- Real-time code execution and evaluation is powered by Judge0
- The interface is built using Monaco Editor (VS Code-like UX)
- All of this is kept open-source and extensible by the community
What I’ve explored so far:
- Looked at xblock-ai-evaluation as a reference
- Monaco is embed-able, but multi-file support and syncing with the backend is tricky
- Judge0 seems to work well for code execution across languages, but file structuring and per-language runtime handling needs careful design
What I’m trying to build:
An XBlock that can:
- Let instructors define problems requiring more than one source file
- Provide starter templates in multiple files
- Let students submit code in the language of their choice
- Automatically evaluate and provide feedback (via test cases or expected output)
- Be as portable and reusable as possible for the wider edX community
What I need help with:
- Has anyone already attempted something similar?
- Are there other XBlocks I should look into for inspiration (like codeeditor, problem-builder, or xblock-jsinput)?
- Guidance on handling:
- Backend design for storing and submitting multiple files
- Frontend integration of Monaco in multi-tab/file mode
- Secure, scalable integration with Judge0 (possibly with Docker isolation?)
- Contributors or collaborators who might be interested in helping shape this as an open-source plugin
Would love any thoughts, suggestions, or pointers from the community. If someone has experience with building similar tooling or has time to brainstorm, I’d greatly appreciate a conversation.
Thanks in advance!
— Yahya Adhikari
(Open Source Enthusiast | Educator | Developer)