From 4aa100bd36f464c5b4ff819ee248811aabd49c06 Mon Sep 17 00:00:00 2001 From: Marlan McInnes-Taylor Date: Fri, 12 Jan 2024 02:18:48 -0600 Subject: [PATCH] added contributors guide --- CONTRIBUTING.md | 118 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 115 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0bd93b52..4cafe399 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,9 +1,121 @@ -# How to contribute to Programming Contest Suite -Thanks for your interest in contributing to the project! +# Contributors Guide +Thanks for your interest in contributing to the project! As of January 2024, development has been permanently handed off to the ACM at FSU chapter. Please visit [FSU-ACM/Programming-Contest-Suite](https://github.com/FSU-ACM/Programming-Contest-Suite) for the latest version of the project, and up-to-date contribution information. + +## Frameworks and Tools + +Name | Context | Links +---|---|--- +Django | Web framework | [Get Started](https://www.djangoproject.com/start/), [Documentation](https://docs.djangoproject.com/en/4.2/) +Celery | Async task execution, monitoring, scheduling | [Introduction](https://docs.celeryq.dev/en/stable/getting-started/introduction.html), [Documentation](https://docs.celeryq.dev/en/stable/index.html) +MariaDB | Django/Celery database backend | [About](https://mariadb.org/about/), [Documentation](https://mariadb.org/documentation/) +RabbitMQ | Celery broker | [Get Started](https://www.rabbitmq.com/#getstarted), [Documentation](https://www.rabbitmq.com/documentation.html) +Redis | Caching, session store, task result backend | [Get Started](https://redis.io/docs/get-started/) +Bootstrap | UI design | [Documentation](https://getbootstrap.com/docs/4.5/getting-started/introduction/) +Pipenv | Env virtualization, reqirements management | [Documentation](https://pipenv.pypa.io/en/latest/) + +## Repository Overview + +``` +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 testing +- `docs`: project documentation +- `scripts`: shell scripts for executing various project services +- `src`: project source code +- `utils`: helper tools for input file creation +- `.dockerignore`: specifies files and directories ignored by `docker build` +- `.gitignore`: specifies files and directories ignored by `git` +- `Dockerfile`: specifies the construction of the project's Docker image +- `Pipfile`: high level project requirements file used by Pipenv +- `Pipfile.lock`: the full project requirements built from the `Pipfile` +- `requirements-dev.txt`: project requirments for development and debug +- `requirements.txt`: project requirements for production + +## Source Overview + +``` +Programming-Contest-Suite/ +└── src/ + ├── announcements/ + ├── assets/ + ├── checkin/ + ├── contestadmin/ + ├── contestsuite/ + ├── core/ + ├── lfg/ + ├── manager/ + ├── media/ + ├── register/ + ├── static/ + ├── templates/ + ├── bot.py + └── manage.py +``` + +- `announcements`: display and distribute contest announcements +- `assets`: static files utilized project-wide +- `checkin`: contest day check-in +- `contestadmin`: contest administration interface +- `contestsuite`: settings directory for Django and Celery +- `core`: site's public facing pages +- `lfg`: Looking For Group service +- `manager`: user profile and team management +- `media`: target directory for files generated by or uploaded to the PCS (placeholder dir) +- `register`: user account registration and team creation +- `static`: target directory for all project static files upon deployment (placeholder dir) +- `templates`: target directory for all project HTML templates upon deployment +- `bot.py`: Discord bot which assists in LFG profile verification +- `manage.py`: Django management entrypoint + +## Testing & Development Server + +`deploy/dev/docker-compose.yml` contains an example deployment intended for [Docker Compose](https://docs.docker.com/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. + +## Project Requirements + +### Initialize Virtual Environment + +Ensure the `Pipfile` is in your working directory. + + pipenv install + +### Update `requirements.txt` + +#### Production + + pipenv requirements > requirements.txt + +#### Development + + pipenv requirements --dev requirements-dev.txt ## Versioning + We use something similar to [SemVer](https://semver.org/): - MAJOR version for significant codebase rewrites. - MINOR version for localized changes, e.g. adding a new feature. - - PATCH version for any adjustment to `master` codebase, e.g. bugfix. + - PATCH version for any adjustment to `main` codebase, e.g. bugfix. \ No newline at end of file