Judge0 is an open source online judge API for code compilation and execution on given test data. It provides extensive documentation for developing, configuring and hosting your own instance with ease. Currently supports 16 compilers and interpreters, and more of them can be added easly. It's powered by Rails, you can use Docker in both development and production environment, and every untrusted code you run is sandboxed using isolate.
Project is organized in three major components:
judge0-base represents base Docker image on which judge0-api will be build. It installs different compilers, interpreters and sandbox environment which are necessary for judge0-api.
judge0-api is core logic of judge0 which accepts requests, creates background jobs and runs untrusted programs in sandboxed environment.
judge0-demo represents static demo web page located at www.judge0.com. It is irrelevant if you want to host your own judge0, but it is useful when developing judge0 because it provides simple interface for running untrusted code.
My goal is to create configurable, robust, easy to use and fully documented online judge API service which can be used and hosted by anyone for free, and I was motivated to start this project when I saw Sphere Engine.
In the future I would like to build full online judge service which will enable anybody to host their own competition, or it can be used by schools and universities for educational purposes, e.q. writing exams or solving programming exercises.
Hosting your judge0 is easy thanks to Docker and Docker Compose. Minimal setup for hosting your judge0 is described here here
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request