Files
F-r-ldraledigplannerare/backend
..
2026-06-14 18:39:55 +02:00
2026-06-14 09:58:30 +02:00
2026-06-14 18:39:55 +02:00
2026-06-14 09:58:30 +02:00
2026-06-01 16:48:21 +02:00
2026-06-01 16:48:21 +02:00
2026-06-14 09:58:30 +02:00
2026-06-01 16:48:21 +02:00
2026-06-01 16:48:21 +02:00
2026-06-14 09:58:30 +02:00

Backend — Föräldraledigplannerare

FastAPI + Python 3.14, packages managed with uv. Layered architecture (entities → repositories → services → routers) with dependency injection so the database backend (SQLite now, Postgres later) is swappable.

Setup

uv sync                 # install deps (incl. dev group)
uv run uvicorn app.main:app --reload   # run dev server on :8000
uv run pytest           # run tests with coverage
uv run ruff check .     # lint

Layout

app/
  config.py            # pydantic-settings (app config + frozen LeaveRules)
  dependencies.py      # DI factories (pick repo impl by settings.database_type)
  entities/            # plain dataclasses (domain)
  models/              # pydantic API schemas
  repositories/        # abstract interfaces
  repositories_impl/   # concrete impls per backend (sqlite/, postgres/)
  services/            # business logic
  routers/             # FastAPI routes
  db/connection.py     # connection + (dev) schema bootstrap
  utils/               # errors, logger

Reference vertical slice

VacationDays is implemented end-to-end (entity → schema → repo interface → SQLite impl → service → router → tests). Copy this slice when adding a new entity. See JUNIOR_ONBOARDING.md in the repo root for task-by-task guidance.

The inline schema in db/connection.py exists only so dev/tests are self-contained. Production schema is owned by Alembic migrations (a senior task).