Skip to main content

Cockpit steuert Frontends

Zielgruppe: Entwickler, IT, Cursor/Claude/MCP — und alle, die in einem neuen Chat oder Projekt das Architekturmodell schnell verstehen wollen, ohne es jedes Mal neu erklären zu müssen.

Kurz: Das Dashboard (cockpitOS) ist die Source of Truth — Daten und Optionen/Konfig. Das Frontend ist künftig ein v0-Projekt im GitHub-Repo (Website, später Kiosk/Companion). Es liest über öffentliche APIs; schreiben tun nur Redaktion (Dashboard) oder Agenten (MCP/AgencyOS).

Bestand — kein neuer Weg

WordPress, die Center-Website-App (apps/center-website) und die Signage-App (apps/digital-signage) sind veraltet. Bestehende Center laufen weiter, bis IT sie nach v0 zieht. Keine neuen Go-Lives auf diesen drei Frontends.

Für Cursor / neue Chats

Im Repo: .cursor/context.md (Typ SMG + Verweis hierher). Ergänzende Regel: .cursor/rules/cockpit-steuert-frontends.mdc. Code-Wahrheit: apps/dashboard/src/lib/integration/v0-integration-contract.ts.


Was / Warum

WasLayout und UX = v0 / GitHub-Repo. Inhalte, Sichtbarkeit, Optionen = Cockpit (Webseiten-Reiter und Module).
WarumKeine zweite Wahrheit pro Kanal. Ein Frontend-Stack statt WordPress + SPA + Signage-App. Migration tauscht nur die Oberfläche, nicht die Daten.
Wer betroffenRedaktion (pflegt Reiter), Besucher (sehen Kanäle), Dev/IT (API + MCP), Agenten (MCP/AgencyOS).

Konzeptionell breiter: Plattform-Überblick · Migration konkret: Cockpit → v0 Migration.


Das Modell in drei Schichten

  1. Steuer-UI — Webseiten-Reiter (website-config-tabs.ts) und passende Dashboard-Module (Shops, News, Social, …).
  2. Speicher — feste Pfade in PostgreSQL (JSON-Felder, Entitäten-Tabellen).
  3. Ausgänge — Frontends rufen Leserouten auf; Schreibzugriffe gehen nie über anonyme Public-APIs.

Goldene Regel (Lesen vs. Schreiben)

cockpitOS = Source of Truth. Öffentliche Websites und v0-Apps lesen nur öffentliche GET-Routen. Schreiben nur über Dashboard oder MCP/AgencyOS mit Integrations-API-Key.

AktionWoTypische Routen / Tools
Lesenv0 (serverseitig); Bestand: SPA / Signage / WPGET …/by-slug/{slug}GET …/public-visitor-surface, page-content, homepage-tiles, Pfade aus data.apiHints
SchreibenRedaktion, MCP, AgencyOScockpit_website_config_schemacockpit_get_center_website_configcockpit_update_center_website_config / cockpit_page_content / cockpit_content_push
VerbotenÖffentliches Frontend, Browser ohne AuthGET …/website-config, AgencyOS-URLs ohne Bearer

