Skip to content

Commit

Permalink
added contributors guide
Browse files Browse the repository at this point in the history
  • Loading branch information
mmcinnestaylor committed Jan 12, 2024
1 parent b633f66 commit 4aa100b
Showing 1 changed file with 115 additions and 3 deletions.
118 changes: 115 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -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.

0 comments on commit 4aa100b

Please sign in to comment.