Einkaufsliste – Produktspezifikation (Gesamtprompt)
==================================================

Ziel-URL: https://einkauf.pauker.at
Lokal:    http://pauker/einkauf

Dieses Dokument ist die verbindliche Sammel-Spezifikation fuer dieses Projekt (Laravel-App „einkauf“).
Technische Details der Umsetzung: Code im Repo; bei Abweichungen Prompt aktualisieren.


Plattform & Darstellung
-----------------------
- Desktop: gut bedienbar (grosse Klickflächen, übersichtlich).
- Smartphone: wie eine „App“ nutzbar (responsive UI).
- Offline: **soll möglich sein** → PWA mit Web-App-Manifest und Service-Worker; statische Shell und gecachte Assets; bei Bedarf später Strategie für Listendaten offline (Cache/API, Sync nach Reconnect – schrittweise ausarbeiten).


Authentifizierung & Sicherheit
------------------------------
- Registrierung / Login mit E-Mail und Passwort; Session merken („eingeloggt bleiben“ über Laravel-Session/Cookie wie üblich).
- Passwort nur als Hash speichern (bcrypt/Argon2 – Laravel-Standard).
- Passwort vergessen: Link per E-Mail, mit dem ein neues Passwort gesetzt werden kann (Password-Reset-Flow).


Listenfunktionalität – Schnellfluss (Pflicht-UX)
-----------------------------------------------
- Neuer Eintrag: zuerst **nur der Produktname**; Absenden mit **Enter** (zusaetzlicher Button „Hinzufuegen“ ist ok).
- Eintrag erscheint in der **offenen** Liste.
- **Erledigen wie in Microsoft To Do:** in der offenen Liste **Checkbox** links; **Ankreuzen** sendet den Eintrag als erledigt (**ohne** Pflicht zu Geschaeft, Menge, Preis, Foto). Klick auf den Produktnamen toggelt die Checkbox (Label).
- **Erledigte Eintraege:** weiterhin sichtbar; **angekreuzte Checkbox**; **Abwaehlen** setzt den Eintrag wieder auf **offen**.


Bearbeiten & Zusatzangaben (ein Einstieg)
-----------------------------------------
- Rechts neben jeder Zeile ein **Bleistift-Icon**; ein Klick oeffnet **ein** Panel mit allen Aenderungsmoeglichkeiten (kein getrenntes „Bearbeiten“ und „Details“ mehr).
- **Stammdaten:** Produktname, Menge, Geschaeft (Auswahl und/oder freier Name) – **„Aenderungen speichern“** (PATCH update), **ohne** Erledigt-Status zu aendern.
- **Nur bei offenen Eintraegen** zusaetzlich im selben Panel: optional **Preis**, **Foto**, ggf. Menge/Geschaeft beim Abhaken – **„Erledigt mit Angaben“** (PATCH toggle); alles optional; schnelles Abhaken per **Checkbox** bleibt unabhaengig.
- Beim Anlegen weiterhin nur Name im Eingabefeld oben; Stueck/Geschaeft ueber das Bleistift-Panel.


Preise & Historie
-----------------
- Preis **manuell** eintragbar; optional **Foto**-Upload; **kein OCR-/Scan-Zwang** – zuerst reicht manuelle Eingabe; OCR hoechstens **viel spaeter** optional.
- Erfasster Preis mit **Datum**, **Geschaeft**, **Produkt** speichern (Preishistorie / Logs wo im Backend vorgesehen).
- **Auswertung:** Anzeige, wie viel der Einkauf (nach erfassten Preisen) **pro Geschaeft** und **gesamt** kostet.


Geschäfte (Stores)
------------------
- Mehrere Geschäfte anlegbar/benutzbar (z. B. Spar, Lidl, Obi …), frei erweiterbar.


Externe / Online-Preise
-----------------------
- Automatisch Online-Preise zu Listeneinträgen beziehen: **noch nicht** – fuer **spaeter** vormerken; keine Umsetzung bis Quellen/API geklärt sind.


Leitplanken fuer Code & Texte
------------------------------
- UI-Sprache: Deutsch; im Code bei fehlenden Umlauten konsistent **ae / oe / ue** wie im bestehenden Projekt.
- Backend: **Laravel** (dieses Repo).
- Aenderungen fokussiert; keine unnötigen Grossrefactors.


Festgelegte Produktentscheidungen
---------------------------------
1. Preis: **zuerst manuell** (+ optional Foto); **kein** OCR-Meilenstein in naher Planung.
2. Online-Preise automatisch: **spaeter**.
3. **Offline:** mit PWA/SW **anstreben** (Umsetzung iterativ).


Implementierungs-Stand (Referenz, bei Features nachpflegen)
-----------------------------------------------------------
- Routen u. a.: `shopping-items.store`, `shopping-items.update` (PATCH), `shopping-items.toggle` (PATCH, erledigt/offen, optionale Preis-/Foto-Daten).
- Views: Einkaufsliste-Dashboard mit offenen/erledigten Listen, Checkboxen, **Bleistift-Panel** (`item-pencil-panel`) pro Eintrag, Summen pro Geschaeft.
- PWA (Manifest/Service-Worker): laut obigen Zielen noch **auszubauen**, sofern nicht bereits erledigt.
