Skip to content

elansteam/backend

Repository files navigation

Elan testing system backend

Elan is a modern platform and testing system for holding programming contests. It is like ejudge or Yandex Contest, but a way better.

This repository contains API code, please reffer to another repo for seeing the runner source code.

Why Elan?

  • Modern. Elan has a very nice and intuitive UI based on Google Material Design 3 design system.
  • Powerful. It supports holding IOI and ICPC contests formats, groups creation (could be useful in schools) and online VS Code-like code editor.
  • Self-hosted and open source. You can deploy Elan on your own and enjoy all its advantages, storing all your data locally on your servers. Say "bye" to closed-source Codeforces & Yandex Contests :)

What does Elan consist of?

Elan API (backend)

Well-documented JSON API, written on FastAPI Python framework

Elan Runner

Runner is a low-level engine, a subsystem of Elan, which is responsible for safely running isolated processes that are strictly limited in terms of resource consumption: memory, CPU and real-time, number of threads and file descriptors. Runner is based on the Linux kernel cgroups v2 mechanism. It imposes rlimits and ulimits and keeps track of all system calls of the running process.

Runner is written from scratch on C++, and it has Python API.