Thanks for your interest in contributing to the project!
| Name | Context | Links |
|---|---|---|
| Django | Web framework | Get Started, Documentation |
| Celery | Async task execution, monitoring, scheduling | Introduction, Documentation |
| MariaDB | Django/Celery database backend | About, Documentation |
| RabbitMQ | Celery broker | Get Started, Documentation |
| Redis | Caching, session store, task result backend | Get Started |
| Bootstrap | UI design | Documentation |
| Pipenv | Env virtualization, reqirements management | Documentation |
Programming-Contest-Suite/
├── deploy/
├── docs/
├── scripts/
├── src/
├── utils/
├── .dockerignore
├── .gitignore
├── Dockerfile
├── Pipfile
├── Pipfile.lock
├── requirements-dev.txt
└── requirements.txt
deploy: example deployment files useful for development and testingdocs: project documentationscripts: shell scripts for executing various project servicessrc: project source codeutils: helper tools for input file creation.dockerignore: specifies files and directories ignored bydocker build.gitignore: specifies files and directories ignored bygitDockerfile: specifies the construction of the project's Docker imagePipfile: high level project requirements file used by PipenvPipfile.lock: the full project requirements built from thePipfilerequirements-dev.txt: project requirments for development and debugrequirements.txt: project requirements for production
Programming-Contest-Suite/
└── src/
├── announcements/
├── assets/
├── checkin/
├── contestadmin/
├── contestsuite/
├── core/
├── lfg/
├── manager/
├── media/
├── register/
├── static/
├── templates/
└── manage.py
announcements: display and distribute contest announcementsassets: static files utilized project-widecheckin: contest day check-incontestadmin: contest administration interfacecontestsuite: settings directory for Django and Celerycore: site's public facing pageslfg: Looking For Group servicemanager: user profile and team managementmedia: target directory for files generated by or uploaded to the PCS (placeholder dir)register: user account registration and team creationstatic: target directory for all project static files upon deployment (placeholder dir)templates: target directory for all project HTML templates upon deploymentmanage.py: Django management entrypoint
deploy/docker-compose.yml contains an example deployment intended for Docker Compose and suitable for local testing and development.
If you are running the development deployment for the first time, or have made any changes to the project's Celery tasks, run:
docker compose build
Launch the project:
docker compose up
NOTE: In order to monitor the debug logs, as well as view any emails the system sends while in debug, it is suggested to NOT use the -d flag with the docker compose up command.
# Programming-Contest-Suite/
pipenv install
# Programming-Contest-Suite/
pipenv requirements > requirements.txt
# Programming-Contest-Suite/
pipenv requirements --dev > requirements-dev.txt
All project documentation is located in docs/. We utilize the Just the Docs Jekyll theme to style our documentation in Github Pages.
We use something similar to SemVer:
- MAJOR version for significant codebase rewrites.
- MINOR version for localized changes, e.g. adding a new feature.
- PATCH version for any adjustment to
maincodebase, e.g. bugfix.