Skip to main content

EvaP - Evaluation Platform

Build Status Codacy Badge codecov PyPI

What is EvaP?

EvaP is the course evaluation system used internally at Hasso Plattner Institute at the University of Potsdam.

For the documentation, please see our wiki.

Development Setup

We use nix to manage the development environment. To get a local version of EvaP running, follow these steps:

  1. Windows only: Install the Windows Subsystem for Linux (WSL) using wsl --install -d Ubuntu-24.04 (you may have to restart your computer and run this command again). Enter the WSL environment using the wsl command. On your first entry, you need to choose a username and password - anything works (for example: username "evap", password "evap"). Perform the next step outside of /mnt, for example by going to your home directory (cd ~).
  2. Install git. Run the following commands to clone and enter the EvaP repository:
    git clone https://github.com/e-valuation/EvaP.git
    cd EvaP
    
  3. Install nix by running ./nix/setup-nix. Afterwards, if you get any errors when running nix, restart your computer.
  4. Start EvaP and wait until you see a table view and the "evap" row shows "Running":
    nix run
    
  5. Open your web browser at http://localhost:8000/ and login with email evap@institution.example.com and password evap.

To stop EvaP, press Ctrl-C and confirm with Enter.

What is going on?

The command nix run starts a program called process-compose which performs some initial setup and orchestrates a number of processes needed to run EvaP. In particular, nix and process-compose handle installation of all dependencies, setup of the postgres database and redis cache, compilation of TypeScript, SCSS, and translation files, and running the Django development server. When changing Python, HTML, SCSS, or TypeScript files, you do not have to restart the server.

Contributing

We'd love to see contributions! PRs solving existing issues are most helpful to us. It's best if you ask to be assigned for the issue so we won't have multiple people working on the same issue. Feel free to open issues for bugs, setup problems, or feature requests. If you have other questions, feel free to contact the organization members.

To work on EvaP, you can open a shell with all dependencies available:

cd EvaP
nix develop
./manage.py test # In the shell, you can use ./manage.py commands

To exit the development shell, press Ctrl-D or type exit.

If you start your code editor from the nix develop shell, it should automatically pick up all dependencies. If this does not work automatically, try using the nix/nix-python script in the EvaP project as the Python interpreter in your IDE.

After quitting nix run, you can run the command nix run .#clean-setup to remove persistent state (database, node modules, localsettings). Afterwards, nix run will recreate everything when you run it the next time.

Before committing, run ./manage.py precommit or alternatively, the individual commands:

  • ./manage.py typecheck
  • ./manage.py test (check out --keepdb and --parallel for faster execution)
  • ./manage.py lint
  • ./manage.py format

You can also set up ruff, pylint, and prettier in your IDE to avoid doing this manually all the time.

Creating a Pull Request (Workflow Suggestion)

  1. (once) Fork the repository so you have a GitHub repo that you have write access to.

  2. (once) Set up some authentication for GitHub that allows push access. A common option is using SSH keys, the remaining instructions assume an SSH key setup. An alternative is using the GitHub CLI tool.

  3. (once) Ensure your git remotes are setup to use SSH. To fetch the up-to-date state of the official repo, it's useful to have an "upstream" remote configured:

    git remote set-url origin git@github.com:<your-username>/EvaP.git
    git remote add upstream git@github.com:e-valuation/EvaP.git
    
  4. Create a branch (git switch -c <your-branch-name>), commit your changes (git add and git commit), and push them (git push). "Push" will ask you to specify an upstream branch (git push -u origin <your-branch-name>).

  5. GitHub should now ask you whether you want to open a pull request ("PR"). If the PR solves an issue, use one of GitHub's magic keywords (like "fixes") in the pull request description to create a link between your PR and the issue. If necessary, please also provide a short summary of your changes in the description.

License

MIT, see LICENSE.md.

Supported Browsers

The platform is only tested in Mozilla Firefox and Google Chrome. Other browsers might not render all pages correctly.

Metadata

Release files for evap 2026.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for evap 2026.5.0
File Size Uploaded
evap-2026.5.0.tar.gz 1.7 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for evap 2026.5.0
File Interpreter ABI Platform
evap-2026.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 3.5 MB

Release files / evap-2026.5.0.tar.gz

Download URL evap-2026.5.0.tar.gz
Size 1.7 MB
Tags Source
SHA-256 checksum
How to use checksums
825f85d0fb53d578db7c553f6ff3ba2539c7974362880dcbc70bf25953779b8c
BLAKE2b-256 checksum
How to use checksums
0098c3f39463fc32c178ada8da62efa01e8745efc9734aa3481ac2625a25d04a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 8, 2026.

Transparency log

Release files / evap-2026.5.0-py3-none-any.whl

Download URL evap-2026.5.0-py3-none-any.whl
Size 1.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
1fabf90ec77b191ee4a1ee0b708f0a327b13ea6b0e521cd97ae39dfd85d5adcc
BLAKE2b-256 checksum
How to use checksums
a6ed9d2ecf769e633656e4caa1a84a2ef9e1de6cc409150abc9aa1ceb2e9605b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 8, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page