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.
- Registration: quickly register for an upcoming programming contest, or as a walk-in participant on contest day
- Teams: form and manage teams of up to three individuals, all within the profile management dashboard
- Courses: select any available FSU classes in which the individual is registered in order to receive extra credit for contest participation (subject to instructor approval)
- Matchmaking: Discord powered matchmaking service to assist in team formation
- Check-in: simple student-ID card based check-in
- Announcements: create public contest announcements viewable in the web app and optionally distributed via email and/or Discord webhook
- Tools: easy-to-use faculty and course data input file generation utilities
- Courses: one-click upload and processing of faculty + course data files in Django Admin
- DOMjudge: one-click generation of contestant data input files used to initialize DOMjudge
- Participation: one-click generation of contestant participation files invididually curated for each faculty member
- Volunteer Management: volunteer role assignment interface and volunteer check-in monitoring
- Check-in: easy-to-use dedicated volunteer check-in interface
- Integration: automatic notification post contest of participation file availability, accessible via secure download
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.