Welcome to the documentation for the Programming Contest Suite (PCS), a set of tools for running ICPC style programming competitions hosted by the Association for Computing Machinery Florida State University Student Chapter. The suite is designed to work with a DOMJudge jury system by facilitating contest registration and management, generating contestant data files required by DOMjudge, and processing contest results.

contest.cs.fsu.edu View on GitHub


Installation

Clone the repository:

git clone https://github.com/mmcinnestaylor/Programming-Contest-Suite.git

Alternatively, download one of the versions available on the releases page.

Deployment

There are many ways to deploy Django. The project has been extenively tested with and includes files for deploying using Docker.

Docker

Please reference our Docker image documentation for creation and usage details. Pre-built images are available in the project’s Docker Hub repository. An example deployment intended for Docker Compose and suitable for local development and testing purposes is available in the repository’s deploy directory.

Default Superuser

user: contestadmin
pass: seminoles1!

A default superuser account is created when the container connects to an empty database. The default password should be changed to secure the account.

Production

The default values of SECRET_KEY and HASHID_FIELD_SALT are not safe for production use and should be changed. Django secret key generators are readily available online.

Quick-start

The following steps outline running the PCS outside of a Docker context. This is minimally sufficient for development or internal testing, but not for a production deployment.

Install Project Requirements

# Programming-Contest-Suite/

pipenv install

Spin-up Support Services

Using the default configuration, Django and Celery rely on instances of MariaDB, Redis, and RabbitMQ. Server addresses and credentials should be passed to Django and Celery via envronment variables.

Start Django & Celery

Web Server
# Programming-Contest-Suite/src/

gunicorn contestsuite.wsgi:application
Celery Worker
# Programming-Contest-Suite/src/

celery -A contestsuite worker
Celery Beat
# Programming-Contest-Suite/src/

celery -A contestsuite beat --scheduler django_celery_beat.schedulers:DatabaseScheduler

Contributing

We welcome contributions to the project! Check out the Contributor’s Guide to learn how to get started.

Thank you to the contributors of the project!