NexJob.Dashboard 6.7.0

dotnet add package NexJob.Dashboard --version 6.7.0
                    
NuGet\Install-Package NexJob.Dashboard -Version 6.7.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="NexJob.Dashboard" Version="6.7.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="NexJob.Dashboard" Version="6.7.0" />
                    
Directory.Packages.props
<PackageReference Include="NexJob.Dashboard" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add NexJob.Dashboard --version 6.7.0
                    
#r "nuget: NexJob.Dashboard, 6.7.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package NexJob.Dashboard@6.7.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=NexJob.Dashboard&version=6.7.0
                    
Install as a Cake Addin
#tool nuget:?package=NexJob.Dashboard&version=6.7.0
                    
Install as a Cake Tool

NexJob.Dashboard

Embedded real-time monitoring dashboard middleware for NexJob in ASP.NET Core applications.

Provides a lightweight, zero-dependency web interface for monitoring background jobs, active worker nodes, queue throughput, and recurring cron schedules with live updates.

NexJob Dashboard Overview


Installation

dotnet add package NexJob.Dashboard

Quick Start

Enable the dashboard middleware in Program.cs:

using NexJob;
using NexJob.Dashboard;

var builder = WebApplication.CreateBuilder(args);

// Register MemoryCache (required for metrics caching)
builder.Services.AddMemoryCache();

// Register NexJob
builder.Services.AddNexJobPostgres(builder.Configuration.GetConnectionString("NexJob")!);
builder.Services.AddNexJob();

var app = builder.Build();

// Mount dashboard middleware at /dashboard
app.UseNexJobDashboard("/dashboard", options =>
{
    options.Title = "NexJob Management Console";
    options.MetricsCacheTtl = TimeSpan.FromSeconds(3);
});

app.Run();

Features

  • Multi-Cluster Dashboard Federation: Aggregate multiple isolated NexJob clusters (regional, multi-tenant, or staging vs production) in a single dashboard with live cluster switching dropdown (?cluster={id}), cluster-isolated SSE caching, and read-only cluster protection.
  • Enterprise Maxton Design System: Complete visual overhaul inspired by the modern Maxton UI layout, featuring an executive 64px Top Header with responsive sidebar toggle (☰), global keyboard search (Ctrl + K), live cluster health status badge (HEALTHY, DEGRADED, INCIDENT), and docs shortcuts.
  • Multi-Theme Switcher (5 Themes): Instant 1-click theme customizer offcanvas drawer supporting Blue Theme (Midnight - default), Dark, Light, Semi-Dark (dark sidebar/header with light content), and Bordered (clean 1px high-contrast borders without heavy shadows), fully persisted in localStorage.
  • Cluster Pipeline Topology Map: Native SVG & animated CSS flowchart connecting Ingress & Triggers ➔ Queue Buffers ➔ Processing Workers with live activity pulse indicators.
  • Real-Time Live Log Streaming (SSE): Streaming log viewer on /jobs/{id} dynamically appending execution console logs in real-time.
  • Event Triggers & Listeners Visibility: Dedicated /listeners page rendering active broker connections (RabbitMQ, Kafka, Azure Service Bus, SQS, etc.), consumer groups, target queues/topics, uptime, and real-time status transitions (Starting, Listening, Reconnecting, Faulted, Stopped).
  • Time-Window Filtering & Queue Controls: Quick period filters (1h, 6h, 24h, 7d, All Time) on /jobs and interactive Pause / Resume buttons on /queues.
  • Job Catalog & Definitions (/catalog): Aggregated job definitions table reporting run volume, error rates, average duration, last execution timestamps, deep links to /jobs, and ad-hoc trigger execution for parameterless jobs.
  • Modernized Terminal & JSON Viewers: Execution logs and payload viewers formatted into dark terminal-styled code windows with header dots, syntax color tokens, and 1-click clipboard copy buttons.
  • 24h Throughput Chart & Host Gauges: The Overview shows a 24-bar hourly throughput chart (average line, drop warnings) and in-memory CPU and RAM gauges for the host process, also on the Servers view. Server node IDs display as {Host}:{PID} #{shortGuid} with the full ID in the tooltip. Nothing is persisted.
  • Queue Windows at a Glance: the Settings page shows each queue's execution window (hours, time zone and days of the week) next to its status.
  • Live Overview: Real-time counters for Enqueued, Processing, Succeeded, Failed, Expired, Retrying, and Dead-Letter jobs via Server-Sent Events (SSE).
  • Job Details & Inspection: View serialized input arguments, execution history, exception stack traces, and captured console logs.
  • Recurring Jobs: Monitor cron schedules, last execution timestamp, next scheduled run, and manually trigger recurring jobs on demand.
  • Worker Nodes & Heartbeats: Live view of registered worker instances, process IDs, and health status.
  • Read Replica Isolation: Compatible with UseDashboardReadReplica() to ensure monitoring traffic does not impact primary database write performance.
  • Zero External Dependencies: 100% self-contained in native CSS and vanilla JS — zero external NPM, Webpack, or CDN dependencies.

