mmcinnestaylor / Programming-Contest-Suite

Registration and management suite to host ICPC Contests at Florida State University
https://contest.cs.fsu.edu
MIT License
1 stars 3 forks source link
bootstrap4 celery discord-py django docker gunicorn mariadb pipenv python3 rabbitmq redis

Programming Contest Suite

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.

Development Update: January 2024

Future development of this project has been handed off to the ACM at FSU chapter. Please reference CONTRIBUTING.md for additional information.

Features

Contestants

Organizers

Volunteers

Faculty Members

Installation

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.

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 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.

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

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 .

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

The following assumes Programming-Contest-Suite/src is the working directory.

Web Server
gunicorn contestsuite.wsgi:application
Celery Worker
celery -A contestsuite worker
Celery Beat
celery -A contestsuite beat --scheduler django_celery_beat.schedulers:DatabaseScheduler

Documentation

All project documentation is available in docs/, and on our documentation website.

Contributing

We welcome contributions to the project! Check out CONTRIBUTING.md to learn how to get started.

Our Contributors