Contributing to Site

This project is responsible for maintaining the website, all of it's subdomains, and the backend API that our Python Discord Bot relies on to function.

The website is built on the Django web framework, uses django-wiki for resource pages and utilises Bulma for CSS.

This guide is new and is the process of testing and refinement. If you have any troubles following it, let staff know!

Requirements


Fork the project

You will need access to a copy of the git repository of your own that will allow you to edit the code and push your commits to. Creating a copy of a repository under your own account is called a fork.

This is where all your changes and commits will be pushed to, and from where your PRs will originate from.

For any Core Developers, since you have write permissions already to the original repository, you can just create a feature branch to push your commits to instead.


Development environment

  1. Clone your fork to a local project directory
  2. Install the project's dependencies
  3. Prepare your hosts file

Build the Docker service

Before running the project, build the docker service via docker-compose from your project directory.

docker-compose build

Run the project

To run the project, launch the project containers using docker-compose.

docker-compose up


If you get any Docker related errors, reference the Possible Issues section of the Docker page.


Working on the project

The development environment will watch for code changes in your project directory and will restart the server when a module has been edited automatically. Unless you are editing the Dockerfile or docker-compose.yml, you shouldn't need to manually restart the container during a developing session.

Click here to see the basic Git workflow when contributing to one of our projects.


Django admin site

Django provides an interface for administration with which you can view and edit the models among other things. It can be found at http://admin.pythondiscord.local:8000. The default credentials are admin for the username and admin for the password.