Commit 7: PWA (Manifest, Service Worker, Icons, Offline-Grundfunktion)

This commit is contained in:
2026-07-19 03:13:55 +02:00
parent 63af09f43a
commit 6a7eb3dfe5
4 changed files with 2844 additions and 9 deletions

View File

@@ -77,11 +77,13 @@ Dieser erste Commit liefert ein lauffähiges Grundgerüst:
Drag & Drop), Scanner (FritzBox-Trigger + Sammel-Scan), Logs (Scan-Historie),
Einstellungen (Live-Systeminfo + Theme), Plugins (ehrlicher Hinweis auf
zukünftigen Commit)
- ✅ PWA: installierbar (Manifest + Icons für Android/iOS/Desktop), Service
Worker mit App-Shell-Precaching, `/api/*` läuft offline über den letzten
Cache-Stand (NetworkFirst, 3s-Timeout)
Noch **nicht** enthalten (folgt in den nächsten Commits):
- Plugin-System (Scanner registrieren, Geräte importieren, Menüs erweitern, Icons)
- PWA-Manifest / Offline-Grundfunktion
- shadcn/ui, React Hook Form (aktuell einfache kontrollierte Formulare)
### Umgebungsvariablen (.env)

View File

@@ -25,6 +25,7 @@
"postcss": "^8.4.41",
"tailwindcss": "^3.4.10",
"typescript": "^5.5.4",
"vite": "^5.4.1"
"vite": "^5.4.1",
"vite-plugin-pwa": "^0.20.5"
}
}

View File

@@ -72,9 +72,25 @@ Grundgerüst aus Commit 1.
> Verifikation stützt sich auf erfolgreichen TypeScript-/Vite-Build und
> Codeprüfung.
## Commit 7 — PWA
## Commit 7 — PWA (erledigt)
- Manifest, Service Worker, Offline-Grundfunktion, Installierbarkeit
- `vite-plugin-pwa` mit generiertem Manifest (`manifest.webmanifest`) und
Service Worker (Workbox, `generateSW`-Modus)
- Echte Icons (192/512, jeweils normal + maskable, `apple-touch-icon.png`,
`favicon.svg`) unter `apps/frontend/public/`
- App-Shell wird precached; `/api/*` läuft über `NetworkFirst` mit 3s-Timeout
und Cache-Fallback Suche funktioniert damit auch offline mit dem zuletzt
geladenen Datenstand
- `nginx.conf`: `sw.js`/`manifest.webmanifest` explizit von der 7-Tage-Cache-Regel
ausgenommen (sonst kommen Updates bei installierten Nutzern nie an), korrekter
MIME-Type für das Manifest gesetzt
> Verifiziert: Manifest gegen Installierbarkeits-Anforderungen geprüft (512er-Icon,
> maskable Icon, alle Pflichtfelder vorhanden), alle Assets über einen echten
> HTTP-Server abgerufen (200 OK, korrekte Content-Types), generierter Service-Worker-
> Code inspiziert (Precache-Liste + NetworkFirst-Route bestätigt), vollständige
> Docker-Build-Simulation durchlaufen. Die tatsächliche "Zum Homescreen hinzufügen"-
> Installation konnte mangels Browser in dieser Umgebung nicht getestet werden.
## Commit 8 — Plugin-System

2826
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff