diff --git a/CLAUDE.md b/CLAUDE.md
deleted file mode 100644
index ea1bf69..0000000
--- a/CLAUDE.md
+++ /dev/null
@@ -1,516 +0,0 @@
-# CLAUDE.md — Familienplaner Web-App „Oikos"
-
-
-Du bist ein Senior Full-Stack-Entwickler mit Expertise in Self-Hosted Web-Apps, Progressive Web Apps, Datenbankdesign und UX/UI-Design. Du arbeitest methodisch in klar abgegrenzten Phasen und lieferst produktionsreifen, dokumentierten Code.
-
-
-
-Selbstgehostete Familienplaner-Web-App mit dem Namen "Oikos" für eine einzelne Familie (2–6 Personen). Kein App-Store, kein öffentlicher Zugang. Deployment via Docker auf einem privaten Linux-Server hinter Nginx Reverse Proxy mit SSL. Die App wird ausschließlich über den Browser auf Android, iOS und Desktop genutzt.
-
-
----
-
-## ARCHITEKTUR-ENTSCHEIDUNGEN
-
-
-### Backend
-- **Runtime:** Node.js (LTS)
-- **Framework:** Express.js (minimalistisch, nur Routing + Middleware)
-- **Datenbank:** SQLite mit **better-sqlite3** + **SQLCipher** (Verschlüsselung at rest)
-- **Auth:** Session-basiert mit **bcrypt** (Passwort-Hashing) + **express-session** mit SQLite-Session-Store
-- **API-Design:** RESTful JSON-API, alle Routen unter `/api/v1/`
-- **Kalender-Sync:** CalDAV-Client-Library für Google Calendar / Apple Calendar Integration
-- **Wetter-API:** OpenWeatherMap Free Tier (serverseitiger Proxy, API-Key nie im Frontend)
-
-### Frontend
-- **Kein Build-Step.** Kein React, kein Vue, kein Webpack, kein Bundler.
-- **Vanilla JavaScript** mit ES-Modulen (`type="module"`)
-- **Web Components** (Custom Elements) für wiederverwendbare UI-Komponenten
-- **CSS:** Custom Properties (Design Tokens), CSS Grid + Flexbox, Container Queries
-- **Interaktivität:** Alpine.js (optional, ~15kb, CDN-Einbindung, kein Build nötig) — NUR wenn DOM-Manipulation in Vanilla JS zu verbose wird
-- **Icons:** Lucide Icons (SVG, CDN)
-- **PWA:** Service Worker für Offline-Grundfunktionalität, Web App Manifest für „Add to Homescreen"
-
-### Deployment
-- **Docker Compose:** Ein Container für die App (Node.js), Volumes für SQLite-DB und Uploads
-- **Reverse Proxy:** Konfiguration für Nginx Proxy Manager (Beispiel-Config mitliefern)
-- **Umgebungsvariablen:** `.env`-Datei für alle Secrets (DB-Passwort, API-Keys, Session-Secret)
-
-
-
-1. **Single-Page-Application-Verhalten** ohne SPA-Framework: Client-seitiges Routing über History API mit einem leichtgewichtigen eigenen Router (~50 Zeilen).
-2. **API-First:** Jedes Modul hat eine saubere REST-API. Das Frontend ist ein reiner API-Consumer.
-3. **Mobile-First Design:** Alle Layouts zuerst für 375px Breite entwerfen, dann nach oben skalieren.
-4. **Offline-Tolerant:** Service Worker cached App-Shell. Daten werden bei Reconnect synchronisiert.
-5. **Keine Telemetrie, kein Tracking, keine externen Fonts.** Alles self-contained.
-
-
----
-
-## DATENMODELL
-
-
-Entwirf das Schema nach diesen Entitäten. Jede Tabelle bekommt `id` (INTEGER PRIMARY KEY), `created_at`, `updated_at` (ISO 8601 Timestamps).
-
-### Users
-- `username` (UNIQUE, NOT NULL)
-- `display_name`
-- `password_hash` (bcrypt)
-- `avatar_color` (HEX — für farbliche Zuordnung im UI)
-- `role` (ENUM: 'admin', 'member') — Admin kann Familienmitglieder verwalten
-
-### Tasks (Aufgaben-Modul)
-- `title` (NOT NULL)
-- `description` (Notizfeld, TEXT)
-- `category` (z.B. Haushalt, Schule, Einkauf, Reparatur, Sonstiges)
-- `priority` (ENUM: 'low', 'medium', 'high', 'urgent')
-- `status` (ENUM: 'open', 'in_progress', 'done')
-- `due_date` (DATE, nullable)
-- `due_time` (TIME, nullable)
-- `assigned_to` (FK → Users.id, nullable)
-- `created_by` (FK → Users.id)
-- `is_recurring` (BOOLEAN)
-- `recurrence_rule` (TEXT, nullable — iCal RRULE Format, z.B. `FREQ=WEEKLY;BYDAY=MO,TH`)
-- `parent_task_id` (FK → Tasks.id, nullable — für Teilaufgaben)
-
-### Shopping Lists (Einkaufslisten-Modul)
-- `name` (z.B. "Wocheneinkauf", "Baumarkt")
-
-### Shopping Items
-- `list_id` (FK → Shopping Lists.id)
-- `name` (NOT NULL)
-- `quantity` (TEXT, z.B. "500g", "2 Stück")
-- `category` (ENUM: 'Obst & Gemüse', 'Milchprodukte', 'Fleisch & Fisch', 'Backwaren', 'Getränke', 'Tiefkühl', 'Haushalt', 'Drogerie', 'Sonstiges')
-- `is_checked` (BOOLEAN)
-- `added_from_meal` (FK → Meals.id, nullable — Herkunft aus Essensplan)
-
-### Meals (Essensplan-Modul)
-- `date` (DATE, NOT NULL)
-- `meal_type` (ENUM: 'breakfast', 'lunch', 'dinner', 'snack')
-- `title` (NOT NULL, z.B. "Spaghetti Bolognese")
-- `notes` (TEXT, nullable)
-- `created_by` (FK → Users.id)
-
-### Meal Ingredients
-- `meal_id` (FK → Meals.id)
-- `name` (NOT NULL)
-- `quantity` (TEXT, nullable)
-- `on_shopping_list` (BOOLEAN — wurde bereits auf Einkaufsliste übernommen?)
-
-### Calendar Events (Kalender-Modul)
-- `title` (NOT NULL)
-- `description` (TEXT, nullable)
-- `start_datetime` (DATETIME, NOT NULL)
-- `end_datetime` (DATETIME, nullable)
-- `all_day` (BOOLEAN)
-- `location` (TEXT, nullable)
-- `color` (HEX — visuelle Kategorie)
-- `assigned_to` (FK → Users.id, nullable)
-- `created_by` (FK → Users.id)
-- `external_calendar_id` (TEXT, nullable — ID aus Google/Apple Calendar)
-- `external_source` (ENUM: 'local', 'google', 'apple')
-- `recurrence_rule` (TEXT, nullable — iCal RRULE)
-
-### Notes (Pinnwand-Modul)
-- `title` (nullable)
-- `content` (TEXT, NOT NULL)
-- `color` (HEX — Sticky-Note-Farbe)
-- `pinned` (BOOLEAN)
-- `created_by` (FK → Users.id)
-
-### Contacts (Wichtige Kontakte)
-- `name` (NOT NULL)
-- `category` (ENUM: 'Arzt', 'Schule/Kita', 'Behörde', 'Versicherung', 'Handwerker', 'Notfall', 'Sonstiges')
-- `phone` (TEXT, nullable)
-- `email` (TEXT, nullable)
-- `address` (TEXT, nullable)
-- `notes` (TEXT, nullable)
-
-### Budget Entries (Budget-Tracker)
-- `title` (NOT NULL)
-- `amount` (REAL, NOT NULL — positiv = Einnahme, negativ = Ausgabe)
-- `category` (ENUM: 'Lebensmittel', 'Miete', 'Versicherung', 'Mobilität', 'Freizeit', 'Kleidung', 'Gesundheit', 'Bildung', 'Sonstiges')
-- `date` (DATE, NOT NULL)
-- `is_recurring` (BOOLEAN)
-- `recurrence_rule` (TEXT, nullable)
-- `created_by` (FK → Users.id)
-
-
----
-
-## MODULE — FUNKTIONALE SPEZIFIKATIONEN
-
-
-### Dashboard (Startseite)
-**Route:** `/`
-
-**Layout:** Responsive Grid (1 Spalte mobil, 2 Spalten Tablet, 3 Spalten Desktop).
-
-**Widgets:**
-1. **Begrüßung** — "Guten [Morgen/Tag/Abend], [Name]" mit aktuellem Datum
-2. **Wetter-Widget** — Aktuelles Wetter + 3-Tage-Vorschau. Standort konfigurierbar in Settings. Daten vom Backend-Proxy (OpenWeatherMap). Refresh alle 30 Minuten. Fallback bei API-Fehler: Widget ausblenden, kein Error-Screen.
-3. **Anstehende Termine** — Nächste 3–5 Termine aus dem Kalender-Modul. Farbcodiert nach Person. Klick → Kalender-Modul.
-4. **Dringende Aufgaben** — Aufgaben mit `priority: urgent/high` UND `due_date` innerhalb der nächsten 48h. Sortiert nach Fälligkeit. Klick → Aufgaben-Modul.
-5. **Heutiges Essen** — Mahlzeiten für heute aus dem Essensplan. Zeigt Titel + Meal-Type. Klick → Essensplan-Modul.
-6. **Pinnwand-Vorschau** — Letzte 2–3 angepinnte Notizen. Klick → Pinnwand.
-7. **Schnellaktionen** — Floating Action Button (FAB) mit: + Aufgabe, + Termin, + Einkaufslisteneintrag, + Notiz.
-
-**Design-Vorgaben:**
-- Widgets als Cards mit `border-radius: 12px`, subtiler `box-shadow`
-- Farbschema: Neutraler Hintergrund (`#F5F5F7`), Cards weiß, Akzentfarbe konfigurierbar
-- Smooth Scroll, keine abrupten Übergänge
-- Skeleton-Loading-States während API-Calls (keine Spinner)
-
-
-
-### Aufgaben-Modul
-**Route:** `/tasks`
-
-**Ansichten:**
-1. **Listenansicht** (Standard) — Gruppiert nach Kategorie ODER Fälligkeit (umschaltbar). Filter: Person, Priorität, Status.
-2. **Kanban-Ansicht** — Spalten: Offen → In Bearbeitung → Erledigt. Drag & Drop zum Statuswechsel.
-
-**Funktionen:**
-- CRUD für Aufgaben + Teilaufgaben (beliebig verschachtelbar, max. 2 Ebenen)
-- Zuweisung an Familienmitglied (Avatar-Farbe als Indikator)
-- Dringlichkeitsstufen visuell durch Farbe/Icon codiert
-- Wiederkehrende Aufgaben: Bei Erledigung wird automatisch die nächste Instanz erstellt
-- Swipe-Gesten auf Mobil: Links = erledigt, Rechts = bearbeiten
-- Benachrichtigung (In-App-Badge) bei überfälligen Aufgaben
-
-**Teilaufgaben:**
-- Checkbox-Liste innerhalb einer Aufgabe
-- Fortschrittsbalken (z.B. 3/5 Teilaufgaben erledigt)
-- Eigene Notiz pro Teilaufgabe
-
-
-
-### Einkaufslisten-Modul
-**Route:** `/shopping`
-
-**Funktionen:**
-- Mehrere Listen parallel (z.B. "REWE", "dm", "Baumarkt")
-- Artikel mit Kategorie, Menge, Checkbox
-- Automatische Gruppierung nach Kategorie (Supermarkt-Gang-Logik)
-- **Essensplan-Integration:** Button "Zutaten auf Einkaufsliste" im Essensplan → Zutaten werden mit Quell-Referenz übernommen
-- Erledigte Artikel werden durchgestrichen, nach unten sortiert
-- "Liste leeren" entfernt nur abgehakte Artikel
-- Artikel-Vorschläge basierend auf bisherigen Einträgen (lokaler Autocomplete, kein externer Service)
-
-
-
-### Essensplan-Modul
-**Route:** `/meals`
-
-**Layout:** Wochenansicht (Mo–So), jeder Tag mit Slots für Frühstück/Mittag/Abend/Snack.
-
-**Funktionen:**
-- Mahlzeit eintragen: Titel + optionale Notizen + Zutatenliste
-- Zutaten pro Mahlzeit erfassen (Name + Menge)
-- **Button "→ Einkaufsliste":** Überträgt alle nicht-abgehakten Zutaten der aktuellen Woche auf eine wählbare Einkaufsliste. Bereits übertragene Zutaten werden markiert.
-- Wochennavigation (vor/zurück)
-- Mahlzeiten per Drag & Drop zwischen Tagen/Slots verschieben
-- Vergangene Mahlzeiten als Vorschläge beim Tippen (Autocomplete aus Historie)
-
-
-
-### Familienkalender-Modul
-**Route:** `/calendar`
-
-**Ansichten:**
-1. **Monatsansicht** (Standard) — Tage mit Punkt-Indikatoren für Termine
-2. **Wochenansicht** — Stundenraster mit Terminblöcken
-3. **Tagesansicht** — Detaillierte Timeline
-4. **Agenda-Ansicht** — Chronologische Liste aller kommenden Termine
-
-**Funktionen:**
-- CRUD für Termine (Titel, Beschreibung, Start/Ende, Ganztägig, Ort, Farbe, Zuweisung)
-- Farbcodierung pro Person (Avatar-Farbe aus User-Profil)
-- Wiederkehrende Termine (iCal RRULE)
-- **Kalender-Sync:**
- - **Google Calendar:** OAuth 2.0 → Google Calendar API v3. Zwei-Wege-Sync.
- - **Apple Calendar (iCloud):** CalDAV-Protokoll. Zwei-Wege-Sync.
- - Sync-Intervall konfigurierbar (Standard: alle 15 Minuten)
- - Externe Termine visuell unterscheidbar (dezenter Badge/Icon)
- - Konflikte: Externes Event gewinnt bei Änderungen, lokale Ergänzungen bleiben erhalten
-
-
-
-### Pinnwand / Notizen-Modul
-**Route:** `/notes`
-
-**Layout:** Masonry-Grid (Pinterest-Style) mit farbigen Sticky Notes.
-
-**Funktionen:**
-- CRUD für Notizen (Titel optional, Inhalt, Farbe wählbar)
-- Anpinnen (erscheint oben + auf Dashboard)
-- Ersteller wird angezeigt (Avatar-Farbe)
-- Markdown-Light im Inhalt (fett, kursiv, Listen — kein Full-Markdown-Parser nötig, regex-basiert)
-
-
-
-### Wichtige Kontakte
-**Route:** `/contacts`
-
-**Funktionen:**
-- CRUD für Kontakte mit Kategorie-Filter
-- Telefonnummer als `tel:`-Link (direkter Anruf auf Mobil)
-- E-Mail als `mailto:`-Link
-- Adresse als Link zu Google Maps / Apple Maps (User-Agent-Detection)
-- Suchfeld mit Echtzeit-Filter
-
-
-
-### Budget-Tracker
-**Route:** `/budget`
-
-**Ansichten:**
-1. **Monatsübersicht** — Einnahmen vs. Ausgaben, Saldo. Balkendiagramm nach Kategorie (Canvas-basiert, keine Chart-Library).
-2. **Transaktionsliste** — Chronologisch, filterbar nach Kategorie/Monat.
-
-**Funktionen:**
-- CRUD für Einträge (Titel, Betrag, Kategorie, Datum)
-- Wiederkehrende Buchungen (Miete, Gehalt, Abos)
-- Monatsvergleich (aktueller vs. Vormonat)
-- Export als CSV
-
-
----
-
-## AUTHENTIFIZIERUNG & SICHERHEIT
-
-
-1. **Login-Screen:** Username + Passwort. Kein öffentlicher Registrierungs-Endpoint. Neue User werden nur durch Admin erstellt.
-2. **Passwort-Hashing:** bcrypt mit Cost Factor 12.
-3. **Sessions:** `express-session` mit `httpOnly`, `secure`, `sameSite: strict` Cookies. Session-Timeout: 7 Tage.
-4. **CSRF-Protection:** Double Submit Cookie Pattern.
-5. **Rate Limiting:** 5 Login-Versuche pro Minute pro IP, danach 15min Sperre.
-6. **Datenbank-Verschlüsselung:** SQLCipher (AES-256-CBC). Schlüssel aus `.env`.
-7. **Input Validation:** Alle API-Inputs serverseitig validieren. Kein `eval()`, kein `innerHTML` mit User-Input.
-8. **Content Security Policy:** Strikte CSP-Header. Nur eigene Ressourcen + explizit erlaubte CDNs.
-9. **HTTPS-only:** App setzt `Strict-Transport-Security` Header. Redirect HTTP → HTTPS.
-
-
----
-
-## UI/UX DESIGN-SYSTEM
-
-
-### Farben (CSS Custom Properties)
-```css
-:root {
- /* Neutrals */
- --color-bg: #F5F5F7;
- --color-surface: #FFFFFF;
- --color-border: #E5E5EA;
- --color-text-primary: #1C1C1E;
- --color-text-secondary: #8E8E93;
-
- /* Akzent (konfigurierbar pro Installation) */
- --color-accent: #007AFF;
- --color-accent-light: #E3F2FF;
-
- /* Semantisch */
- --color-success: #34C759;
- --color-warning: #FF9500;
- --color-danger: #FF3B30;
- --color-info: #5AC8FA;
-
- /* Prioritäten */
- --color-priority-low: #8E8E93;
- --color-priority-medium: #FF9500;
- --color-priority-high: #FF6B35;
- --color-priority-urgent: #FF3B30;
-
- /* Schatten */
- --shadow-sm: 0 1px 3px rgba(0,0,0,0.08);
- --shadow-md: 0 4px 12px rgba(0,0,0,0.1);
- --shadow-lg: 0 8px 24px rgba(0,0,0,0.12);
-
- /* Radien */
- --radius-sm: 8px;
- --radius-md: 12px;
- --radius-lg: 16px;
-
- /* Typografie */
- --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
- --font-mono: 'SF Mono', 'Fira Code', monospace;
-}
-
-/* Dark Mode */
-@media (prefers-color-scheme: dark) {
- :root {
- --color-bg: #1C1C1E;
- --color-surface: #2C2C2E;
- --color-border: #3A3A3C;
- --color-text-primary: #F5F5F7;
- --color-text-secondary: #8E8E93;
- }
-}
-```
-
-### Typografie
-- Überschriften: System Font Stack, font-weight 600–700
-- Body: 16px (mobile), 15px (desktop), line-height 1.5
-- Small/Caption: 13px, `color: var(--color-text-secondary)`
-
-### Komponenten-Standards
-- **Cards:** `background: var(--color-surface)`, `border-radius: var(--radius-md)`, `box-shadow: var(--shadow-sm)`
-- **Buttons:** Primär = `var(--color-accent)` + weiße Schrift. Sekundär = Outline. Mindesthöhe 44px (Touch-Target).
-- **Inputs:** `border-radius: var(--radius-sm)`, `border: 1.5px solid var(--color-border)`, `padding: 12px 16px`
-- **Navigation:** Bottom Tab Bar auf Mobil (5 Tabs: Dashboard, Aufgaben, Kalender, Essen, Mehr). Sidebar auf Desktop.
-- **Übergänge:** `transition: all 0.2s ease` für interaktive Elemente. Seiten-Übergänge: Slide-Animation.
-- **Leer-Zustände:** Jede Liste/Ansicht hat einen illustrierten Empty State mit Call-to-Action.
-- **Touch:** Haptic Feedback wo möglich (`navigator.vibrate`). Pull-to-Refresh auf Listen.
-
-### Responsive Breakpoints
-- Mobil: < 768px (1 Spalte, Bottom Nav)
-- Tablet: 768px–1024px (2 Spalten, Bottom Nav)
-- Desktop: > 1024px (Sidebar + Content Area)
-
-
----
-
-## ENTWICKLUNGSPLAN — PHASENSTRUKTUR
-
-
-### Phase 1: Fundament
-1. Projektstruktur anlegen (Verzeichnisse, package.json, .env.example, .gitignore)
-2. Express-Server mit grundlegendem Routing-Setup
-3. SQLite + SQLCipher Datenbankverbindung + Schema-Migration
-4. Auth-System (Login, Session, User-CRUD für Admin)
-5. Frontend App-Shell (SPA-Router, Navigation, Layout-Gerüst)
-6. CSS Design-System (Custom Properties, Basis-Komponenten)
-7. Docker Compose + Nginx-Config
-
-### Phase 2: Kern-Module
-8. Dashboard (Layout + Widget-Slots, zunächst mit Platzhaltern)
-9. Aufgaben-Modul (CRUD + Listenansicht + Teilaufgaben)
-10. Einkaufslisten-Modul (CRUD + Kategorien + Checkbox-Logik)
-11. Essensplan-Modul (Wochenansicht + CRUD + Zutaten)
-12. Essensplan → Einkaufsliste Integration
-
-### Phase 3: Kalender & Erweiterungen
-13. Kalender-Modul (lokale Termine, Monats-/Wochen-/Tagesansicht)
-14. Google Calendar OAuth + Sync
-15. Apple Calendar CalDAV + Sync
-16. Pinnwand-Modul
-17. Kontakte-Modul
-18. Budget-Tracker
-
-### Phase 4: Polish & Integration
-19. Dashboard-Widgets mit Live-Daten verbinden
-20. Wetter-Widget (OpenWeatherMap-Integration)
-21. Wiederkehrende Aufgaben + Termine (RRULE-Engine)
-22. Kanban-Ansicht für Aufgaben
-23. Dark Mode
-24. PWA (Service Worker, Manifest, Offline-Shell)
-25. Drag & Drop (Aufgaben, Essensplan)
-26. Swipe-Gesten (Mobil)
-
-### Phase 5: Härtung
-27. Input-Validation + Sanitization auf allen Endpoints
-28. CSRF-Protection
-29. Rate Limiting
-30. CSP-Header + Security-Audit
-31. Error Handling (globaler Error Boundary im Frontend, strukturierte Fehler-API)
-32. Performance-Optimierung (Lazy Loading, Caching-Strategie)
-33. README.md mit Setup-Anleitung
-
-
----
-
-## ANWEISUNGEN FÜR CLAUDE CODE
-
-
-1. **Arbeite Phase für Phase.** Beginne keine neue Phase, bevor die aktuelle Phase vollständig funktioniert und getestet ist.
-2. **Jede Datei bekommt einen Header-Kommentar:** Zweck, Modul-Zugehörigkeit, Abhängigkeiten.
-3. **Kein toter Code.** Keine auskommentierten Blöcke, keine TODO-Kommentare ohne zugehörige GitHub-Issue-Referenz.
-4. **API-Endpoints:** Dokumentiere jeden Endpoint inline als JSDoc-Kommentar mit Route, Method, Body, Response-Schema.
-5. **Fehlerbehandlung:** Jeder API-Endpoint hat try/catch. Fehler werden als `{ error: string, code: number }` zurückgegeben.
-6. **Frontend-Komponenten:** Jede Web Component ist eine eigene Datei in `/public/components/`. Naming: `fb-[modul]-[name].js` (z.B. `fb-task-card.js`).
-7. **CSS:** Eine globale `styles.css` mit Design Tokens + Reset. Pro Modul eine eigene CSS-Datei. Kein Inline-Styling.
-8. **Dateistruktur:**
-```
-/oikos
-├── server/
-│ ├── index.js (Express Entry Point)
-│ ├── db.js (SQLite/SQLCipher Setup + Migrations)
-│ ├── auth.js (Auth Middleware + Routes)
-│ ├── routes/
-│ │ ├── tasks.js
-│ │ ├── shopping.js
-│ │ ├── meals.js
-│ │ ├── calendar.js
-│ │ ├── notes.js
-│ │ ├── contacts.js
-│ │ ├── budget.js
-│ │ └── weather.js
-│ └── services/
-│ ├── google-calendar.js
-│ ├── apple-calendar.js
-│ └── recurrence.js (RRULE-Parser/Generator)
-├── public/
-│ ├── index.html (App Shell)
-│ ├── router.js (Client-Side Router)
-│ ├── api.js (Fetch-Wrapper mit Auth + Error Handling)
-│ ├── styles/
-│ │ ├── tokens.css
-│ │ ├── reset.css
-│ │ ├── layout.css
-│ │ └── [modul].css
-│ ├── components/
-│ │ ├── fb-app-shell.js
-│ │ ├── fb-nav-bar.js
-│ │ ├── fb-dashboard.js
-│ │ ├── fb-task-*.js
-│ │ ├── fb-shopping-*.js
-│ │ ├── fb-meal-*.js
-│ │ ├── fb-calendar-*.js
-│ │ ├── fb-notes-*.js
-│ │ ├── fb-contacts-*.js
-│ │ └── fb-budget-*.js
-│ ├── pages/
-│ │ ├── dashboard.js
-│ │ ├── tasks.js
-│ │ ├── shopping.js
-│ │ ├── meals.js
-│ │ ├── calendar.js
-│ │ ├── notes.js
-│ │ ├── contacts.js
-│ │ ├── budget.js
-│ │ ├── settings.js
-│ │ └── login.js
-│ ├── sw.js (Service Worker)
-│ └── manifest.json
-├── docker-compose.yml
-├── Dockerfile
-├── nginx.conf.example
-├── .env.example
-├── package.json
-└── README.md
-```
-9. **Keine externen Abhängigkeiten im Frontend** außer: Lucide Icons (CDN), optional Alpine.js (CDN).
-10. **Backend-Dependencies** minimieren: `express`, `better-sqlite3`, `bcrypt`, `express-session`, `express-rate-limit`, `helmet`, `dotenv`. Für Kalender-Sync: `node-fetch`, `googleapis` (Google), `tsdav` (CalDAV).
-11. **Deutsche UI-Texte.** Alle Labels, Buttons, Meldungen auf Deutsch. Datumsformate: `DD.MM.YYYY`, Uhrzeiten: `HH:MM` (24h).
-12. **Bei Architektur-Unklarheiten:** Nicht raten. Frage nach. Dokumentiere die Entscheidung als Kommentar.
-
-
----
-
-## QUALITÄTSKRITERIEN
-
-
-- [ ] App startet mit `docker compose up` ohne manuelle Schritte außer `.env` konfigurieren
-- [ ] Login funktioniert, Session bleibt über Browser-Neustart erhalten
-- [ ] Alle 8 Module (Dashboard, Aufgaben, Einkauf, Essen, Kalender, Pinnwand, Kontakte, Budget) sind CRUD-funktional
-- [ ] Essensplan-Zutaten können auf Einkaufsliste übernommen werden
-- [ ] Dashboard zeigt Live-Daten aus allen relevanten Modulen
-- [ ] Wetter-Widget zeigt aktuelle Daten
-- [ ] App ist auf iPhone SE (375px) voll bedienbar
-- [ ] Dark Mode funktioniert systemgesteuert
-- [ ] Datenbank ist verschlüsselt (SQLCipher)
-- [ ] Kein API-Endpoint ist ohne Auth erreichbar (außer Login)
-- [ ] Lighthouse Mobile Score: Performance > 85, Accessibility > 90, Best Practices > 90
-- [ ] Google Calendar Sync funktioniert bidirektional
-