feat(ui): (a) Backends + Routing-Rules + Settings pages + Sidebar

CRUD-Pages analog Domains:
* Backends: AntD Table + Modal-Form mit name, scheme, address, port,
  health_check_path, active. TanStack-Query gegen /api/v1/backends.
* RoutingRules: Table mit Domain-Name- und Backend-Label-Resolution,
  Modal mit Select-Pickern für Domain + Backend, Path-Prefix,
  Priority, Active. Drei parallele Queries (rules, domains, backends)
  liefern die Listen.
* Settings: read-only Descriptions-Cards mit /system/health und
  /setup/status. Editable Werte folgen später.

Sidebar erweitert um Backends, Routing-Rules, Settings (mit AntD-
Icons). i18n de/en für alle drei neuen Seiten.

bun run build + npx tsc -b strict (0 errors). Live-Smoke gegen API:
SPA-Routes /backends, /routing-rules, /settings antworten 200 mit
index.html (NoRoute fallback wirkt).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Debian
2026-05-09 11:23:00 +02:00
parent b507d2a7d5
commit 0b45b23d45
7 changed files with 491 additions and 3 deletions

View File

@@ -55,6 +55,45 @@
"delete": "Löschen",
"deleteConfirm": "Domain {{name}} wirklich löschen?"
},
"backends": {
"title": "Backends",
"addBackend": "Backend hinzufügen",
"editBackend": "Backend bearbeiten",
"name": "Name",
"scheme": "Schema",
"address": "Adresse",
"port": "Port",
"target": "Ziel",
"healthCheck": "Health-Check-Pfad",
"active": "Aktiv",
"actions": "Aktionen",
"deleteConfirm": "Backend {{name}} wirklich löschen?"
},
"routing": {
"title": "Routing-Regeln",
"addRule": "Regel hinzufügen",
"editRule": "Regel bearbeiten",
"domain": "Domain",
"pathPrefix": "Pfad-Präfix",
"backend": "Backend",
"priority": "Priorität",
"active": "Aktiv",
"actions": "Aktionen",
"selectDomain": "Domain wählen",
"selectBackend": "Backend wählen",
"deleteConfirm": "Diese Routing-Regel wirklich löschen?"
},
"settings": {
"title": "Einstellungen",
"intro": "System-Information und Setup-Status. Bearbeitbare Werte folgen in einem späteren Release.",
"systemInfo": "System",
"version": "Version",
"status": "Status",
"setupInfo": "Setup",
"adminEmail": "Admin-E-Mail",
"fqdn": "FQDN",
"setupCompleted": "Setup abgeschlossen"
},
"update": {
"available": "Update verfügbar: {{pkg}} {{installed}} → {{available}}",
"applyNow": "Jetzt aktualisieren",
@@ -67,6 +106,8 @@
"save": "Speichern",
"cancel": "Abbrechen",
"loading": "Lädt …",
"error": "Fehler"
"error": "Fehler",
"edit": "Bearbeiten",
"delete": "Löschen"
}
}

View File

@@ -55,6 +55,45 @@
"delete": "Delete",
"deleteConfirm": "Really delete domain {{name}}?"
},
"backends": {
"title": "Backends",
"addBackend": "Add backend",
"editBackend": "Edit backend",
"name": "Name",
"scheme": "Scheme",
"address": "Address",
"port": "Port",
"target": "Target",
"healthCheck": "Health check path",
"active": "Active",
"actions": "Actions",
"deleteConfirm": "Really delete backend {{name}}?"
},
"routing": {
"title": "Routing rules",
"addRule": "Add rule",
"editRule": "Edit rule",
"domain": "Domain",
"pathPrefix": "Path prefix",
"backend": "Backend",
"priority": "Priority",
"active": "Active",
"actions": "Actions",
"selectDomain": "Select domain",
"selectBackend": "Select backend",
"deleteConfirm": "Really delete this routing rule?"
},
"settings": {
"title": "Settings",
"intro": "System information and setup status. Editable values come in a later release.",
"systemInfo": "System",
"version": "Version",
"status": "Status",
"setupInfo": "Setup",
"adminEmail": "Admin email",
"fqdn": "FQDN",
"setupCompleted": "Setup completed"
},
"update": {
"available": "Update available: {{pkg}} {{installed}} → {{available}}",
"applyNow": "Apply now",
@@ -67,6 +106,8 @@
"save": "Save",
"cancel": "Cancel",
"loading": "Loading …",
"error": "Error"
"error": "Error",
"edit": "Edit",
"delete": "Delete"
}
}