# MABEA Backend – Sprint 0 FastAPI-Skeleton, Datenbankschema (Alembic), Auth (JWT), Rollen-Dependency. Details: `ergebnisse/sprintplan.md`, `ergebnisse/19_technische_architektur.md`, `ergebnisse/20_datenbank_schema.md`. ## Setup (auf dem Zielsystem, nicht lokal) ```bash python3 -m venv .venv source .venv/bin/activate pip install -e ".[dev]" cp example.env .env # .env editieren: DATABASE_URL, JWT_SECRET_KEY, SYSTEMKNOTEN_ID alembic upgrade head uvicorn app.main:app --host 0.0.0.0 --port 8000 ``` ## Tests (CI oder Zielsystem) ```bash pytest ``` Erwartet eine per Alembic migrierte PostgreSQL-Test-Datenbank (`DATABASE_URL` zeigt darauf). CI-Workflow: `.gitea/workflows/ci.yml`. ## Struktur - `app/core/app_settings.py` – Konfiguration aus Umgebungsvariablen - `app/core/security.py` – Passwort-Hashing, JWT - `app/db/` – SQLAlchemy Engine/Session - `app/models/` – ORM-Modelle (Sprint 0: nur Auth-relevante Tabellen; weitere Modelle folgen Sprint 1+) - `app/api/` – FastAPI-Router, Dependencies (u.a. `require_roles` für Prompt-05-Berechtigungsmatrix) - `alembic/versions/0001_initial_schema.py` – vollständiges Ziel-Schema (Prompt 20), auch für Tabellen, die erst spätere Sprints per API befüllen - `alembic/versions/0002_seed_hauptserver.py` – Sprintplan E6: seedet den einen `systemknoten`-Datensatz (`typ='haupt'`)