Skip to main content

Dashboard (cockpitOS Web App)

Branding of the name: cockpitOS — “cockpit” normal, OS emphasized (bold).

This representation is consistently used throughout the interface (headings, notes, connection/Magic Link pages, WordPress help).

Language (informal / formal)

In the dashboard interface (labels, help texts, toasts, internal assistants), we use “du” (informal). “Sie” (formal) is reserved for visitor and customer communication: e.g. website copy, cookie consent text, guidance, embedded visitor chat, and example and standard texts for SEO, hero, and similar content on the center website.

The dashboard is the central web interface for shopping center operators. Menu items and areas depend on activated modules and user roles.

The homepage (/dashboard) is your control center: open releases, dispatch, social, planner entries, and center status — filtered by the center switcher. Details: Navigation & Modules → Homepage.

On the desktop, the left sidebar reserves fixed space; the workspace uses only the remaining width on the right (the sidebar content is not under or “above” the navigation).

The panel icon on the left side of the header (next to the logo) collapses the navigation into a narrow icon bar and opens it again; the state is remembered in the browser via a cookie. In the collapsed state, menu section titles are hidden; tooltips appear at the respective icon (next to it).

The user menu (avatar at the top right or bottom in the sidebar) offers My Account (/dashboard/account) for all logged-in roles — here you can change your display name and set your password. Settings appear for Super Admin, Center Admin, Center Manager, and Org Marketing Manager — as a hub via the user menu (Super Admin → /dashboard/system, Org roles → /dashboard/organisation), not as a sidebar entry. The legacy path /dashboard/settings redirects there. Log out ends the session.

A Contact Point for Structure & Modules

The comprehensive, code-aligned overview of navigation areas, paths, and module IDs can be found here:

Navigation & Modules (Single Source of Truth for the dashboard menu)

It is also noted there which entries are role- or module-dependent and which technical modules exist in the configuration without their own menu group.

Depending on the Use Case

You want ...Start here
Know which menu item belongs to what and what URL lies behind itNavigation & Modules
Data protection & consent (center website, WordPress embed, visitor API)Data Protection & Consent
Understand releases and content workflowWorkflow & Releases
Editorially manage content (shops, events, …)Content Creator Manual
Provider information (shop / branch / chain, website)Shops & Provider Information
Marketing & Analytics from the user perspectiveMarketing Manual, Analytics Guide
Configure Digital Signage / Kiosk / CompanionDigital Signage Guide, Digital Experience (Menu overview)
Center plans & wayfindingCenter Plans – Overview
Platform modules across all apps (not just menu)Modules – Overview
Claude (Desktop) + Cockpit locally (MCP, editorial)Claude & Cockpit: Setup for Editorial

Center Selection (Header & Sidebar)

If you are assigned to multiple organizations, the Center Dropdown under the search bar shows an Organization area with quick filters (All + one button per organization). This allows you to narrow the list before the text search to one organization. Centers without organization in the master data record may appear as a separate item “Without Organization.”

For each center row, you will find the globe icon on the right: clicking this sets this center as active and directly opens the profile of this center on the Website tab (…/dashboard/content/centers/<id>?tab=website) — for template or domain settings, without having to navigate manually first.

Lists (e.g. News, Offers, Services) only query the API once the active center ID from the header is truly set — there is no short intermediary request without a center (avoiding incorrect counts/entries for super admins). Selecting all centers in the dropdown deliberately remains the global view.

Technical Reference (Code)

Maintenance of the menu structure in the repository:

  • apps/dashboard/src/config/navigation.ts – Main navigation (NAVIGATION_CONFIG)
  • apps/dashboard/src/config/navigation/wordpress-navigation.ts – WordPress block
  • apps/dashboard/src/lib/modules.ts – Module IDs, categories, assigned paths (DEFAULT_MODULES)
  • Shell layout: SidebarProvider (@mall-os/ui) renders a Flex-Row (flex-row) with min-w-0; the desktop sidebar reserves the column width on the outer wrapper via style.width + flexShrink: 0 (depending on open / collapsible / variant) — the fixed bar does not count in the flex flow, and complex data-* Tailwind utilities are not reliably included in the bundle. SidebarInset uses w-0 flex-1 basis-0 min-w-0 without w-full / without max-w-full on the inset.
  • Global search: GET /api/dashboard/search?q= (Session required) — results from navigation, centers, shops, events, and news are filtered by role, active modules (Org/User-ModuleConfig), and center access (assignments like at /api/shopping-centers); no data outside the authorization.
  • Modals & Alerts: Dialog and AlertDialog come from @mall-os/ui and are rendered via a viewport wrapper (fixed inset-0 + flex centering) so that show animations via transform do not “lose” the center (no offset e.g. bottom left).

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

Go-Live: DNS, Render, Vercel & UD

Rate Limiting (429 after Login)

The dashboard middleware limits non-logged-in API accesses (protection against abuse). With a valid NextAuth session (cookie), no edge limits apply anymore — allowing many parallel requests after login (tabs, layout, modules) without resulting in {"error":"Rate limit exceeded"}.

  • Session polling (/api/auth/session, /api/auth/csrf, /api/auth/providers) is generally excluded.
  • Production emergency: Set environment variable COCKPIT_DISABLE_EDGE_RATE_LIMIT=1 (disables all edge limits).
  • Response 429 includes resetTime (Unix-ms) — wait until this time or log in again after deploying the fix.

Changes to the dashboard menu should occur first in the code; the documentation page Navigation & Modules will be updated accordingly for structural adjustments.

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