teilchensammler/README.md

68 lines
2.3 KiB
Markdown
Raw Normal View History

# 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/