Vollständiger Vertrag: Public Center-Website API · MCP: AgencyOS Integration · Redaktion: v0 + Cockpit (So geht's).

Die gleiche Regel steht maschinenlesbar in jeder public-visitor-surface-Antwort unter data.v0Integration (gebaut aus v0-integration-contract.ts).


Vier Speicher-Körbe

KorbInhaltCockpit-UIFrontend liest
1. Template / Website-ConfigtemplateContent, Hero, Footer, Optionen, pagesConfig, FarbenWebseiten-Reiter (template-spezifisch)public-visitor-surfacetemplatePublicContent, design, hero, …
2. Page ContentUnterseiten-Texte, SEO, customContent pro pageTypeReiter „Seite: …“ / Page-Content-EditorGET …/page-content — nach pageType filtern
3. Homepage-TilesStartseiten-Kacheln (MEC u. a.)Reiter Startseite / KachelnGET …/homepage-tiles
4. Content-EntitätenShops, News, Events, Angebote, Services, Kontakte, …Eigene Dashboard-Moduledata.apiHints + dokumentierte Public-Routen (Shops, News, Centerplan, DOOH, …)

Reiter → Speicher → API ist pro Template in MCP-Schema und Migration-Doku tabelliert — Beispiel ILG: Cockpit → v0 Migration → ILG-Referenz.

Code-Register:

WasDatei
Reiter-IDs & Rendererapps/dashboard/src/lib/website-config-tabs.ts
MCP-Feldpfade & writeSafetyapps/dashboard/src/lib/integration/website-config-mcp-schema.ts, mcp-tab-hints-*.ts
Public-Payload bauenapps/dashboard/src/lib/build-public-visitor-surface.ts
v0-Anleitung (goldenRule)apps/dashboard/src/lib/integration/v0-integration-contract.ts

Kanäle: Ziel vs. Bestand

KanalStatusRolle
v0 + GitHub-Repo (Vercel)ZielEinziges neues Frontend — Website, später Kiosk/Companion. Gleiche Public API. Migration
apps/center-websiteVeraltetMulti-Tenant-SPA im Monorepo. Läuft weiter, bis DNS auf v0 zeigt.
apps/digital-signageVeraltetTouch/Kiosk-App im Monorepo. Neue Stelen: v0, gleiche Cockpit-Daten. Signage → v0
WordPress-PluginVeraltetBestehende WP-Sites bis Umzug. Keine neuen Anbindungen als Zielarchitektur.
Social, Center-ManagerAktivWeitere Ausgänge — kein zweiter Shop-Stamm. Social bleibt Outstand über das Cockpit.

Layout (Komponenten, Routing, Animation) = v0/GitHub. Was sichtbar ist, welcher Text, welche Option = Cockpit.


Neues Feature richtig anlegen

Wenn Redaktion oder Agenten etwas steuern sollen (z. B. Videothek, zeitgesteuerter Hero, Signage-Playlist):

  1. Dashboard — Reiter oder Modul mit verständlicher UI (optionale Template-Felder als Reiter-Einstellung pflegen, nicht nur als Code-Default — Repo-Regel website-template-configuration.mdc).
  2. Speicher — Additive Felder (nullable/Default), kein Datenverlust.
  3. Public ReadGET-Route oder Erweiterung von public-visitor-surface / apiHintsPublic API Vertrag.
  4. MCP-Parität — Hints, Schema, ggf. Tool-Export in derselben Lieferung (Repo-Regel mcp-parity-with-changes.mdc, Doku: AgencyOS Integration).
  5. Kanal — v0/GitHub als Konsument anbinden. Bestand (SPA, Signage-App, WordPress) nur mitziehen, wenn das Center dort noch live ist — nicht als Ziel bauen.

Anti-Pattern: Feature nur in apps/center-website, apps/digital-signage oder WordPress bauen, ohne Cockpit-Reiter und ohne öffentliche Leseroute.


MCP: Landkarte für Agenten

Typischer Ablauf für Website-Inhalte:

  1. cockpit_website_config_schema(centerId | websiteTemplate) — Reiter, Feldpfade, v0PublicRead, writeSafety.
  2. cockpit_get_center_website_config(centerId) — Ist-Stand vor jedem Update.
  3. Partial Update — cockpit_update_center_website_config, cockpit_page_content, cockpit_content_push.

Tool-Liste: MCP-Tool-Referenz · Export: exports/cockpitos-tools.json.


So testen

  1. Im Cockpit einen Webseiten-Reiter ändern (z. B. Hero-Titel) → speichern.
  2. GET /api/centers/{centerId}/public-visitor-surface — Feld in templatePublicContent / hero sichtbar.
  3. v0-Preview (oder Bestand-SPA, falls das Center dort noch läuft) — gleicher Text ohne Frontend-Deploy der Inhalts-Logik (nur Cache/Revalidate beachten).
  4. MCP: Schema-Feldpfad mit tatsächlichem JSON in DB abgleichen.
  5. Seite deaktivieren (pagesConfig) → Route 404 in v0/Template, Nav-Eintrag weg.

Betrieb

ThemaHinweis
RevalidateNach Publish On-Demand-Revalidate (REVALIDATION_SECRET) — v0/Vercel und Render
Env FrontendsNEXT_PUBLIC_DASHBOARD_URL / DASHBOARD_API_URL — öffentliche Dashboard-URL
Multi-Center v0by-slug / by-domain — kein Hardcoding im Frontend
Nur Lesen öffentlichSchreib-APIs und website-config GET bleiben auth-pflichtig

Verwandte Seiten

ThemaLink
Plattform-GesamtbildPlattform-Überblick
Dev-EinstiegStart hier (Entwicklung)
Public API (Detail)Public Center-Website API
v0 migrierenCockpit → v0 Migration
KI-Builder-KonzeptKI Website Builder ↔ Cockpit
SignageAI Premium v0-Parität
Redaktion MCPClaude & MCP

Nutzungsstatistik: Seitenaufrufe werden anonymisiert erfasst. Im Umami-Dashboard nach diesem Pfad filtern: /en/developer-guide/cockpit-steuert-frontends