Zum Hauptinhalt springen

Dashboard (cockpitOS Web-App)

Schreibweise der Marke: cockpitOS — „cockpit“ normal, OS hervorgehoben (fett).

In der Oberfläche (Überschriften, Hinweise, Verbindungs-/Magic-Link-Seiten, WordPress-Hilfen) wird diese Darstellung durchgängig verwendet.

Sprache (du / Sie)

In der Dashboard-Oberfläche (Beschriftungen, Hilfetexte, Toasts, interne Assistenten) verwenden wir „du“. „Sie“ bleibt für Besucher- und Kundenkommunikation reserviert: z. B. Website-Copy, Cookie-Einwilligungstext, Wegführung, eingebetteter Besucher-Chat sowie Beispiel- und Standardtexte für SEO, Hero und ähnliche Inhalte auf der Center-Website.

Das Dashboard ist die zentrale Web-Oberfläche für Shopping-Center-Betreiber. Menüpunkte und Bereiche hängen von aktivierten Modulen und Benutzerrollen ab.

Die Startseite (/dashboard) ist deine Steuerzentrale: offene Freigaben, Dispatch, Social, Planner-Einträge und Center-Status — gefiltert nach dem Center-Switcher. Details: Navigation & Module → Startseite.

Auf dem Desktop reserviert die linke Seitenleiste fest Platz; der Arbeitsbereich nutzt nur die rechte Restbreite (der Seiteninhalt liegt nicht unter oder „über“ der Navigation).

Das Panel-Symbol links in der Kopfzeile (neben dem Logo) klappt die Navigation auf eine schmale Icon-Leiste ein und öffnet sie wieder; der Zustand wird im Browser per Cookie gemerkt. Im eingeklappten Zustand sind Menü-Sektionstitel ausgeblendet; Tooltips erscheinen am jeweiligen Icon (rechts daneben).

Das Nutzer-Menü (Avatar oben rechts bzw. unten in der Sidebar) bietet für alle angemeldeten Rollen Mein Konto (/dashboard/account) — dort kannst du deinen Anzeigenamen ändern und dein Passwort selbst setzen. Einstellungen erscheinen für Super Admin, Center Admin, Center Manager und Org Marketing Manager — als Hub über das Nutzer-Menü (Super Admin → /dashboard/system, Org-Rollen → /dashboard/organisation), nicht als Sidebar-Eintrag. Der Legacy-Pfad /dashboard/settings leitet dorthin weiter. Abmelden beendet die Sitzung.

Eine Anlaufstelle für Struktur & Module

Die vollständige, mit dem Code abgeglichene Übersicht über Navigationsbereiche, Pfade und Modul-IDs findest du hier:

Navigation & Module (Single Source of Truth für das Dashboard-Menü)

Dort ist auch vermerkt, welche Einträge rollen- oder modulabhängig sind und welche technischen Module in der Konfiguration existieren, ohne eigene Menügruppe.

Je nach Anwendungsfall

Du willst …Start hier
Wissen, welcher Menüpunkt wozu gehört und welche URL dahinterstecktNavigation & Module
Datenschutz & Einwilligung (Center-Website, WordPress-Embed, Visitor-API)Datenschutz & Einwilligung
Freigaben und Content-Workflow verstehenWorkflow & Freigaben
Inhalte redaktionell pflegen (Shops, Events, …)Content-Creator-Handbuch
Anbieterinformationen (Shop / Filiale / Kette, Website)Shops & Anbieterinformationen
Marketing & Analytics aus NutzersichtMarketing-Handbuch, Analytics Guide
Digital Signage / Kiosk / Companion konfigurierenDigital Signage Guide, Digital Experience (Menüübersicht)
Centerpläne & WayfindingCenterpläne – Übersicht
Plattform-Module quer über alle Apps (nicht nur Menü)Module – Übersicht
Claude (Desktop) + Cockpit lokal (MCP, Redaktion)Claude & Cockpit: Einrichtung für Redaktion

Center-Auswahl (Kopfzeile & Sidebar)

