diff --git a/RUN.md b/RUN.md index 05501ba..a00cc13 100644 --- a/RUN.md +++ b/RUN.md @@ -56,6 +56,37 @@ Test-Suite (smoke): flutter test ``` +## Web-Variante (gleiche Codebase, ein Befehl) + +```bash +cd app +./serve-web.sh # baut + serviert auf http://127.0.0.1:8080 +``` + +Funktioniert im Demo-/Mock-Modus 1:1. Im Live-Hub-Modus +braucht die Web-Variante zusätzlich einen gRPC-Web-Branch in +`chain_client_sdk_dart` (Phase 1, dokumentiert in +docs/architecture/protocol-surfaces.md des Ch∆In-Repos). + +Produktion: build/web/ auf einen statischen Host kippen +(F∆I-Pattern: Hetzner-CX + Caddy mit Auto-HTTPS, analog +`fai_chain` Release-Host). DNS: `reclaim.flemming.ai`. + +## Hub-Smoke-Test (chain serve läuft separat) + +Wenn ein `chain serve` lokal auf 127.0.0.1:50051 läuft (vom +fai_chain-Setup): + +1. App starten, „Hub"-Reiter öffnen +2. Host/Port stehen schon, „Hub beim Start nutzen" anschalten +3. „Verbindung testen" → erwartet `healthy=true` +4. Falls capabilities installiert sind: „Installierte + Capabilities" listet sie auf +5. Nach `chain run flows/durchstich-gewo-14.yaml` und einem + `system.approval`-Approve wird der Heatmap-Tab live gefüllt + (HubRepository.list liest `flow.completed`-Events aus dem + Audit-Log und übersetzt sie in Evaluation-Objekte) + ## Modul-Tests (lokal grün ohne Hub) ```bash diff --git a/app/serve-web.sh b/app/serve-web.sh new file mode 100755 index 0000000..1e783cd --- /dev/null +++ b/app/serve-web.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# Local web preview for Recl∆Im. +# +# Builds the release web bundle (~16 s) and serves it on +# http://127.0.0.1:8080 via python3's stdlib http.server so an +# AG-member can poke the demo from a browser without the +# Flutter dev tooling being installed on the reviewer's machine. +# +# Production path (NOT done by this script): +# +# 1. Copy build/web/ to a static host. Hetzner CX-Server + +# Caddy with auto-HTTPS is the existing F∆I pattern (see +# fai_chain release-host). +# 2. Set the CSP, HSTS, and frame-ancestors headers Caddy +# already templates per F∆I deployment. +# 3. Add reclaim.flemming.ai DNS A-record to the F∆I IP. +# +# For local dev: this script is enough. + +set -euo pipefail + +cd "$(dirname "$0")" + +PORT="${PORT:-8080}" +HOST="${HOST:-127.0.0.1}" + +echo "[1/2] flutter build web --release" +flutter build web --release + +echo "[2/2] serving build/web/ on http://$HOST:$PORT" +echo " Ctrl+C to stop." +echo + +cd build/web +exec python3 -m http.server "$PORT" --bind "$HOST"