Beschreibung der Änderung
This commit is contained in:
parent
b2a518e349
commit
ec01066ec6
48
.cursor/rules/einkaufsliste.mdc
Normal file
48
.cursor/rules/einkaufsliste.mdc
Normal 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
BIN
.gitignore
vendored
Binary file not shown.
@ -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"
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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 ""
|
||||
|
||||
Loading…
Reference in New Issue
Block a user