Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


build codecov Maintainability


Click to expand


  • Python 3.10+ (latest, stable version preferred)
  • Having cloned this repository to your machine
    • For most purposes, check out the dev branch, as it's the base branch for all development:
      git clone
      git checkout -B dev origin/dev


We recommend using PyCharm for development, mostly because of its excellent Django support, and because it's able to integrate all the IntelliJ-specific settings in the project's .editorconfig file.

If you decide to use this IDE, open the repo folder cloned as part of the prerequisites, through PyCharm (File → Open...), and set the following settings (File → Settings...):

  • Under "Languages & Frameworks" → "Django":
    • Make sure the "Enable Django Support" checkbox is checked
    • "Django project root:" <repo folder location>/src
    • "Settings:" web/
    • "Manage script:" <repo folder location>/
  • Under "Project: <repo folder name>" → "Project Structure":
    • Mark the src folder as "Sources"


  1. Create a virtual environment, presumably named venv:
    • This should be placed in the folder containing the project folder, and not inside the project folder itself
      • Example folder structure (where web is the name of the project folder):
        ├─ venv
        └─ web
           └─ (this file)
      • Among other things, this prevents translations from being made inside the virtual environment folder when running the makemessages management command
      • If using PyCharm, and a virtual environment was not created as part of the project creation process, refer to the "Configure a virtual environment" guide
      • Otherwise, cd to the project folder, and run:
        [newest installed Python command, like python3.11] -m venv ../venv
  2. Activate the virtual environment:
    • If using PyCharm, this should be done automatically when opening a terminal tab inside the IDE
    • Otherwise, cd to the project folder, and run:
      • On Windows:
      • On Linux/macOS:
        source ../venv/bin/activate
  3. Install requirements:
    • If using Windows, first download the correct wheel for the python-ldap package from Christoph Gohlke's page (linked to by python-ldap's documentation) and install it:
      pip install [path to .whl file]
      (It is possible to instead build python-ldap from source, but it's a bit cumbersome setting up the right build tools.)
    • Regardless of operating system, run:
      pip install -r requirements.txt

Running the server for the first time

  1. Create an SQLite database file with the proper tables:
    python migrate
  2. Create an admin user for local development:
    python createsuperuser
    It's easiest to create one with both the username and the password set to "admin", and with no email address.
  3. Run the server:
    • If using PyCharm, just press the green "play" button in the top right corner
      • Make sure that the correct run configuration is selected in the dropdown next to the button, which by default should be named "web" and have a tiny Django logo
    • Otherwise, run:
      python runserver [optional port number; defaults to 8000]

Contribution guidelines

See for the following topics:


Visit the wiki to read about various things related to development of this project!


The changelog is updated on the dev branch when changes are made to the codebase - specifically under the "Unreleased" section. This section is then renamed to the current date whenever a deployment pull request is merged into the main branch, and a new, empty "Unreleased" section is added.