# Projektbeschreibung: VPlan PWA

Dieses Projekt ist eine "Progressive Web App" (PWA), die als mobile Anwendung zur Anzeige von Vertretungsplänen dient. Der Fokus liegt auf einer schnellen, offline-fähigen und nativen Benutzererfahrung, insbesondere für iOS-Geräte.

## Hauptfunktionen:

*   **Dashboard-Startseite:** Eine zentrale Startseite zeigt vier vom Benutzer definierbare "Favoriten"-Klassen für den schnellen Zugriff auf die relevantesten Pläne.
*   **Offline-First-Architektur:** Die App ist so konzipiert, dass sie nach der ersten Synchronisierung vollständig offline funktioniert. Alle Pläne und Funktionen sind ohne Internetverbindung verfügbar.
*   **Automatische Hintergrund-Aktualisierung:** Die App synchronisiert sich automatisch im Hintergrund, wenn sie geöffnet wird oder im Fokus ist. Dabei werden proaktiv die Pläne für die nächsten sechs Tage heruntergeladen, um die Offline-Verfügbarkeit sicherzustellen.
*   **Dynamische Klassenauswahl:** Ein Einstellungs-Fenster ermöglicht es dem Benutzer, eine Klasse aus einer Liste aller verfügbaren Klassen auszuwählen, um entweder einen Plan direkt anzusehen oder einen Favoriten zu speichern.
*   **Detailansicht mit Navigation:** Eine dedizierte Ansicht (`view.php`) zeigt den Plan für eine ausgewählte Klasse an und erlaubt die Navigation zwischen den Tagen (vorher, heute, weiter).
*   **Visuelles Theming:** Die App verfügt über ein helles und ein dunkles Design. Die Auswahl wird lokal gespeichert und die Systemleiste von iOS passt sich dynamisch an das gewählte Theme und den Online-/Offline-Status an.

## Technische Umsetzung:

*   **Frontend:** Die Anwendung basiert auf PHP-Dateien, die das Grundgerüst liefern, wobei die gesamte dynamische Logik, das UI-Management und die Interaktionen durch clientseitiges JavaScript gesteuert werden.
*   **Backend-API:** Eine einfache `api.php` stellt Endpunkte bereit, um Plandaten abzurufen und einen Hash-Wert aller Pläne für die Synchronisierungsprüfung zu liefern.
*   **Offline-Funktionalität:** Ein Service Worker (`sw.js`) ist das Herzstück der Offline-Fähigkeit. Er verwaltet den App-Cache, fängt Netzwerkanfragen ab und steuert die proaktive Zwischenspeicherung der Plandaten.


haha
