11 Commits

Author SHA1 Message Date
Michael
dfe4462e10 UI/UX, Design und Accessibility Optimierung
- Farbkontrast: text-muted #64748b → #475569 (WCAG 2.2 AA konform)
- Touch Targets: Kalender-Tage 44px → 48px, Checkbox 20px → 24px
- Formulare: py-3 → py-3.5, aria-required, aria-describedby für Fehler
- Fehler: role="alert" + bg-danger/5 Highlight auf allen Fehlermeldungen
- Modal: role="dialog", aria-modal, Focus Trap, Escape-Taste, Safe Area
- ProgressBar: aria-valuenow/min/max, grössere Labels (10px → 12px)
- Kalender: gap-2, bessere ARIA Labels mit Status, grössere Legende
- Skip Navigation: "Zum Hauptinhalt springen" Link in Layout
- prefers-reduced-motion: alle Animationen deaktiviert
- Placeholder-Kontrast verbessert
- Footer: grössere Schrift, Hover-Underline auf Links
- Header: Focus Ring auf Zurück-Button, aria-hidden auf SVGs
- Error-Seiten: Gemeindeamt-Telefonnummer als Kontakt
- Loading States: "Daten werden geladen..." Text
- CAPTCHA: "Sicherheitsüberprüfung" Label
- Wassermenge: "1 m³ = 1.000 Liter" Hilfetext

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 20:23:27 +01:00
Michael
4993fbd886 Storno-Link in Bestätigungsmail + Erinnerung nächstes Jahr
- Bestätigungsmail enthält roten Storno-Button mit sicherem Token
- /storno?token=XXX Seite zeigt Buchungsdetails + Stornierung
- Storno-Bestätigungsmail mit Neu-Buchen-Button
- Checkbox im Buchungsformular für Erinnerung nächstes Jahr
- Neue DB-Felder: storno_token (unique), erinnerung_naechstes_jahr

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 20:10:13 +01:00
Michael
7bbfc49212 Einstellungen in logischer Reihenfolge sortieren
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 20:33:51 +01:00
Michael
081dab4865 Technische Schlüsselnamen aus Einstellungen entfernen
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 20:26:35 +01:00
Michael
bb20461cc2 Kalender-Warnschwelle konfigurierbar + Saison-Datepicker
- kalender_warnung_prozent Setting: Admin kann Grün→Orange-Schwelle einstellen
- Verfügbarkeits-API liefert Warnschwelle mit, BookingCalendar nutzt dynamischen Wert
- Saison-Start/Ende als Date-Picker statt Textfeld im Admin-Dashboard

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 20:24:44 +01:00
Michael
ccc6a9b4ec Pool-Buchung auf m³-Kapazität umstellen
- Neuer 4-Schritt-Wizard: Wasser → Termin → Daten → Fertig
- Kapazität basiert auf m³/Tag statt Anzahl Buchungen
- Brunnen-Buchungen belasten keine m³-Kapazität
- Ortswasserleitung: m³ werden gegen Tageslimit geprüft
- BookingCalendar zeigt m³-basierte Verfügbarkeit
- Neues Setting max_m3_per_day (default 150)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 20:10:33 +01:00
Michael
26ef0ec05f Add Bedienungsanleitung (user guide) and link from admin dashboard
- Static HTML guide at /bedienungsanleitung.html with DATACREW logo
- Fixed image paths and anchor links for standalone hosting
- Added "Hilfe" link in admin bar (opens guide in new tab)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 00:49:32 +01:00
Michael
644da5b11f Add edit/delete functionality for Wasserzähler entries in admin dashboard
Admins can now edit all fields of a Wasserzähler entry (name, address,
customer number, meter number, readings) and delete entries with a
confirmation dialog.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 00:48:33 +01:00
Michael
bb97c4b1fa Wasserzähler QR-Code System + Serienbrief + Admin Import
- Wasserzähler-Stammdaten Import (Drag & Drop Excel/CSV)
- QR-Code Druckseite mit Browser-Vorschau
- QR-Code Excel Download (ExcelJS, eingebettete QR-PNGs)
- Serienbrief wie Vorlage wasserablesung.pdf
  - HTML-Vorschau (max 20) + PDF Download (PDFKit, 1000+ skalierbar)
  - Antwortkarte mit QR-Code, Briefmarke, Zählerdaten
- Bürgerseite: nur Kundennr./Zählernr./Stand (Datenschutz)
- Kundennummer + letzter_stand + letzte_ablesung zum Schema
- Bürgermeister: Patrick Krutzler
- CAPTCHA verify API Route

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 00:20:44 +01:00
Michael
39eac91568 GemeindePortal: Full implementation with Apple HIG redesign
- Landing page with large CTAs and seasonal banner
- Multi-step Pool booking wizard with progress bar
- Animated confirmation modals with calendar save
- Wasserzähler flow with large number input and live consumption
- Admin dashboard with today-stats, CSV export, click-to-call
- BookingCalendar with skeleton loading and 44px touch targets
- Cloudflare Turnstile CAPTCHA on pool form
- Supabase auth, RLS, and API routes
- Inline form validation, sticky submit buttons
- Mobile-first responsive design throughout

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 21:35:32 +01:00
Michael
32411cb27f Initial commit from Create Next App 2026-03-02 20:16:18 +01:00