Skip to content

Development#

Prerequisites#

  • Python 3.11 or 3.12
  • Postgres (optional — SQLite works for unit tests)
  • make for convenience

Setup#

python -m venv .venv && source .venv/bin/activate
pip install -U pip
pip install -e .[dev]
cp .env.example .env
make dev

Make targets#

  • make devuvicorn with auto-reload
  • make run — foreground server
  • make lint / make fmt — Ruff static checks & formatting
  • make testpytest test suite
  • make migrate m="msg" — Alembic revision
  • make upgrade — apply migrations to head

Tests#

  • Unit tests use SQLite by default.
  • CI runs on Python 3.11/3.12 (see .github/workflows/ci.yml).

Style#

  • Ruff enforces formatting and lint rules.
  • Prefer type hints and small, composable functions.
  • Keep external network operations behind service boundaries.