Multi-Cluster Federation

Aggregate multiple clusters in a single dashboard instance:

app.UseNexJobDashboard("/dashboard", options =>
{
    options.Title = "Global Ops Hub";
    options.AddCluster(new DashboardCluster("us-east", "US-East Production", usEastStorage, isReadOnly: true));
    options.AddCluster(new DashboardCluster("eu-west", "EU-West Production", euWestStorage, isReadOnly: true));
    options.AddCluster(new DashboardCluster("staging", "Staging", stagingStorage, isReadOnly: false));
});

Securing the Dashboard

By default, the dashboard is open to all incoming requests. To protect it in staging and production, implement IDashboardAuthorizationHandler:

using NexJob;

public class AdminDashboardAuthorization : IDashboardAuthorizationHandler
{
    public Task<bool> AuthorizeAsync(HttpContext context)
    {
        // Example: Only allow authenticated users with the "Admin" or "Ops" role
        var isAuthorized = context.User.Identity?.IsAuthenticated == true &&
                           (context.User.IsInRole("Admin") || context.User.IsInRole("Ops"));

        return Task.FromResult(isAuthorized);
    }
}

Register the authorization handler in DI:

builder.Services.AddSingleton<IDashboardAuthorizationHandler, AdminDashboardAuthorization>();

When authorization fails, the dashboard returns 401 Unauthorized.

The standalone dashboard (NexJob.Dashboard.Standalone) enforces the same handler but runs no authentication middleware, so context.User is never authenticated there. A handler used with the standalone dashboard must authenticate from context.Request itself.


Options

Option Type Default Description
Title string "NexJob" Title shown in the browser tab and sidebar header
EnvironmentName string? null Names the deployment environment (for example "Production", "Staging", "Development"). When set, the top bar shows a coloured badge and the browser tab title is prefixed ([PROD] NexJob, [STAGING] NexJob), so nobody mistakes one environment for another. Production/Prod is red, Staging/Stage/QA amber, Development/Dev/Local green (case-insensitive); any other name gets a neutral badge. On screens up to 768 px the name appears in a ribbon above the header. Names longer than 32 characters are truncated.
MetricsCacheTtl TimeSpan 3s Cache duration for dashboard metrics to prevent DB overload during SSE polling
DefaultTheme string "blue-theme" Color theme used when the browser has no stored preference: blue-theme, semi-dark, dark, light or bordered-theme
EnablePlayground bool false Enables the interactive playground drawer with demo scenarios. Off by default for production safety
Queues IReadOnlyList<string>? null Optional list of queues to scope the dashboard view, nav counters, and default job listings default also covers the application's prefixed default queue ({prefix}.default).
Clusters IReadOnlyList<DashboardCluster> [] Registered federated clusters for multi-cluster operations
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on NexJob.Dashboard:

Package Downloads
NexJob.Dashboard.Standalone

Standalone dashboard for NexJob — self-hosted monitoring for Worker Services and Console Apps.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
6.7.0 142 10/19/2026
6.6.0 173 10/18/2026
6.5.1 234 10/17/2026
6.5.0 112 10/17/2026
6.4.0 149 10/16/2026
6.3.0 214 10/12/2026
6.2.1 161 10/11/2026
6.2.0 231 10/10/2026
6.1.0 187 10/10/2026
6.0.0 193 10/9/2026
5.10.0 151 10/8/2026
5.9.0 140 10/5/2026
5.8.0 156 10/4/2026
5.7.0 168 10/1/2026
5.6.2 113 10/1/2026
5.6.1 107 9/30/2026
5.6.0 107 9/30/2026
5.5.0 115 9/25/2026
5.4.1 108 9/24/2026
5.4.0 109 9/24/2026
Loading failed