Schritt 1: Fundament der Lebensmittel-Lagerverwaltung (Pantry)

Backend (FastAPI + PostgreSQL): Chargen mit MHD, FEFO-Auslagern,
Einheiten-Umrechnung (Stueck/g/ml + Packungen), Open-Food-Facts-Lookup
mit lokalem Fallback, JWT-Auth mit Rollen (Admin/Nutzer), erster Admin
beim Setup, Einkaufsliste, Ablaufwarnung, Lagerorte, pytest fuer FEFO.

Web-UI (React/Vite): Login, Dashboard, Ein-/Auslagern, Produkte,
Lagerorte, Benutzerverwaltung, Einkaufsliste - rollenabhaengig.

Deploy: docker-compose + install.sh (Docker-Autoinstall, Secrets),
README und Roadmap fuer Schritt 2 (iOS) und Schritt 3.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-07-22 09:14:14 +02:00
commit 639126468f
57 changed files with 3460 additions and 0 deletions

32
docs/ROADMAP.md Normal file
View File

@@ -0,0 +1,32 @@
# Pantry Roadmap
Selfhostbare Lebensmittel-Lagerverwaltung. Aufbau in mehreren Schritten.
## Schritt 1 Fundament ✅ (dieser Stand)
- Backend (FastAPI + PostgreSQL): Datenmodell, Auth mit Rollen, FEFO-Auslagern,
Einheiten-Umrechnung, Open-Food-Facts-Lookup mit lokalem Fallback.
- Web-UI (React/Vite): Login, Dashboard, Ein-/Auslagern, Produkte, Lagerorte,
Benutzerverwaltung, Einkaufsliste rollenabhängig.
- Deployment: Docker Compose + `install.sh`, erster Admin beim Setup.
- Tests: pytest für FEFO-Abbuchung und Einheiten-Umrechnung.
## Schritt 2 Native iOS-App (SwiftUI)
- Login (Server-URL + Passwort, Token im Keychain).
- Barcode-Scan (VisionKit / AVFoundation).
- Einlagern-Flow: scannen → Lookup/Vorbefüllung → Menge + Einheit + MHD → speichern.
- Auslagern-Flow: scannen → Menge/Einheit (ganz oder Teilmenge g/l) → FEFO.
- Einkaufsliste- und „bald ablaufend“-Ansicht.
- Optional: unbekannte Produkte direkt in der App anlegen.
## Schritt 3 Fortgeschrittene Features
- **Gruppen-Intelligenz:** Produkt beim Einlagern automatisch einer Gruppe zuordnen
(Ableitung aus OFF-Kategorie), manuell korrigierbar.
- **Mindestbestände auf Gruppen** (z. B. „Nudeln“ gesamt), nicht nur einzelne Produkte.
(DB-Spalte `groups.min_stock` ist bereits vorbereitet.)
- **Unterlagerorte** (Regal xy / Fach xy). (DB-Spalte `locations.parent_id` vorbereitet.)
- **Einheiten-Umwandlung nachträglich** (Packung ↔ g/l) komfortabel in Web + App.
- **Ablauf-Push-Benachrichtigungen** via APNs.
- **Produktbilder** aus OFF anzeigen (Web + App) + lokaler Bild-Cache.
- **Einkaufsliste verfeinern:** Mengenvorschläge, manuelle Ergänzungen, Abhaken/Erledigen.
- **Bewegungsverlauf/Statistik** (wer/was wann ein-/ausgelagert) Tabelle `movements`
wird bereits befüllt, es fehlt nur die Ansicht.