Beschreibung der Änderung

This commit is contained in:
Stefan Zwischenbrugger 2026-03-29 19:09:10 +02:00
parent b2a518e349
commit ec01066ec6
5 changed files with 72 additions and 9 deletions

View File

@ -0,0 +1,48 @@
---
description: Einkaufsliste Laravel vollständige Produkt-/Tech-Vorgaben (Master: prompt_einkaufsliste.txt)
alwaysApply: true
---
# Einkaufsliste Projektprompt (Kurzfassung)
**Master:** `prompt_einkaufsliste.txt` im Repo bei Konflikten dort nachführen.
## URLs
- Prod: `https://einkauf.pauker.at` · Lokal: `http://pauker/einkauf`
## Plattform
- Desktop + mobil responsive; **PWA/Offline** anstreben (Manifest + Service-Worker, Offline-Daten/Sync iterativ).
## Auth
- E-Mail + Passwort, Session merken; **Passwort nur gehasht**; **Passwort vergessen** per E-Mail-Link.
## UX Liste (Pflicht)
- **Neuer Eintrag:** nur **Produktname**, **Enter** reicht (+ optional Button).
- **Offen:** **Erledigt = Checkbox** (Stil Microsoft To Do): ankreuzen → erledigt; Name per **Label** klickbar.
- **Erledigt:** Checkbox **abwählen** → wieder offen.
- **Kein** Zwang zu Geschäft/Menge/Preis/Foto zum Abhaken.
## Bleistift-Panel (rechts)
- **Ein** Icon pro Zeile: Stammdaten (**PATCH** `update`) + bei **offenen** Einträgen optional **„Erledigt mit Angaben“** (**PATCH** `toggle` mit Preis/Foto). Erledigte Einträge: nur Stammdaten bearbeiten.
## Daten / Logik
- Preise manuell (+ optional Foto); Historie mit Datum/Geschäft/Produkt; **Summen** pro Geschäft + gesamt.
- **OCR** aus Foto: nicht kurzfristig; **Online-Preise** automatisch: später, nur mit geklärter Quelle.
## Stores
- Mehrere Geschäfte (frei erweiterbar).
## Code
- UI Deutsch; Code `ae`/`oe`/`ue` wie im Projekt; Laravel; fokussierte Änderungen.
## Implementierung (Anker)
- `ShoppingListController`: `store`, `update`, `toggle`; Views mit Checkboxen; Partial **`item-pencil-panel`**.

BIN
.gitignore vendored

Binary file not shown.

View File

@ -2,6 +2,9 @@
"$schema": "https://www.schemastore.org/package.json",
"private": true,
"type": "module",
"engines": {
"node": ">=20.19.0"
},
"scripts": {
"build": "vite build",
"dev": "vite"

View File

@ -32,16 +32,26 @@
</label>
</div>
<div class="flex items-center justify-end mt-4">
@if (Route::has('password.request'))
<a class="underline text-sm text-gray-600 hover:text-gray-900 rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" href="{{ route('password.request') }}">
{{ __('Forgot your password?') }}
</a>
@endif
<div class="flex items-center justify-between mt-4">
<div>
@if (Route::has('register'))
<a class="underline text-sm text-gray-600 hover:text-gray-900 rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" href="{{ route('register') }}">
{{ __('Register') }}
</a>
@endif
</div>
<x-primary-button class="ms-3">
{{ __('Log in') }}
</x-primary-button>
<div class="flex items-center">
@if (Route::has('password.request'))
<a class="underline text-sm text-gray-600 hover:text-gray-900 rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" href="{{ route('password.request') }}">
{{ __('Forgot your password?') }}
</a>
@endif
<x-primary-button class="ms-3">
{{ __('Log in') }}
</x-primary-button>
</div>
</div>
</form>
</x-guest-layout>

View File

@ -102,6 +102,8 @@ echo " 1) TLS: sudo certbot --apache -d ${DOMAIN}"
echo " (passt SSL-Zertifikat und leitet HTTP->HTTPS an; Pfade in sites-available werden ergaenzt)"
echo " 2) App: cd ${APP_ROOT} && cp .env.example .env && php artisan key:generate"
echo " Dann .env (APP_URL=https://${DOMAIN}, DB, MAIL) und:"
echo " Node.js >= 20.19 fuer Vite 7 (Debian-Paket oft zu alt). Beispiel NodeSource 20.x:"
echo " curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs"
echo " composer install --no-dev && npm ci && npm run build && php artisan migrate --force && php artisan storage:link"
echo " 3) Rechte: chown -R www-data:www-data ${APP_ROOT}/storage ${APP_ROOT}/bootstrap/cache"
echo ""