Dashboards in Backstage

Your Day, At a Glance

Every organization drowns in a slightly different way — some in bookings, some in orders, some in event schedules. That's why the Backstage dashboard isn't a fixed report; it's your dashboard.

The pain it solves: Admins waste the first 20 minutes of every workday clicking through menus just to find out "what happened yesterday" — new orders, upcoming events, recent content changes.

How it helps:

  • Customizable widgets — from the toolbar's Customize button, admins arrange the dashboard around what matters to them: recent items, upcoming events, sales figures, or team activity.
  • Edit mode toggle — flip the whole Backstage into "edit mode" with one click, so content and settings stay locked down until you deliberately open them up (no accidental changes during a busy shift).
  • App launcher — jump straight into any module (Shop, Calendar, People) without hunting through menus.
  • Role-aware — dashboards respect roles, so a volunteer coordinator sees a different picture than a shop manager, without either needing a separate login system.

The happy workday: Log in, see what needs attention, act — no digging required.

Why This Matters for Your Organization

A well-organized dashboard reduces the cognitive load of running day-to-day operations. Staff spend less time navigating and more time acting on what actually needs attention. For organizations juggling multiple modules (shop, events, content, people), a single customizable home base keeps everyone oriented.


Technical Details

The dashboard is implemented as a Blazor Server page (ExireNexus.Backstage/Components/Pages/Dashboard.razor), rendered with InteractiveServer render mode for real-time interactivity without full-page reloads.

Key implementation points:

  • Route: /backstage/dashboard, protected with [Authorize] and role-based access ([Authorize(Roles = "admin")]) at the page level, with widget-level visibility further scoped by role.
  • Widgets live under ExireNexus.Backstage/Components/Pages/Dashboard/Widgets, allowing new widget types to be added independently of the dashboard shell.
  • Layout preferences (widget arrangement, edit mode) are persisted per-user via ISharedStateStore, keyed by the authenticated user's ID (ClaimTypes.NameIdentifier), so each admin's dashboard configuration survives across sessions.
  • Uses Fluent UI Blazor components (FluentToolbar, FluentButton, FluentMenu, FluentSpacer) for a consistent, accessible design language shared across all Backstage pages.
  • Dialogs (e.g., dashboard settings, app launcher) are opened via the injected IDialogService, keeping the page markup declarative and free of manual modal state management.
  • Depends on core platform services (IItemService, IUserService, IEventService) directly — no additional abstraction layer was introduced, consistent with the platform's minimal-abstraction philosophy.

Built on .NET 10 / C# 14 and Blazor Server, the dashboard benefits from real-time server-rendered updates without a heavy client-side JavaScript framework.



Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.