# 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](http://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. [pip-compile-multi]: https://pypi.org/project/pip-compile-multi/ [direnv]: https://direnv.net/ [just]: https://just.systems/ [pyenv]: https://github.com/pyenv/pyenv [homebrew]: https://brew.sh/