app update final
This commit is contained in:
parent
e06a717e4b
commit
b6500bebe1
6 changed files with 406 additions and 30 deletions
|
|
@ -1,7 +1,14 @@
|
|||
# Deployment — SLC-Workshop Companion (App)
|
||||
|
||||
**Auftrag für die Server-Claude / Ops:** Diese App **statisch** ausliefern. Kein
|
||||
Build-Schritt, kein Backend, keine Secrets, keine Datenbank.
|
||||
Build-Schritt, keine Secrets, keine Datenbank.
|
||||
|
||||
> **Neu (v0.10): kleiner Feedback-Endpoint.** Die App sammelt jetzt Workshop-Feedback
|
||||
> (Phasen + Prüfschritte) und **speichert es auf dem Server** zur späteren Auswertung.
|
||||
> Dafür braucht es **einen** schlanken POST-Sammelpunkt (Flat-File, **keine Datenbank**).
|
||||
> Referenz liegt bei: [`feedback.php`](feedback.php). Ist der Endpoint (noch) nicht
|
||||
> aktiv, geht **nichts verloren**: die App hält das Feedback lokal vor (Retry-Queue)
|
||||
> und der Header-Button **„⇩ Feedback"** exportiert es als Backup-Datei.
|
||||
|
||||
## Was das ist
|
||||
- Eine **statische Single-Page-PWA**. Alle Inhalte (Stationen, Quiz, Use-Cases)
|
||||
|
|
@ -11,6 +18,7 @@ Build-Schritt, kein Backend, keine Secrets, keine Datenbank.
|
|||
- `manifest.webmanifest` — PWA-Manifest
|
||||
- `sw.js` — Service Worker (Offline-Cache der App-Shell)
|
||||
- `icon.svg` — App-Icon
|
||||
- `feedback.php` — **optionaler** Feedback-Sammelpunkt (Flat-File, JSON Lines)
|
||||
|
||||
## Ziel
|
||||
Den Ordner `04_Tablet-Quiz/app/` als **statisches Web-Root** über den vorhandenen
|
||||
|
|
@ -47,11 +55,44 @@ slc.example.intern {
|
|||
}
|
||||
```
|
||||
|
||||
## Feedback-Endpoint (empfohlen — für die Auswertung)
|
||||
|
||||
Die App schickt jedes gespeicherte Feedback per `POST` als JSON an den im
|
||||
`<meta name="slc-feedback-endpoint">` hinterlegten Pfad (Default: `feedback.php`,
|
||||
gleiche Domain). Der Service Worker fasst POSTs nicht an — der Offline-Cache stört
|
||||
also nicht.
|
||||
|
||||
**Variante A — PHP (Referenz, einfachste Option).** `feedback.php` liegt im App-Ordner.
|
||||
Voraussetzung: `php-fpm` aktiv und das App-Verzeichnis für PHP freigegeben; das
|
||||
Datenverzeichnis `feedback-data/` muss vom Webserver-User beschreibbar sein.
|
||||
|
||||
```nginx
|
||||
# innerhalb des server{}-Blocks von oben:
|
||||
location ~ \.php$ {
|
||||
include fastcgi_params;
|
||||
fastcgi_pass unix:/run/php/php-fpm.sock; # Pfad anpassen
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
}
|
||||
```
|
||||
Daten landen in `feedback-data/feedback.jsonl` (eine JSON-Zeile pro Feedback) →
|
||||
später für die Auswertung einlesen/zu CSV konvertieren.
|
||||
|
||||
**Variante B — kein PHP verfügbar.** Endpoint auf einen beliebigen JSON-POST-Empfänger
|
||||
zeigen lassen (z. B. ein kleines Node-/Worker-Skript, das den Body an eine Datei
|
||||
anhängt) und im `<meta name="slc-feedback-endpoint">` dessen URL eintragen.
|
||||
|
||||
**Variante C — gar kein Server-Save.** Auch ohne Endpoint funktioniert alles: das
|
||||
Feedback bleibt in der Retry-Queue und kann über den Header-Button **„⇩ Feedback"**
|
||||
als JSON-Datei exportiert werden.
|
||||
|
||||
## Verifikation nach dem Deploy
|
||||
1. URL öffnen → Startbildschirm „SLC Companion · Schritt 1 · Action Card".
|
||||
1. URL öffnen → Startbildschirm „SLC Companion".
|
||||
2. DevTools → Application → **Service Workers**: `sw.js` ist *activated*.
|
||||
3. Flugmodus/Offline → Seite neu laden → App lädt weiterhin (Offline-Cache).
|
||||
4. Einen Durchlauf spielen → „Debrief" → **↓ Markdown / ↓ JSON** lädt eine Datei.
|
||||
4. Einen Major-Durchlauf spielen, an einem Gate Feedback eintragen → **„💾 Feedback
|
||||
speichern"**. Bei aktivem Endpoint erscheint kein Fehler in der Konsole; in
|
||||
`feedback-data/feedback.jsonl` taucht eine neue Zeile auf. Ohne Endpoint: Header
|
||||
**„⇩ Feedback"** lädt die Backup-Datei.
|
||||
|
||||
## Updates
|
||||
- Bei neuem Stand: `git pull`. Wenn sich App-Assets geändert haben, in `sw.js`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue