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 dahintersteckt | Navigation & Module |
| Datenschutz & Einwilligung (Center-Website, WordPress-Embed, Visitor-API) | Datenschutz & Einwilligung |
| Freigaben und Content-Workflow verstehen | Workflow & Freigaben |
| Inhalte redaktionell pflegen (Shops, Events, …) | Content-Creator-Handbuch |
| Anbieterinformationen (Shop / Filiale / Kette, Website) | Shops & Anbieterinformationen |
| Marketing & Analytics aus Nutzersicht | Marketing-Handbuch, Analytics Guide |
| Digital Signage / Kiosk / Companion konfigurieren | Digital Signage Guide, Digital Experience (Menüübersicht) |
| Centerpläne & Wayfinding | Centerplä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-Blockapps/dashboard/src/lib/modules.ts– Modul-IDs, Kategorien, zugeordnete Pfade (DEFAULT_MODULES)- Shell-Layout:
SidebarProvider(@mall-os/ui) rendert eine Flex-Zeile (flex-row) mitmin-w-0; die Desktop-Sidebar reserviert die Spaltenbreite am äußeren Wrapper perstyle.width+flexShrink: 0(abhängig vonopen/collapsible/variant) — die fixe Leiste zählt im Flex-Fluss nicht, und komplexedata-*-Tailwind-Utilities sind im Bundle nicht zuverlässig genug.SidebarInsetnutztw-0 flex-1 basis-0 min-w-0ohnew-full/ ohnemax-w-fullauf 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:
DialogundAlertDialogkommen aus@mall-os/uiund werden über einen Viewport-Wrapper (fixed inset-0+ Flex-Zentrierung) gerendert, damit Einblend-Animationen pertransformdie 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=1setzen (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