Mobile PWA für Baustellen-Doku — Foto-Upload, Sprachnotizen, Skizzen, offline-fähig. SvelteKit + Workbox.
Find a file
Eduard Wisch bd9580bd46
All checks were successful
Deploy baustelle-pwa / deploy (push) Successful in 1s
fix: Finalisieren-Button immer sichtbar + Sprachnotizen eigene Sektion
- Bericht-Detail: Button ist jetzt immer da, bei Final heißt er
  'PDF neu erzeugen'. Bei 0 Seiten disabled statt versteckt, mit
  Hinweis-Empty-State darüber.
- Auftrags-Detail: Audio-Files (webm/mp3/ogg/m4a/wav) werden aus
  'Weitere Dokumente' rausgefiltert und in eine eigene Sektion
  '🎙 Sprachnotizen' mit Play-Button je Eintrag gelegt. Tap auf ▶
  lädt die Datei als Blob (mit JWT) und setzt einen <audio>-Player
  inline ein.
- Service Worker v3.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
[deploy]
2026-04-09 00:43:27 +02:00
.forgejo/workflows fix: Deploy nach modules/baustelle/ statt baustelle/ 2026-04-08 22:56:42 +02:00
icons feat: Initiales Release Baustelle PWA v1.0.0 [deploy] 2026-04-08 22:50:01 +02:00
lib feat: Phase 4 — Bericht-Liste, Detail, Foto-Vollbild, Voice, Sketch 2026-04-09 00:31:39 +02:00
.gitignore feat: Initiales Release Baustelle PWA v1.0.0 [deploy] 2026-04-08 22:50:01 +02:00
app.css fix: Finalisieren-Button immer sichtbar + Sprachnotizen eigene Sektion 2026-04-09 00:43:27 +02:00
app.js fix: Finalisieren-Button immer sichtbar + Sprachnotizen eigene Sektion 2026-04-09 00:43:27 +02:00
index.html feat: Initiales Release Baustelle PWA v1.0.0 [deploy] 2026-04-08 22:50:01 +02:00
manifest.webmanifest feat: Initiales Release Baustelle PWA v1.0.0 [deploy] 2026-04-08 22:50:01 +02:00
README.md feat: Initiales Release Baustelle PWA v1.0.0 [deploy] 2026-04-08 22:50:01 +02:00
sw.js fix: Finalisieren-Button immer sichtbar + Sprachnotizen eigene Sektion 2026-04-09 00:43:27 +02:00

Baustelle PWA

Mobile Progressive Web App für die Baustellen-Doku — Foto-Upload, Sprachnotizen, Skizzen, offline-fähig. Spricht die REST-API des Dolibarr-Bericht-Moduls.

Stack

  • Vanilla JavaScript — kein Build, keine Framework-Abhängigkeit
  • Service Worker für App-Shell-Cache (Workbox-frei, eigene Implementierung)
  • IndexedDB für JWT-Storage und Offline-Upload-Queue
  • REST API des bericht-Dolibarr-Moduls unter /custom/bericht/api/

Features (MVP)

  • Login mit Dolibarr-Credentials → JWT (7 Tage gültig)
  • Auftragsliste mit Suche, gefiltert auf eigene Aufträge (Multi-User)
  • Auftragsdetail mit Kunde, Adresse, Telefon (Click-to-Call)
  • Foto-Aufnahme direkt aus der Kamera oder aus Galerie
  • Clientseitige Bild-Verkleinerung auf 2000px (JPEG q=0.85)
  • Offline-Queue: bei fehlgeschlagenem Upload landet das Foto in IndexedDB
  • Auto-Sync wenn wieder online (mit Status-Badge)
  • Service Worker für Offline-Start
  • Installierbar als PWA (Home-Screen-Icon)

Geplant (Phase 4)

  • Sprachnotizen via MediaRecorder
  • Touch-Skizzen-Editor für Bilder
  • Schnell-Bericht direkt in der PWA erstellen
  • Touch-Unterschrift abnehmen
  • PIN-Schutz / WebAuthn
  • Push-Notifications für neue Aufträge
  • Web Share Target API

Hosting

Wird bei jedem Push nach /srv/http/baustelle/ (lokal) bzw. /mnt/appdata/firma/dolibarr-202509/baustelle/ (prod) deployt. Apache-Alias unter https://awl.data-it-solution.de/baustelle/.

Verzeichnis-Struktur

baustelle-pwa/
├── index.html              App-Shell
├── manifest.webmanifest    PWA Manifest
├── sw.js                   Service Worker
├── app.js                  Hauptlogik (Routes, Views)
├── app.css                 Mobile-first Styling
├── lib/
│   ├── idb.js              IndexedDB-Wrapper
│   ├── api.js              REST-API-Client (JWT)
│   ├── offline.js          Offline-Queue + Sync
│   └── router.js           Hash-Router
└── icons/
    ├── icon-192.png
    └── icon-512.png

API

Die App spricht ausschließlich die Bericht-API:

  • POST /api/auth.php — Login mit Dolibarr-Credentials
  • GET /api/orders.php — Aufträge des Users
  • GET /api/orders.php?id=X — Auftrag-Detail
  • GET /api/orders.php?id=X&action=photos — Anhang-Liste
  • POST /api/orders.php?id=X&action=upload_photo — Foto-Upload
  • GET /api/reports.php?id=X — Bericht-Detail

Lizenz

GPL v3+