N8.QuartzDashboard 1.0.0

The owner has unlisted this package. This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package N8.QuartzDashboard --version 1.0.0
                    
NuGet\Install-Package N8.QuartzDashboard -Version 1.0.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="N8.QuartzDashboard" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="N8.QuartzDashboard" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="N8.QuartzDashboard" />
                    
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 N8.QuartzDashboard --version 1.0.0
                    
#r "nuget: N8.QuartzDashboard, 1.0.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 N8.QuartzDashboard@1.0.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=N8.QuartzDashboard&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=N8.QuartzDashboard&version=1.0.0
                    
Install as a Cake Tool

QuartzDashboard v1.0

A beautiful, self-contained Quartz.NET scheduler dashboard — drop it into any ASP.NET Core app with two lines of code.

Dark UI .NET NuGet

What it does

  • See all your Quartz jobs, triggers, fire schedules, and currently executing work
  • Control the scheduler — start, standby, trigger jobs, pause/resume jobs and triggers
  • Track execution history with per-minute bucketed stats and live SVG charts
  • Monitor execution rate, average duration, and error trends in real time
  • Zero build step — single HTML SPA with Alpine.js + Tailwind CDN

Quick Start

dotnet add package N8.QuartzDashboard
// Program.cs
using QuartzDashboard;

builder.Services.AddQuartz();
builder.Services.AddQuartzHostedService();

builder.Services.AddQuartzDashboard();
// Optional: track fire history with per-minute statistics
builder.Services.AddQuartzDashboardHistory();

var app = builder.Build();
app.UseRouting();
app.UseQuartzDashboard();

app.Run();

Open /quartz in your browser.

Dashboard Pages

Page What you see
Overview Scheduler info + stat cards with SVG sparkline execution trends
Jobs All jobs with inline trigger details, live search/filter, trigger/pause/resume
Triggers Grouped by job (accordion), schedule descriptions, relative fire times
Executing Currently running jobs with animated duration bars
History Last 100 fire events with relative duration bars, job filter
Graph Dual-line SVG chart: execution count + avg duration, zoom toggles
Settings Refresh interval slider, per-page auto-refresh toggles

Auto-refreshes every 5 seconds. Dark theme, responsive, collapsible sidebar.

API Endpoints

All endpoints under {basePath}/api/ (default: /quartz/api/).

Scheduler

Method Path Description
GET /scheduler Metadata, status, uptime, version
POST /scheduler/start Start / resume from standby
POST /scheduler/standby Pause scheduler

Jobs

Method Path Description
GET /jobs All jobs with triggers + schedule descriptions
GET /jobs/{group}/{name} Single job detail with JobDataMap
POST /jobs/{group}/{name}/trigger Fire job immediately
POST /jobs/{group}/{name}/pause Pause job
POST /jobs/{group}/{name}/resume Resume job

Triggers

Method Path Description
GET /triggers All triggers with schedule descriptions
GET /triggers/{group}/{name} Single trigger detail
POST /triggers/{group}/{name}/pause Pause trigger
POST /triggers/{group}/{name}/resume Resume trigger

Runtime

Method Path Description
GET /executing Currently executing jobs with duration
GET /history Last 100 fire events (requires AddQuartzDashboardHistory())
GET /stats Execution buckets (per-minute), rate, avg duration — for the graph

Stats Response

{
  "totalExecutions": 145,
  "uptimeMinutes": 34.2,
  "executionRate": 4.0,
  "executionBuckets": [
    { "minute": "19:05", "count": 4, "avgDurationMs": 850.5, "errorRate": 0.0 },
    { "minute": "19:06", "count": 2, "avgDurationMs": 1200.3, "errorRate": 0.0 }
  ]
}

Configuration

builder.Services.AddQuartzDashboard(options =>
{
    options.Path = "/admin/scheduler";  // default: "/quartz"
});

Architecture

Request → app.Map("/quartz", branch)
          ├── /api/*       → HandleApi (route by path segments)
          ├── /index.html  → Serve embedded SPA (Alpine.js + Tailwind)
          └── anything else → SPA fallback (index.html)
  • Backend: Raw ASP.NET Core middleware using app.Map() — zero routing conflicts
  • Frontend: Single HTML file (~65KB) with Alpine.js 3.x + Tailwind CSS v4 CDN
  • Target frameworks: net8.0, net9.0, net10.0
  • Dependencies: Quartz 3.18.0, Quartz.Extensions.DependencyInjection 3.18.0

Demo

cd QuartzDashboard.Demo
dotnet run
# Open http://localhost:5190/quartz

The demo registers 5 jobs with different schedules:

  • HealthCheck — every 15s (fast, generates frequent graph data)
  • CacheWarmup — every 30s (variable 1-3s duration)
  • ReportGeneration — every 2min (long 4-6s duration, visible spikes)
  • DataSync — CRON 0/30 * * * * ? (fires at :00 and :30)
  • ManualNotification — durable, fire from the dashboard UI

History & Stats

builder.Services.AddQuartzDashboardHistory() registers an IJobListener via an IHostedService that:

  1. Records the last 100 fire events in a ConcurrentQueue<FireRecord>
  2. Buckets executions per-minute into 120 rolling ExecutionBucket entries
  3. Tracks per-bucket: count, total duration, error count
  4. Powers the /api/stats endpoint and the SVG execution graph

No external storage — all data is in-memory, ~7KB for 120 buckets.

Changelog

v1.0.0 (2026-05-02)

  • Complete UI/UX overhaul: glassmorphism, collapsible sidebar, animations, responsive
  • Live execution graph: SVG dual-line chart with zoom toggles and tooltips
  • New /api/stats endpoint with per-minute execution buckets
  • Schedule descriptions on triggers ("Every 00:00:30", CRON expressions)
  • Expandable job rows with inline trigger details
  • Live search/filter on jobs and history pages
  • Color-coded job borders by state
  • Settings panel: refresh interval, per-page auto-refresh
  • 5 demo jobs with diverse schedules

v0.3.0 (2026-05-02)

  • Fixed routing via app.Map() for Blazor WASM compatibility

v0.2.0 (2026-05-02)

  • Raw middleware approach, all endpoints verified

License

MIT — use it, ship it, open-source it.

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 is compatible.  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

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated