No description
Find a file
2025-03-17 17:12:56 +01:00
.woodpecker [CI] run tests against python 3.13.2 and 3.12.9 2025-03-15 00:00:53 +01:00
collector [tests] WIP 2025-03-15 23:15:46 +01:00
config [logs] set up and use structlog in our app 2025-03-15 21:57:13 +01:00
requirements [dependencies] add structlog packages, also for django and pytest 2025-03-15 21:52:57 +01:00
.env.ci [CI] Turn debug OFF on ci 2025-03-14 22:36:19 +01:00
.env.test [project] settings.py react to the DEPLOYMENT variable 2025-03-14 12:43:38 +01:00
.envrc.sample [direnv] provide sample envrc 2025-03-12 17:24:29 +01:00
.gitignore [git] add datadump to project-specific gitignore 2025-03-14 12:05:12 +01:00
justfile [just] add new target to recalculate/update and then sync dependencies 2025-03-17 17:12:56 +01:00
manage.py [project] start project 2025-03-12 17:23:58 +01:00
pyproject.toml [codestyle] taplo wants "pythonpath" to be a list of strings 2025-03-15 21:54:11 +01:00
README.md [deployment] select .env according to env var 2025-03-14 14:15:51 +01:00
VERSION.py [project] bump version 2025-03-14 14:20:21 +01:00

Teilchensammler: Collect parts in a list

Development

This project makes use of direnv and just.

direnv is used to set up environment variables and activate the virtualenv. I recommend installing it and integrate it into your favourite shell. It works well with fish shell.

just ist used as a task runner.

Getting started

Have Python >= 3.12 installed. I use pyenv (which in turn is installed by homebrew).

Set up Postgresql, a role and a schema. I have it on localhost, using the project name for role and schema name, and password. See .env.test for providing connection information.

Clone the repo. cd into the project directory. (direnv should activate the virtualenv.) Run python -m pip install -U pip to upgrade pip. Then python -m pip install -r requirements/dev.txt.

Launch the dev server: just serve (or python -m django runserver when you don't have just).

Making changes

Change code, settings, templates, dependencies as you see fit. Run just lint repeatedly. Don't forget migrations. Commit often.

Using the App

just serve and open localhost:8000/collector in your browser.

Dependency management

This project uses pip-compile-multi for hard-pinning dependencies versions. Please see its documentation for usage instructions. In short, requirements/base.in contains the list of direct requirements with occasional version constraints (like Django<2) and requirements/base.txt is automatically generated from it by adding recursive tree of dependencies with fixed versions. The same goes for test and dev.

To upgrade dependency versions, run just deps (or pip-compile-multi --uv).

To add a new dependency without upgrade, add it to the appropriate .in file and run pip-compile-multi --no-upgrade (no just recipe yet).

Installing dependencies

For installation always use .txt files.

A useful command is pip-sync requirements/dev.txt, it uninstalls packages from your virtualenv that aren't listed in the file.

For example, command pip install -Ue . -r requirements/dev.txt will install this project in development mode, testing requirements and development tools.