# Project-Good – Roadmap Selfhostbare Lebensmittel-Lagerverwaltung. Aufbau in mehreren Schritten. ## Schritt 1 – Fundament ✅ - Backend (FastAPI + PostgreSQL): Datenmodell, Auth mit Rollen (Admin/Benutzer), Chargen mit MHD, FEFO-Auslagern, Open-Food-Facts-Lookup (v0-API) mit lokalem Fallback. - Web-UI (React/Vite): Login, Dashboard, Ein-/Auslagern, Produkte, Lagerorte, Benutzerverwaltung, Einkaufsliste. - Deployment: Docker Compose + `install.sh` (Docker-/curl-Autoinstall, Secrets, erster Admin, Health-Check), README. - Tests: pytest für FEFO, Einheiten-Umrechnung und OFF-Mengenerkennung. ## Schritt 1b – Ausbau Web-UI ✅ - **Design:** professionelles Layout mit Seitenleiste, eigenes SVG-Icon-Set (bewusst keine Emojis), Light-/Dark-Mode, konsistente Farbcodierung (gelb = Warnfrist, rot = abgelaufen). - **Gruppen:** Verwaltung, Zuordnung im Produkt, Gruppen-Mindestbestand **mit Einheit**, Auto-Zuordnungsvorschlag aus der OFF-Kategorie. - **Einheiten (verwaltbar):** eigene Tabelle mit Art (Anzahl/Gewicht/Volumen) und Umrechnungsfaktor. Eingebaut: Stück, Gramm, Kilogramm, Milliliter, Liter. Admins können weitere anlegen (z.B. Pfund = 500 g). Gilt für Produkte **und** Gruppen-Mindestbestände; Bestände werden intern in der kanonischen Basiseinheit (Stück/Gramm/Milliliter) gespeichert. - **Einlagern:** Drei-Wege-Barcode-Erkennung (bekannt / bei OFF gefunden → inline anlegen / unbekannt), mehrere Chargen je Vorgang mit eigenem MHD, Warnung bei bereits abgelaufenem MHD. - **Auslagern:** automatisch per FEFO **oder** gezielte Auswahl einer Charge/MHD, auch Teilmengen. - **Chargen bearbeiten:** Menge/MHD korrigieren und Chargen löschen (mit Protokollierung als Korrektur-Bewegung). - **Lagerorte:** beliebig tief verschachtelbar (Schrank → Fach → Kiste → …). - **Mindestbestände:** je Produkt wahlweise in der Produkteinheit oder in Packungen. - **Verlauf:** Bewegungsprotokoll (wer/was/wann), **Einstellungen:** Ablauf-Warnfrist. - **Import / Export:** CSV (eine Zeile je Charge, in Excel bearbeitbar) und JSON (vollständiges Backup inkl. Einheiten, Gruppen, Lagerorte). Der Import ist rein additiv – unbekannte Produkte/Gruppen/Lagerorte werden angelegt, Chargen ergänzt, nichts gelöscht oder überschrieben. - **Migration:** schonendes Nachziehen neuer Spalten beim Start (`ADD COLUMN IF NOT EXISTS`), damit bestehende Installationen ihre Daten behalten. ## Schritt 2 – Native iOS-App (SwiftUI) – offen - Login (Server-URL + Passwort, Token im Keychain). - Barcode-Scan (VisionKit / AVFoundation). - Einlagern-Flow: scannen → Lookup/Vorbefüllung → Menge + Einheit + MHD (mehrere Chargen). - Auslagern-Flow: scannen → Menge/Einheit, FEFO oder Chargenauswahl. - Einkaufsliste- und „bald ablaufend“-Ansicht. - Produkte bei Bedarf direkt in der App anlegen. ## Schritt 3 – Weitere Ideen – offen - **Ablauf-Push-Benachrichtigungen** via APNs (setzt die App voraus). - **Einkaufsliste verfeinern:** Abhaken dauerhaft speichern, manuelle Einträge, Mengenvorschläge in Packungen. - **Statistik/Auswertung** über den Bewegungsverlauf (Verbrauch pro Zeitraum). - **Lagerort beim Auslagern** berücksichtigen bzw. pro Charge wählbar beim Einlagern. - **Produktbilder lokal cachen** (aktuell direkt von Open Food Facts geladen). - **Alembic-Migrationen** statt `create_all` + Startup-ALTER, sobald das Schema stabil ist.