Repo-wide commands, the architecture-decision workflow, and code style. Tree-specific conventions live in their own files: back-end package conventions in audera/AGENTS.md, UI conventions in audera/ui/AGENTS.md, visual conventions in brand/AGENTS.md, the public site in website/AGENTS.md, tests in tests/AGENTS.md, and the device image in os/dietpi/AGENTS.md.
uv sync --all-extras # install all dependencies including dev
uv run ruff check --fix # lint (max-line-length = 129)
uv run ruff format # format
uv run ty check # type check
uv run python testing.py # run ad-hoc tests (no formal test framework)
uv run pytest tests/dal/ -v # DAL tests (no Docker required)
uv run pytest tests/clients/test_snapserver.py -v # requires Docker
uv run pytest tests/clients/ -v # all client tests
uv run pytest -v # everything except the systemd lane
uv run pytest -m systemd -v # real systemd in a privileged container (requires Docker)
pre-commit install # install git hooks (run once after clone)
pre-commit run --all-files # run all hooks manuallyInstall as a tool directly from GitHub:
uv tool install git+https://github.com/Eleff-org/audera.gitList @audera/ for the Python package layout.
ADRs in docs/adrs/ are human decision records. Read and follow the relevant ADR when working on code it covers. List @docs/adrs/ for the catalog.
- Type-hint all parameters and return values; use
Literalfor constrained string values - Google-style docstrings
snake_casefunctions/variables,PascalCaseclasses,UPPER_CASEconstants,_leading_underscoreprivate- Single quotes unless the string contains a single quote; f-strings for formatting
- 4-space indentation, 129-character line limit
- Follow simplicity as a design goal, e.g. "the least buggy code is the code never written"
- Work in comprehensive increments that incl. code, tests and docs changes in a single commit