The Programming Contest Suite (PCS) is 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.
Future development of this project has been handed off to the ACM at FSU chapter. Please reference CONTRIBUTING.md
for additional information.
Simply clone this repository:
git clone https://github.com/mmcinnestaylor/Programming-Contest-Suite.git
Alternatively, download one of the versions available on the releases page.
There are many ways to deploy Django. The project has been extenively tested with and includes files for deploying using Docker.
Please reference docs/docker/
for image creation and usage documentation. Pre-built images are available in the project's Docker Hub repository. Reference deploy/docker-compose.yml
for an example deployment intended for Docker Compose and suitable for local development and testing purposes.
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.
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.
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.
Package manifest files are located in the repository's root directory. The Pipfile
can be used to set up a virtual environment using Pipenv, which is also used to generate a pip
compatible requirements.txt
.
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.
The following assumes Programming-Contest-Suite/src
is the working directory.
gunicorn contestsuite.wsgi:application
celery -A contestsuite worker
celery -A contestsuite beat --scheduler django_celery_beat.schedulers:DatabaseScheduler
All project documentation is available in docs/
, and on our documentation website.
We welcome contributions to the project! Check out CONTRIBUTING.md
to learn how to get started.