Arbeite **nicht** auf der Urlaubs-SQLite als führende Instanz. Voraussetzung: `laptop_closeout.md` ist erfüllt (`origin/main` inkl. `transfer/`-Zip). USB/NAS sind auf dem Laptop nicht der Weg.
-`docker-compose.dev.yml` / `docker-compose.dev-env.yml` nach Familienbrauch
-`backend/Dockerfile`, `frontend/Dockerfile`
- Root-`.env.example` für Compose-Secrets (DB-Passwort, Provider-Keys). Bestehendes `backend/.env.example` nicht stillschweigend ersetzen.
- Volumes für App-Daten und Medien. Keine Mitai-Volume-Namen (`bodytrack_*`).
- Healthcheck Backend; Startup: DB ready → Migrationen → Uvicorn.
- Lokale Ports **nicht** 3002/8002/5173/8000.
Zwischenstand zulässig: Compose startet Backend weiterhin auf SQLite im Volume, Postgres-Container schon mitlaufen, App noch nicht umgestellt. Das muss in `runtime_and_deploy.md` explizit stehen.
Abnahme Phase B:
- [ ]`docker compose up` startet die drei Dienste
- [ ] Frontend erreicht Backend über `/api`
- [ ] Secrets nur in Host-`.env`
- [ ] Re-Restore oder Volume-Mount der Phase-A-Daten dokumentiert
- [ ]`scripts/test-mvp.ps1` bleibt der lokale Nicht-Docker-Weg
---
## Phase C – PostgreSQL als App-Persistenz
Eigene Implementierung, kein stilles Umbenennen von `db.py`.
1. Adapter oder Dual-Backend: SQLite bleibt für Laptop/Tests zulässig, bis Postgres abgenommen ist.
2.`schema.sql` und die bestehenden `schema_migrations` nach Postgres-Dialekt führen (kein `PRAGMA`, `datetime('now')` prüfen, Typen).
Phase A: Restore aus `transfer/kansho-laptop-20260907.zip` nach `backend/data/` (1 Profil, 2 Spaces inkl. `Kroatien 2026`, 17 Days/Entries, 20 Conversations, 379 Messages, 70 Mediendateien). Health `GET /api/health` ok. `backend/.env` neu aus Example (Keys vom Nutzer nachzutragen). `transfer/` danach aus dem Tree genommen.
Phase B–D im Repository: Compose, Dual-Backend, Workflows, `docs/DEPLOYMENT.md`. Pi-Verzeichnisse und Host-nginx sind einmalig auf `192.168.2.49` anzulegen. Persönlicher Postgres-Import zuerst nach Dev, dann Prod.