QuartzScheduler UI is a modern, powerful web-based management interface for Quartz.NET built with ASP.NET Core and React.
Inspired by Quartzmin, this project provides a complete rewrite with modern technologies, offering an intuitive and feature-rich interface for managing your Quartz.NET job schedulers.
Quartz.NET is a full-featured, open source job scheduling system that can be used from smallest apps to large scale enterprise systems. This project serves as a frontend management tool for Quartz Scheduler.
- β Create, Edit & Delete Jobs - Full CRUD operations with intuitive forms
- β Job Data Map Editor - Strongly typed parameter management (String, Number, Boolean)
- β Manual Job Triggering - Execute jobs on-demand with custom parameters
- β Job State Management - Pause, resume, and monitor job status
- β Real-time Execution Logs - View detailed job execution history with duration tracking
- β Running Jobs Monitor - See currently executing jobs in real-time
- β Multiple Trigger Types - Cron, Simple, Daily Time Interval, Calendar Interval
- β Visual Cron Editor - User-friendly cron expression builder with live preview
- β Timezone Support - CST/12-hour format display with UTC backend storage
- β Calendar Integration - Associate triggers with custom calendars
- β Misfire Handling - Configure misfire instructions and priorities
- β Trigger State Controls - Individual pause/resume/delete operations
- β Calendar Types - Support for Annual, Cron, Daily, Holiday, Monthly, Weekly calendars
- β Dynamic Calendar Editor - Type-specific controls that adapt based on calendar type
- β Calendar Association - Link calendars to triggers for advanced scheduling
- β Scheduler State Management - Start, standby, pause all, resume all operations
- β Clustering Support - Works with clustered Quartz.NET environments
- β Real-time Statistics - Job counts, execution metrics, and system status
- β Job & Trigger Groups - Organize and manage related jobs and triggers
- β Database Integration - MySQL support with ADO.NET job store
- β Job Data Persistence - Jobs survive application restarts
- β Execution History - Complete audit trail stored in database
- β FIRED_TRIGGERS Tracking - Monitor trigger firing in clustered environments
- β React 18 + TypeScript - Modern, type-safe frontend
- β Ant Design Components - Professional, accessible UI components
- β Redux Toolkit - Predictable state management
- β Responsive Design - Works on desktop and mobile devices
- β Advanced Filtering - Search and filter across all data grids
- β Real-time Updates - Live data refresh and notifications
- ASP.NET Core 8.0 - Modern web API framework
- Quartz.NET 3.x - Job scheduling engine
- MySQL - Database for job persistence
- Dapper - Lightweight ORM for data access
- System.Text.Json - JSON serialization
- React 18 - Modern UI library
- TypeScript - Type-safe JavaScript
- Ant Design - Enterprise UI components
- Redux Toolkit - State management
- Day.js - Date/time manipulation
- Axios - HTTP client
- .NET 8.0 SDK
- Node.js 18+ and npm
- MySQL Server 8.0+
-
Clone the repository
git clone https://github.com/yourusername/QuartzScheduler.git cd QuartzScheduler -
Setup Database
CREATE DATABASE quartzscheduler; -- Import the provided mysql_schema.sql file mysql -u root -p quartzscheduler < src/QuartzScheduler.Server/mysql_schema.sql
-
Configure Backend
cd src/QuartzScheduler.Server # Update appsettings.json with your MySQL connection string
-
Configure Frontend
cd src/QuartzScheduler.Client npm install -
Run the Application
Terminal 1 (Backend):
cd src/QuartzScheduler.Server dotnet runTerminal 2 (Frontend):
cd src/QuartzScheduler.Client npm start -
Access the Application
- Frontend: http://localhost:3000
- Backend API: https://localhost:7057
Update appsettings.json in the server project:
{
"ConnectionString": "server=localhost;database=quartzscheduler;uid=root;pwd=yourpassword;",
"JobLogTableName": "JOB_LOG_TABLE",
"Quartz": {
"quartz.scheduler.instanceName": "QuartzScheduler",
"quartz.scheduler.instanceId": "AUTO",
"quartz.jobStore.type": "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz",
"quartz.jobStore.dataSource": "default",
"quartz.jobStore.tablePrefix": "QRTZ_",
"quartz.dataSource.default.connectionString": "your-connection-string",
"quartz.dataSource.default.provider": "MySql",
"quartz.serializer.type": "stj"
}
}- Navigate to Jobs tab
- Click "Add Job" button
- Fill in job details (name, group, class, description)
- Configure job data map parameters
- Set persistence and durability options
- Click "Create"
- Go to Triggers tab
- Click "Add Trigger"
- Select trigger type (Cron, Simple, etc.)
- Configure schedule parameters
- Set start/end dates in CST format
- Associate with calendars if needed
- Click "Create"
- Use the Dashboard to view overall system status
- Start/Stop scheduler from the control panel
- Pause All/Resume All for bulk operations
- Monitor Job Groups and Trigger Groups
- Execution Logs tab shows completed job runs
- Running Jobs tab displays currently executing jobs
- Filter by job name, trigger, status, or date range
- View execution duration in HH:MM:SS format
- Email Notifications - Job failure/success email alerts
- Docker Support - Containerized deployment options
- Job Import/Export - Backup and restore job configurations
- Multi-Scheduler Support - Manage multiple Quartz instances
We welcome contributions from the community! Please see our Contributing Guidelines for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Add tests if applicable
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Use the GitHub Issues page
- Provide detailed steps to reproduce
- Include system information and logs
- Use issue templates when available
- Follow existing code style and conventions
- Update README.md if needed
This project is licensed under the MIT License - see the LICENSE file for details.
- Quartzmin - Original inspiration for this project
- Quartz.NET - The powerful job scheduling engine
- Ant Design - Beautiful and functional UI components
- React - The library for building user interfaces
- Quartz.NET Documentation
- Quartz Scheduler (Java)
- Quartzmin (Original)
- ASP.NET Core
- React Documentation
Made with β€οΈ for the Quartz.NET community

