Frontend Facade
Frontend Facade
Abschnitt betitelt „Frontend Facade“Liefere die Wippy-Web-UI aus einer reinen Backend-App mit wippy/facade aus. Die Facade
ist eine schlanke statische Hülle: Sie lädt das Frontend-Bundle des Wippy Web Host von einem
CDN und konfiguriert es über einen JSON-Endpunkt, den deine App bereitstellt — ohne
Frontend-Build-Schritt in deinem Projekt. Branding, Theming und Feature-Flags werden allesamt
über Dependency-Parameter gesteuert.
Was du bauen wirst
Abschnitt betitelt „Was du bauen wirst“Eine Backend-App, die die Wippy-UI ausliefert:
- Einen HTTP-Server und einen öffentlichen Router.
- Die Abhängigkeit
wippy/facade, verdrahtet mit diesem Server und Router, mit eigenem Branding. - Eine laufende Hülle unter
/und ihre Konfiguration unter/api/public/facade/config.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“-
Ein Wippy-Projekt (klone app-template oder führe
wippy initaus). -
Die Facade ist installiert:
Terminal-Fenster wippy add wippy/facadewippy install
Wie es funktioniert
Abschnitt betitelt „Wie es funktioniert“index.htmlwird als statische Datei von deinem HTTP-Server ausgeliefert.- Beim Laden ruft sie
GET /api/public/facade/configab. - Sie prüft
localStorageauf ein Auth-Token und leitet zulogin_pathum, falls keines vorhanden ist. - Sie importiert das Web-Host-Bundle vom CDN (
facade_url + '/module.js') und ruftinitWippyApp(...)mit der Konfiguration auf.
Deine App liefert nur die Hülle und die Konfiguration aus; die UI selbst kommt vom CDN.
Abhängigkeiten
Abschnitt betitelt „Abhängigkeiten“Die Facade benötigt zwei Dinge von deiner App: einen http.service, aus dem Dateien
ausgeliefert werden, und den http.router, auf den ihr Konfigurations-Endpunkt eingehängt
wird. Alles andere ist optionales Branding mit sinnvollen Voreinstellungen.
version: "1.0"namespace: app
entries: - name: gateway kind: http.service addr: :8087 lifecycle: auto_start: true
- name: api.public kind: http.router meta: server: app:gateway prefix: /api/public
- name: facade kind: ns.dependency component: wippy/facade parameters: - name: server value: app:gateway - name: router value: app:api.public - name: app_title value: Verify AppDie mitgelieferte index.html ruft /api/public/facade/config ab, daher muss der Präfix
des öffentlichen Routers /api/public sein, damit die Standard-Hülle ihre Konfiguration findet.
Ausführen
Abschnitt betitelt „Ausführen“wippy runDie Hülle wird im Server-Root ausgeliefert, und der Konfigurations-Endpunkt gibt die Laufzeitkonfiguration zurück:
curl http://localhost:8087/api/public/facade/config{ "mode": "compat", "facade_url": "https://web-host.wippy.ai/webcomponents-1.0.32", "iframe_origin": "https://web-host.wippy.ai", "iframe_url": "https://web-host.wippy.ai/webcomponents-1.0.32/iframe.html?waitForCustomConfig", "module_file": "/module.js", "login_path": "/login.html", "env": { "APP_API_URL": "", "APP_AUTH_API_URL": "", "APP_WEBSOCKET_URL": "" }, "theming": { "host": { "i18n": { "app": { "title": "Verify App", "icon": "wippy:logo", "appName": "Wippy AI" } } } }, "hostConfig": { "showAdmin": true, "allowSelectModel": false, "hideNavBar": false, "session": { "type": "non-persistent" }, "history": "hash" }}Beachte, wie der Parameter app_title als theming.host.i18n.app.title erscheint.
Konfiguration
Abschnitt betitelt „Konfiguration“Parameter werden als Dependency-parameters übergeben (Werte sind Strings; JSON-Werte sind
JSON-kodierte Strings). Häufige sind:
| Parameter | Zweck |
|---|---|
server / router | (erforderlich) HTTP-Server und öffentlicher Router |
app_title / app_name / app_icon | Branding (Icon ist eine Iconify-Referenz) |
show_admin / hide_nav_bar | Feature-Flags ("true" / "false") |
login_path | Wohin die Hülle umleitet, wenn kein Auth-Token vorhanden ist |
session_type | non-persistent oder cookie |
history_mode | hash oder browser |
css_variables | JSON-String mit benutzerdefinierten CSS-Eigenschaften, z. B. '{"--p-primary":"#6366f1"}' |
fe_facade_url | CDN-Bundle-URL (pro Facade-Release fixiert; Standard belassen, sofern nicht überschrieben) |
Zwei Werte werden zur Laufzeit aus der Umgebungsvariable PUBLIC_API_URL abgeleitet statt
aus Parametern: die API-Basis-URL und die WebSocket-URL (http→ws, https→wss). Ist
sie nicht gesetzt, fällt der Browser auf window.location.origin zurück.
Hinweise
Abschnitt betitelt „Hinweise“- Die Facade stellt keine Authentifizierung bereit. Sie erwartet einen Auth-Flow, der ein
Token in
localStorageschreibt; ohne ein solches leitet sie zulogin_pathum. Kombiniere sie mituserspace/usersoder deiner eigenen Authentifizierung. - Das UI-Bundle lädt vom CDN (
fe_facade_url), daher benötigt die laufende App ausgehenden Netzwerkzugriff, um zu rendern.
Nächste Schritte
Abschnitt betitelt „Nächste Schritte“- Hello World — das minimale Projekt-Layout
- Authentifizierung — den Login-Flow verdrahten, den die Hülle erwartet
- HTTP-Endpunkte — Router, statische Dateien und Handler