Wenn dir mehrere Organisationen zugeordnet sind, blendet das Center-Dropdown unter der Suche einen Bereich Organisation mit Schnellfiltern (Alle + je eine Schaltfläche pro Organisation) ein. Damit kannst du die Liste vor der Textsuche auf eine Organisation eingrenzen. Center ohne Organisation im Stammdatensatz erscheinen ggf. als eigener Punkt „Ohne Organisation“.

Pro Center-Zeile findest du rechts das Globus-Symbol: ein Klick setzt dieses Center als aktiv und öffnet direkt das Profil dieses Centers auf dem Reiter Webseite (…/dashboard/content/centers/<id>?tab=website) — etwa für Template- oder Domain-Einstellungen, ohne erst manuell zu navigieren.

Listen (z. B. News, Angebote, Services) fragen die API erst ab, wenn die aktive Center-ID aus der Kopfzeile wirklich gesetzt ist — es gibt keinen kurzen Zwischenrequest mehr ohne Center (vermeidet falsche Anzahl/Einträge für Super-Admins). Alle Center im Dropdown bewusst wählen bleibt die globale Sicht.

Technische Referenz (Code)

Pflege der Menüstruktur im Repository:

  • apps/dashboard/src/config/navigation.ts – Hauptnavigation (NAVIGATION_CONFIG)
  • apps/dashboard/src/config/navigation/wordpress-navigation.ts – WordPress-Block
  • apps/dashboard/src/lib/modules.ts – Modul-IDs, Kategorien, zugeordnete Pfade (DEFAULT_MODULES)
  • Shell-Layout: SidebarProvider (@mall-os/ui) rendert eine Flex-Zeile (flex-row) mit min-w-0; die Desktop-Sidebar reserviert die Spaltenbreite am äußeren Wrapper per style.width + flexShrink: 0 (abhängig von open / collapsible / variant) — die fixe Leiste zählt im Flex-Fluss nicht, und komplexe data-*-Tailwind-Utilities sind im Bundle nicht zuverlässig genug. SidebarInset nutzt w-0 flex-1 basis-0 min-w-0 ohne w-full / ohne max-w-full auf dem Inset.
  • Globale Suche: GET /api/dashboard/search?q= (Session erforderlich) — Ergebnisse aus Navigation, Centern, Shops, Events und News werden nach Rolle, aktiven Modulen (Org/User-ModuleConfig) und Center-Zugriff (Zuweisungen wie bei /api/shopping-centers) gefiltert; keine Daten außerhalb der Berechtigung.
  • Modale & Alerts: Dialog und AlertDialog kommen aus @mall-os/ui und werden über einen Viewport-Wrapper (fixed inset-0 + Flex-Zentrierung) gerendert, damit Einblend-Animationen per transform die Mitte nicht „verlieren“ (kein Versatz z. B. unten links).

Go-Live DNS (Render, Vercel, United Domains)

Go-Live: DNS, Render, Vercel & UD

Rate Limiting (429 nach Login)

Die Dashboard-Middleware begrenzt nicht eingeloggte API-Zugriffe (Schutz vor Missbrauch). Mit gültiger NextAuth-Session (Cookie) greifen keine Edge-Limits mehr — damit viele parallele Requests nach dem Login (Tabs, Layout, Module) nicht zu {"error":"Rate limit exceeded"} führen.

  • Session-Polling (/api/auth/session, /api/auth/csrf, /api/auth/providers) ist generell ausgenommen.
  • Notfall in Produktion: Umgebungsvariable COCKPIT_DISABLE_EDGE_RATE_LIMIT=1 setzen (alle Edge-Limits aus).
  • Antwort 429 enthält resetTime (Unix-ms) — Warten bis zu diesem Zeitpunkt oder erneut einloggen nach Deploy des Fixes.

Änderungen am Dashboard-Menü sollten zuerst im Code erfolgen; die Doku-Seite Navigation & Module wird bei strukturellen Anpassungen entsprechend nachgezogen.

Nutzungsstatistik: Seitenaufrufe werden anonymisiert erfasst. Im Umami-Dashboard nach diesem Pfad filtern: /dashboard/intro