Skip to content

Core Dependencies

Everything here comes from backend/pyproject.toml, managed with uv (uv sync installs all of it). You don’t need to know every package deeply — just what to blame when something breaks.

Package What it does
fastapi The web framework — turns your Python functions into HTTP endpoints
pydantic Validates request/response data against the shapes in models.py
pydantic-settings Reads .env into the settings object used everywhere
python-multipart Parses form data — needed for the login endpoint
email-validator Validates any field typed as an email address
Package What it does
sqlmodel The ORM — combines Pydantic (validation) and SQLAlchemy (database) into one model class
psycopg The actual PostgreSQL driver underneath SQLModel
alembic Generates and runs database migrations
pyjwt Creates and verifies the JWT tokens used for login sessions
pwdlib (argon2, bcrypt) Hashes passwords — never stores them as plain text
Package What it does
emails + jinja2 Sends templated emails (password reset)
tenacity Retry logic — used to wait for the database to be ready on startup
httpx Async HTTP client, mainly used in tests
Package What it does
sentry-sdk Error tracking — inactive unless you set SENTRY_DSN, and disabled locally either way
Package What it does
pytest + coverage Runs and measures the test suite
ruff Lints and auto-formats the code
mypy + ty Type checking