Initial commit
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# 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
|
||||
|
||||
```bash
|
||||
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).
|
||||
Reference in New Issue
Block a user