Home - nathantheinventor/open-contest GitHub Wiki

Welcome to the OpenContest wiki! OpenContest is an open-source programming contest management system designed to support small to medium programming contests. The purpose of this wiki is to explain to potential contributors the inner workings of OpenContest so that they can contribute more effectively.

Key Terms

  • Container/Image: A Docker container is a virtual machine running without the overhead of traditional hypervisor technology. You can find out more about Docker containers from Docker.
  • OpenContest Server: The main server in OpenContest. This includes both the static file server and the API server.
  • Runner: When a user submits code, OpenContest creates a new Docker container called a runner that compiles and runs the code for the user. The runner is chosen based on the language of the submission.

Server Architecture

The OpenContest server is composed of two parts:

  • Static HTML Server: All web pages in the app are static HTML pages that are generated by a Python module in the server. You can find out more under HTML generation
  • API Server: All dynamic data is submitted through AJAX to the API server. The API Server is also written in Python. You can learn more under API Server.

Runners

Each language has a dedicated runner to compile and test code in that language. You can learn more under How To Write a Runner.