MUC4TAXI Frontend & PWA
Dieses Dokument fasst zusammen, wie die aktuelle Web-App gebaut, getestet und deployed wird – inklusive der Migration auf /api/v3 und dem Legacy-Update-Flow.
Überblick
- Framework: Svelte + Vite
- PWA: Workbox (Inject Manifest) +
virtual:pwa-register - API-Basis: standardmäßig
/api/v3(konfigurierbar überVITE_API_PREFIX) - Legacy-Erkennung: Service Worker wertet
426-Antworten bzw.X-Legacy-Client-Header aus und zeigtlegacy-update.htmlan.
Voraussetzungen
- Node.js ≥ 18 (lokal verwendet: 20.x)
- PNPM/NPM/Yarn – wir nutzen NPM-Skripte
- Zugriff auf die passenden
.env*-Dateien
Setup & Entwicklung
cd frontend
npm install
# Lokale Entwicklung (verwendet .env)
npm run dev
# Tests (Vitest)
npm run test -- --run
Umgebungen & ENV-Dateien
| Datei | Zweck | Beispielwerte |
|---|---|---|
.env | lokale Entwicklung | VITE_BASE_URL_BACK=http://localhost:5500, VITE_API_PREFIX=/api/v3 |
.env.coding60 | Staging/Preview | VITE_BASE_URL_BACK=https://coding60.plus, VITE_API_PREFIX=/api/v3 |
.env.muc4taxi | Produktion | VITE_BASE_URL_BACK=https://muc4taxi.eu, VITE_API_PREFIX=/api/v3 |
Wichtig: Die VITE_API_PREFIX-Variable muss immer vorhanden sein, damit Build-Artefakte garantiert /api/v3 ansprechen.
PWA-Details
- Registrierung erfolgt in
src/main.jsüberregisterSW({ immediate: true }). - Der Service Worker (
src/service-worker.js) nutzt Workbox und wird übervite-plugin-pwaeingebunden. - Legacy-Erkennung:
- Server antwortet mit
426+X-Legacy-Client. - Runtime-Handler setzt
LEGACY_REQUIRED. - Navigations-Requests werden zu
/legacy-update.htmlumgeleitet. App.sveltezeigt eine Blocking-Meldung für betroffene Benutzer.
- Server antwortet mit
Build & Deployment
# Standard-Build
npm run build
# Ziel-spezifisch (setzt NODE_ENV=production)
npm run build:coding60
npm run build:muc4taxi
Checkliste vor dem Deployment:
- Passende
.env.*-Datei vorhanden und vom CI/CD-Job übernommen. - Keine alten Service-Worker-Artefakte (
public/serviceWorker.jsaus Scripts) deployen. - Nach dem Release einmal
npm run test -- --run(Vitest) sowie einen manuellen Smoke-Test durchführen:- Aktuelles Bundle lädt Daten über
/api/v3. - Öffnen eines alten Bundles (falls möglich) → Update-Seite erscheint.
- Aktuelles Bundle lädt Daten über
Legacy-Flow testen
- Server:
curl -i https://<host>/api/health→ 426 +X-Legacy-Client+X-Legacy-Count. - Frontend: Lokales Build ohne
VITE_API_PREFIXerzeugen oder die Network-Tab-Anfragen auf/apiumschreiben. Erwartung: Service Worker zeigt Update-Seite, App blockiert mit Hinweis. - Modern Build: Alles läuft über
/api/v3, keine Legacy-Hinweise im Log.
Weitere Aufgaben
- README (dieses Dokument) bei zukünftigen Änderungen am Update-Flow mitführen.
- Support- bzw. Onboarding-Mail-Templates sollen den Hinweis enthalten, dass Legacy-Clients automatisch auf eine Update-Seite weitergeleitet werden.
Mit dieser Dokumentation sollte ein Handover für das Frontend + PWA sowie den /api/v3-Umstieg reibungslos möglich sein.