ESIT is a simple online judge with additional features. Measure execution time and limit memory inside nsjail-based sandbox environments. Divide your content into sets of exercises and show your results with scoreboards. Extend and personalize platform features with community plugins from GitHub.
ESIT is a platform for organizing contests, exams and other similar forms related to Computer Science.
Important
Take into consideration, that this is still an unstable project. You are using this software at your own risk.
Create user esit-user and download the repository:
git clone https://github.com/jstpp/esit.git && cd esitYou can customize the config file. You should consider this when running it in production, otherwise, you can ignore it.
Start Docker Compose with predefined user-id and group-id:
UID="<your-uid>" GID="<your-gid>" docker compose -f compose.yaml upTip
To check your uid and gid you can use the following commands:
id -u && id -gThe service should be available on localhost:80 unless you change it. The first registered user becomes an admin.
ESIT uses nsjail to isolate algorithmic solutions and uses default mechanisms of compilers or OS to measure the parameters of compilation. Currently, it supports Python (3.11) and C++ (C++20).
ESIT's support for CTF solutions (at the moment) is limited to cases where the flag is hidden inside a single file. Hosting more sophisticated challenges in nsjail is planned in the future.
ESIT also supports:
- writing tasks (with LaTeX support)
- single choice tests
- multiple choice tests
Check the ESIT custom configuration options here.
Tip
When running docker installation remember to check if your custom config matches the credentials in compose.yaml.
Although the code variables and comments are in English, ESIT doesn't provide an English GUI. Feel free to add translations.
For more information see:

