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.