Umsetzung eines Beratungsberichts zur Deploy-Pipeline auf dem ressourcenbeschränkten VPS: reproduzierbare, schnellere Deploys durch geprüfte Lockfile-Installation, aktuelle Node-Version und Docker-Layer-Caching. Weitere Empfehlungen (Migrations-Base-Image, Postgres/Redis-Recreate-Verhalten, Build-Verlagerung nach GitHub Actions) folgen in späteren Schritten. Implementiert in v0.86.1.
✓ npm ci statt npm install, Lockfile bleibt erhalten statt bei jedem Deploy neu aufgelöst zu werden
✓ Node 22 → 24 (behebt Versions-Inkompatibilität mit @zxing/library), engines-Feld ergänzt, alle "latest"-Paketversionen auf den geprüften Stand eingefroren
✓ --no-cache beim Docker-Image-Build entfernt + BUILD_ID-Frische-Check ersetzt die Absicherung — unveränderte node_modules-Layer werden jetzt gecacht
Das Benutzer-Dashboard wird zu einer frei anpassbaren Blockliste: Rezept des Tages mit Titelfoto, eine Kachel-Übersicht aller Feature-Bereiche unter „Meine Punkte“ sowie ein Bearbeiten-Modus, in dem sich das gesamte Dashboard per Drag-&-Drop umsortieren und ausblenden lässt. Die Anordnung wird pro Nutzer in der DB gespeichert. Implementiert in v0.80.0.
✓ Rezept des Tages mit Titelfoto (coverImagePath, Kategorie-Platzhalter als Fallback)
✓ Feature-Kacheln (Wochenplan, Statistiken, Preise, FoodShare u. a.) nach dem bestehenden Quick-Link-Muster
✓ Bearbeiten-Modus „Dashboard anpassen“: Drag-&-Drop-Sortierung (dnd-kit, touch-tauglich) für alle Blöcke
✓ Blöcke ausblenden → „Ausgeblendet“-Bereich, jederzeit wieder einblendbar; „Zurücksetzen“ auf Standard
✓ Anordnung pro Nutzer persistiert (UserProfile.dashboardLayout, geräteübergreifend)
✓ Architektur: Server rendert Sektions-Knoten, Client-Grid ordnet sie an (Daten-/DB-Logik bleibt serverseitig)
✓ v0.80.2: Feature-Kacheln als vertikale Karten, auch mobil 2-spaltig (klarer Kachel-Look)
✓ v0.80.2: Vorrats-Berater als fixierter FAB unten rechts + Modal (Feedback-Button-Maße), auf Dashboard & Vorrats-Seite
implementiert
DashboardUXPersonalisierung
CommunityMittlere Priorität
Deine Nachbarschaft
Freiwillige Nachbarschaftssuche unter Nachrichten: opt-in Sichtbarkeit mit grober Standortangabe (Browser-GPS auf ~1 km gerundet oder PLZ-Fallback), Nachbarn-Liste nach Entfernung, Anfrage-/Freigabe-Flow, der bei Annahme einen Chat erzeugt, Push-/Glocken-Benachrichtigungen und „Kontakt aufnehmen" beim Community-Autor. Ohne Karte, ohne Einzelmarker, ohne genaue Adresse. Implementiert in v0.77.0.
✓ Sichtbarkeits-Consent + serverseitig gerundeter Standort (löschbar beim Abschalten)
✓ Anfrage-/Annahme-/Ablehnen-Flow mit Chat-Erzeugung + Benachrichtigungen
✓ Nachbarschafts-Tab, Aktivierung/GPS-Consent, „Kontakt aufnehmen" in der Community
implementiert
CommunityGeoDSGVO
InfrastrukturMittlere Priorität
PLZ-Referenzdatenbank + Autosuggest
Vollständige deutsche PLZ-Referenzdatenbank (Ort, Bundesland, Koordinaten; best-effort Einwohner/Fläche/Vorwahl/Kfz) als geteilte Grundlage. PLZ-/Ort-Autosuggest bei der Adresseingabe und GPS-Fallback für die kommende Nachbarschafts-Funktion. Implementiert in v0.76.0.
✓ PostalCode-Modell (Zeile pro PLZ+Ort) + ~20.000-Einträge-Datensatz (GeoNames, CC-BY 4.0)
v0.86.0 ✓ Autosuggest jetzt direkt in PLZ- und Ort-Feld integriert (kein separates Suchfeld mehr) — Auswahl befüllt PLZ, Ort und Region automatisch. Als wiederverwendbares Pattern (PostalCodeLocationFields) umgesetzt und eingebunden in Profil-Einstellungen, Marktplatz-Inserate und FoodShare-Angebote.
Guthaben-System für KI-gestützte Wochenplan-Generierung und einzelne Rezept-Neugenerierung. Fortschrittsbalken im Wochenplan-Header, aufladbar über Stripe in vier Paketgrößen (Mini bis Bestes Angebot). Free-Nutzer erhalten ein Startguthaben, Plus/Family ein monatliches Kontingent im Abo. Implementiert in v0.73.0.
✓ Fortschrittsbalken im Wochenplan-Header, reagiert live auf Wochenplan-Generierung und Rezept-Neugenerierung
✓ Neu: einzelne Rezept-Neugenerierung im Wochenplan (2 Taler) statt nur ganze Woche neu generieren
✓ Neue Seite „KI-Taler" mit Guthaben-Übersicht, vier Kauf-Paketen und FAQ
✓ Stripe-Einmalzahlung für Taler-Pakete, Webhook für Gutschrift + Kontingent-Reset bei Plan-Wechsel
✓ Kein Hard-Block: reicht das Guthaben nicht, gibt es automatisch einen nicht-personalisierten Plan
implementiert
KIMonetarisierungStripe
CommunityHohe Priorität
Chat & Nachbarschaft v2
Fixiertes Chat-Layout (nur Nachrichten scrollen), Foto-Versand mit automatischer Löschung nach 180 Tagen, Online-/Zuletzt-online-Status, Live-Aktualisierung von Chats und Nachbarschaft per Polling, Nachbar-Anfragen oben in beiden Reitern sowie datenschutzfreundliche Anzeigenamen im gesamten öffentlichen Raum. Implementiert in v0.78.0.
✓ Fixiertes Chat-Layout: Kopf und Eingabe bleiben sichtbar, nur die Nachrichtenliste scrollt
✓ Foto-Versand im Chat (1 Foto/Nachricht, serverseitig komprimiert via sharp, EXIF/GPS entfernt)
✓ Tages-Cron löscht Foto-Dateien nach 180 Tagen (DB-Feld wird genullt, Platzhaltertext bleibt)
✓ Online-/Zuletzt-online-Status hinter dem Namen im Chat-Header, per Heartbeat + Live-Polling
✓ Chats-Reiter und Nachbarschafts-Reiter aktualisieren sich automatisch per Polling (SSR-Startwerte)
✓ Nachbarschafts-Anfragen erscheinen oben in beiden Reitern (Chats und Nachbarschaft)
✓ Datenschutzfreundliche Anzeigenamen (formatPublicName) im öffentlichen Raum, voller Name nur im eigenen Haushalt
✓ Header aufgeräumt: Tag/Nacht-Umschaltung nur noch im Menü und in der Seitenleiste
✓ v0.79.1: Chat-Detailseite als fixiertes Overlay (position:fixed zwischen Header und Bottom-Nav) + Body-Scroll-Sperre — nur die Nachrichten scrollen, mobil stabil; schlanker Chat-Kopf mit Zurück-Pfeil
✓ v0.79.0: Nachrichten + Nachbarschaft erst nach E-Mail-Bestätigung nutzbar (UI-Sperre + serverseitige 403-Absicherung)
implementiert
CommunityMessagingDSGVO
CommunityHohe Priorität
Chat-Fundament (Ein Chat pro Nutzer-Paar)
Nachrichten funktionieren jetzt wie bei WhatsApp: ein Chat pro Nutzer-Paar statt pro Marktplatz-Angebot. Haushaltsmitglieder erscheinen automatisch in der Chatliste, dazu Lesebestätigungen, Tippt-Indikator und Blockieren mit Grundangabe. Implementiert in v0.75.0.
✓ Ein Chat pro Nutzer-Paar (statt pro Listing) über einen neuen pairKey-Lookup
✓ Haushaltsmitglieder automatisch in der Chatliste, auch ohne bisherigen Verlauf
✓ Lesehaken + „Gelesen HH:mm" unter der letzten gelesenen eigenen Nachricht
✓ Live-Tippt-Indikator
✓ Nutzer blockieren (Grund: Spam/Belästigung/kein Interesse/Sonstiges) — serverseitig nicht möglich bei Haushaltsmitgliedern
✓ Neues Chat-Icon mit Ungelesen-Badge im mobilen Header
implementiert
CommunityMessaging
CommunityHohe Priorität
Community-Bereich (Ideen & Feedback)
StackOverflow-artiger Community-Bereich für Ideensammlung und Feedback: Threads mit Titel, Text und optionalem Bild, verschachtelte Kommentare, Up-/Downvotes für Threads und Kommentare, Admin-Moderation und Verlinkung mit Changelog/Roadmap. Implementiert in v0.70.0.
✓ Threads mit Titel/Text/optionalem Bild in 5 Kategorien (Feature-Idee/Bug-Report/Verbesserung/Frage/Sonstiges)
✓ Up-/Downvotes für Threads und Kommentare, Sortierung nach Score/Neuestem/Kommentaranzahl
✓ Schreibrechte: verifizierte E-Mail + mindestens ein Haushalt (Admins/Super-Admins bypass)
✓ Admin-Moderation (Verbergen/Löschen/Status/Reports), auditiert via AdminAuditLog
✓ Changelog → Roadmap → Community verlinkt, optionale Roadmap-Thread-Verknüpfung mit Live-Score
implementiert
CommunityFeedback
FeatureMittlere Priorität
Vorrats-Berater (Low-Stock-Empfehlungen)
Bei weniger als 10 aktiven Vorratsartikeln schlägt „Dein Vorrats-Berater" schrittweise fehlende Alltags-Basics vor (admin-gepflegte Liste), mit drei Aktionen je Vorschlag: zur Einkaufsliste, direkt in den Vorrat, oder dauerhaft ablehnen. Implementiert in v0.72.0.
✓ Karte auf Dashboard und Vorratsseite, erscheint bei < 10 aktiven Vorratsartikeln
✓ Schrittweise Vorschläge (eine Karte nach der anderen) aus admin-gepflegter Basics-Liste
✓ Drei Aktionen: „Zum Einkauf", „Hab ich schon" (mit Punkten), „Brauch ich nicht" (dauerhaft)
✓ Admin: „Alltags-Basic"-Markierung + Menge/Einheit in der Produktverwaltung, Filter „Nur Basics"
v0.84.0 ✓ Erweitert um Alltags-Drogerieartikel (Alufolie, Frischhaltefolie, Spülmittel, Toilettenpapier u. a.), eigene Kategorie „Haushalt & Drogerie"
v0.84.0 ✓ FAB übernimmt die Position des entfernten Plus-Buttons auf der Vorratsseite + Link zum manuellen Hinzufügen im Modal
v0.85.0 ✓ Vorschlagsliste erweitert auf bis zu 30 Vorschläge (vorher 8) + 13 neue Basics (Gewürze, Getränke, Drogerie)
Offen: Personalisierung nach Vorrats-Historie, KI-Vorschläge, Reset-UI für abgelehnte Vorschläge
Mobile Admin-/Partner-Navigation mit Bottom-Nav + Drawer-von-rechts, Bereichs-Badge im Header, Bereichswechsel im Avatar-Dropdown. Neuer Admin-Reiter Benachrichtigungen: gezielte Broadcasts nach PLZ-Bereich, Region und Alter (in-App + Push). Automatische Deployment-Benachrichtigung mit Version-Dedup. Optionales Geburtsdatum im Profil für altersbasierte Zielgruppen. Implementiert in v0.62.0.
Admin-CRUD für Nutzer, Haushalte, Werbepartner & Produkte
Der Admin-Bereich war für Nutzer, Haushalte und Werbepartner bislang reine Leselisten. Jetzt gibt es vollständige CRUD-Funktionalität: Detailseiten, Bearbeiten-Formulare und auditierte Löschfunktionen, plus manuelles Anlegen/Löschen im Produktkatalog. Implementiert in v0.85.0.
✓ Nutzer: Bearbeiten-Formular (Name, E-Mail, Plan; Rollenänderung nur für Super-Admins)
✓ Produkte: manuelles Anlegen + Löschen (blockiert, wenn noch in Vorrat oder Preishistorie verwendet)
✓ Alle Änder-/Löschaktionen schreiben einen Audit-Log-Eintrag (Projektregel: Adminzugriffe müssen auditierbar sein)
Offen: CRUD für Kampagnen (aktuell nur Freigabe-Workflow)
implementiert
AdminPlatform
KIHohe Priorität
Kassenbon-OCR Qualität verbessern
Der Tesseract-OCR-Adapter wird kontinuierlich verbessert: bessere Erkennung bei ungünstigen Foto-Bedingungen (quer fotografiert, schlechte Beleuchtung, Plastikfolie, zerknitterter Bon), mehr deutsche Supermarktketten, genauere Produktnamen-Bereinigung.
v0.59.1 ✓ 180°-Fallback: kopfstehende Bons werden automatisch erkannt
Offen: Mehrere Bons im Bild (automatisch trennen)
Offen: PDF-Kassenbons (E-Mail-Export von Supermärkten)
laufend
OCRKI
InfrastrukturMittlere Priorität
Unit Tests (vitest)
Kritische Zod-Schemas der Server Actions sind in testbare lib/schemas/-Dateien ausgelagert (Inventory, Shopping, Onboarding). 23 Unit-Tests laufen grün, CI-Testpflicht vor Deploy aktiv. Weitere Schemas und Domänenlogik folgen.
✓ CI-Integration: test-Job in deploy.yml laufen bei jedem Deploy (Pflicht vor Merge)
Offen: Health-Score-Berechnung
Offen: Preis-Trend-Algorithmus
Offen: Rewards-Punkte-Vergabe-Logik
implementiert
QualitätInfra
Geplant5
Phase 54CommunityHohe Priorität
Marketplace Detail + In-App-Chat
Detailseiten für Marketplace-Listings mit SWAP-Tausch-Angeboten. In-App-Chat zwischen Nutzern via SSE-Echtzeit, Nachrichten-Posteingang und Ungelesen-Badge. ✓ Implementiert in v0.50.0.
✓ Marketplace-Detailseite (/app/marketplace/[id])
✓ swapFor-Feld im Listing-Create-Form
✓ Prisma-Schema: Conversation + Message + swapFor
✓ In-App-Chat mit SSE-Echtzeit (/app/messages/[id])
✓ Nachrichten-Posteingang (/app/messages)
✓ Neue Konversation via /app/messages/new
✓ Ungelesen-Badge in der Navigation
implementiert
FoodShareCommunity
Phase 27KIMittlere Priorität
Carbon Footprint Tracking
Nutzer sehen den CO₂-Fußabdruck ihres Einkaufs basierend auf dem Eco-Score der Produkte. Wöchentliche Reports und grünere Produktalternativen motivieren zu bewussterem Konsum.
CO₂-Äquivalent je Produkt aus Eco-Score (A–E) berechnen
FoodShare-Impact: "Du hast X kg CO₂ durch Teilen gespart"
6–8 h
NachhaltigkeitFamily
Phase 31KIMittlere Priorität
Smarte Einkaufsliste 2.0
Die Einkaufsliste lernt aus dem Einkaufsverhalten, schlägt fehlende Artikel automatisch vor und schätzt die Gesamtkosten anhand vergangener Preise. ✓ Implementiert in v0.54.0.
✓ Auto-Vorschläge: Produkte, die regelmäßig aus dem Vorrat fehlen (gecacht, 5 min TTL)
✓ v0.61.0 „Fly-to-Cart": Abhaken im Vorrat fragt per Modal nach Einkaufsliste; Icon fliegt animiert zum Einkaufen-Button (mit Reduced-Motion-Fallback)
v0.84.0 ✓ Formular zum Hinzufügen jetzt einzeilig (Mikrofon im Suchfeld integriert, Menge über Zahnrad-Icon), bleibt beim Scrollen oben fixiert
v0.85.0 ✓ Warenkorb lässt sich jetzt mit einem Klick komplett leeren (statt nur einzeln oder nur abgehakte Artikel)
implementiert
KIFamily
InfrastrukturMittlere Priorität
Redis-Caching für häufige DB-Queries
Häufig abgefragte Daten (aktiver Haushalt, Notification-Count, Health-Score, Einkaufslisten-Vorschläge) werden kurz in Redis gecacht, um die Datenbankslast zu reduzieren. ✓ Implementiert in v0.54.0.
✓ Cache-Wrapper für alle Kern-Domains: Inventory, Health, Carbon, Rewards, Shopping, Products, Admin-KPI
✓ Notification-Badge-Count mit 30-s-TTL
✓ Health-Score + Carbon mit 5-min-TTL
✓ Shopping-Suggestions (GROUP BY) + ExpiringReplacements mit 5-min-TTL
✓ Cache-Invalidierung bei allen Schreiboperationen (add/consume/delete Inventory)
✓ Redis-Stub für lokale Entwicklung ohne Redis-Instanz
implementiert
PerformanceInfra
Phase 29CommunityNiedrige Priorität
FoodShare 2.0 — echte Transaktionen
FoodShare wird zu einem echten P2P-Lebensmitteltausch mit Matching, Chat-Anbindung und zweiseitiger Pickup-Bestätigung. Nur PLZ/Stadtteil — keine Einzeladressen. Implementiert in v0.114.0.
✓ v0.114.0 „Interesse zeigen" eröffnet einen Chat statt das Angebot sofort und endgültig zu beanspruchen (expressInterest + confirmHandover statt claimOffer)
✓ v0.114.0 Zweiseitige Pickup-Bestätigung: beide Seiten bestätigen unabhängig, erst danach Punkte für Geber (+10) und Nehmer (+15)
✓ v0.114.0 „Gesucht"-Anfrage-Board: Anfragen stellen, „Das kann ich anbieten" erstellt automatisch ein passendes Angebot inkl. Chat — nutzt dieselbe Angebots-/Claim-/Punkte-Pipeline, keine Duplizierung
✓ v0.114.0 Ghosting-Schutz: unbeantwortete Interesse-Anfragen laufen nach 7 Tagen automatisch ab, Angebot bleibt für andere sichtbar
Überholt: die ursprünglich hier beschriebene „echte Geo-Heatmap (Leaflet + OpenStreetMap)" ist doppelt überholt — diese Codebase ist seit dem Terrain/Sky-Feature vollständig von Leaflet auf MapLibre migriert, und die tatsächliche Umsetzung nutzt weiterhin den bestehenden PLZ-Präfix-Heatmap-Ansatz (wie im ursprünglichen FoodShare), keinen neuen kartenbasierten Rewrite
Offen: Partner-Fairteilpunkte (Pickup-Stationen in Partnerläden)
12–16 h
FoodSharePrivacy
Ideen6
Phase 30KIMittlere Priorität
Mikronährstoff-Tracking
Für gesundheitsbewusste Nutzer: 30+ Nährstoffe aus Open Food Facts / USDA-Daten, Tagesbedarf-Balken, Defizit-Alerts und Lebensmittelempfehlungen.
30+ Nährstoffe aus Open Food Facts und USDA FoodData Central
Import aus URL (Rezept-Seite → strukturiertes JSON via Scraping)
KI-Moderation auf unangemessene Inhalte
Datenschutz: keine Verlinkung zu Nutzerprofilen
10–14 h
CommunityPremium
Phase 33PlatformNiedrige Priorität
Werbepartner-Retail-Media-Netzwerk
Erweiterung des Partner-Dashboards zu einem vollständigen B2B-Werbennetzwerk: Sponsored Listings in Rezepten, regional getargetete Deal-Alerts, CPM/CPC-Abrechnung.
Sponsored-Product-Listings in Rezept-Zutaten (klar als Anzeige gekennzeichnet)
Deal-Alerts für Partner-Produkte (nur mit Consent)
Matomo-Tracking gegen Ad-/Tracking-Blocker absichern
Selbstgehostetes Matomo unter den Standard-Dateinamen „matomo.js"/„matomo.php" wird von verbreiteten Blocklisten (EasyPrivacy u. a.) erkannt und geblockt — bestätigt am 2026-07-10: Server liefert matomo.js korrekt (200, 68 KB), im Browser kam aber ein leerer 204-Response ohne jeden Header zurück, kein einziger matomo.php-Request feuerte. Betrifft jeden Browser mit Ad-Blocker/Tracking-Schutz (uBlock, Brave Shields, Firefox ETP, Safari ITP), unabhängig von Consent-Logik oder Deploy-Stand. Zusätzlich zu prüfen: Matomos eigener „Meine Besuche nicht zählen"-Opt-out-Cookie, falls im selben Browser wie das Matomo-Backend getestet wird.
Root Cause bestätigt: matomo.js/matomo.php-Requests werden clientseitig blockiert (Blockliste), nicht serverseitig
Standardlösung: Tracker-Skript + Endpoint über Reverse-Proxy unter unauffälligem Pfad ausliefern (URL-Cloaking, offizielle Matomo-Empfehlung)
Muss auf dem Matomo-Host (stats.eprojekt.design) konfiguriert werden, nicht im StockPilot-Code
Vorher gegenprüfen: Matomo-Backend → Verwaltung → Persönlich → „Meine Besuche nicht zählen" deaktivieren (klassischer False-Positive bei Eigentests)
3–5 h
MatomoAnalyticsDSGVO
InfrastrukturNiedrige Priorität
End-to-End Tests (Playwright)
Kritische User Journeys (Registrierung, Barcode-Scan, Kassenbon-Import, Checkout) werden durch Playwright-Tests automatisch verifiziert.
Registrierung → Onboarding → Dashboard
Barcode-Scan → Produkt hinzufügen
Kassenbon hochladen → Review → Inventory
Stripe-Checkout (Stripe Test-Modus)
10–14 h
QualitätCI/CD
InfrastrukturNiedrige Priorität
API-Dokumentation (OpenAPI)
Öffentliche und Partner-API-Endpunkte werden in OpenAPI / Swagger dokumentiert. Ermöglicht externe Integrationen und Partner-Anbindungen.
OpenAPI 3.1 Spec für alle /api-Routen
Swagger UI unter /api/docs
Authentifizierung dokumentieren (Bearer JWT)
Partner-API-Schlüssel-System
6–8 h
APIDocs
Reihenfolge und Inhalt können sich ändern · Feedback? Schreib uns