Coder Social home page Coder Social logo

mmcinnestaylor / programming-contest-suite Goto Github PK

View Code? Open in Web Editor NEW
1.0 4.0 3.0 2.7 MB

Registration and management suite to host ICPC Contests at Florida State University

Home Page: https://contest.cs.fsu.edu

License: MIT License

Python 47.97% HTML 50.04% CSS 0.20% JavaScript 0.66% Shell 0.67% Dockerfile 0.46%
django bootstrap4 docker mariadb redis rabbitmq celery gunicorn pipenv python3 discord-py

programming-contest-suite's Introduction

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

  • 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

Organizers

  • 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

Volunteers

  • Check-in: easy-to-use dedicated volunteer check-in interface

Faculty Members

  • Integration: automatic notification post contest of participation file availability, accessible via secure download

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

programming-contest-suite's People

Contributors

danielmriley avatar dependabot[bot] avatar mmcinnestaylor avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

fsu-acm

programming-contest-suite's Issues

add Volunteer role

adding role to distinguish between room proctors and general volunteers

  • Update Fac Dash with explanation

Update admin checkin

  • Choice between practice contest or live contest checkin
  • Update to allow repeated checkin all without resending credentials to those who are already checked in

Admin panel update

Display number of walk-in teams per division in Upper/lower info card

Contest time updates

  • Allow None in relevant Contest model fields
  • If field is None > show N/A in templates
  • Update formatting to not show 'noon' and 'midnight'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.