Skip to content

Aadithan/QuartzScheduler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Quartz Scheduler

QuartzIcon


License: MIT .NET React TypeScript

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.

QuartzScheduler

✨ Key Features

πŸ“‹ Job Management

  • βœ… 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

⏰ Trigger Management

  • βœ… 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 Management

  • βœ… 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 Controls

  • βœ… 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

πŸ’Ύ Data Persistence

  • βœ… 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

🎨 Modern UI/UX

  • βœ… 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

πŸ—οΈ Technology Stack

Backend

  • 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

Frontend

  • 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

πŸš€ Quick Start

Prerequisites

  • .NET 8.0 SDK
  • Node.js 18+ and npm
  • MySQL Server 8.0+

Installation

  1. Clone the repository

    git clone https://github.com/yourusername/QuartzScheduler.git
    cd QuartzScheduler
  2. Setup Database

    CREATE DATABASE quartzscheduler;
    -- Import the provided mysql_schema.sql file
    mysql -u root -p quartzscheduler < src/QuartzScheduler.Server/mysql_schema.sql
  3. Configure Backend

    cd src/QuartzScheduler.Server
    # Update appsettings.json with your MySQL connection string
  4. Configure Frontend

    cd src/QuartzScheduler.Client
    npm install
  5. Run the Application

    Terminal 1 (Backend):

    cd src/QuartzScheduler.Server
    dotnet run

    Terminal 2 (Frontend):

    cd src/QuartzScheduler.Client
    npm start
  6. Access the Application

Configuration

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"
  }
}

πŸ“– Usage

Creating Jobs

  1. Navigate to Jobs tab
  2. Click "Add Job" button
  3. Fill in job details (name, group, class, description)
  4. Configure job data map parameters
  5. Set persistence and durability options
  6. Click "Create"

Setting Up Triggers

  1. Go to Triggers tab
  2. Click "Add Trigger"
  3. Select trigger type (Cron, Simple, etc.)
  4. Configure schedule parameters
  5. Set start/end dates in CST format
  6. Associate with calendars if needed
  7. Click "Create"

Managing Scheduler

  • 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

Viewing Execution History

  • 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

πŸ—ΊοΈ Roadmap

Long Term (v2.0)

  • 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

🀝 Contributing

We welcome contributions from the community! Please see our Contributing Guidelines for details.

Development Setup

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Add tests if applicable
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

Reporting Issues

  • Use the GitHub Issues page
  • Provide detailed steps to reproduce
  • Include system information and logs
  • Use issue templates when available

Code Standards

  • Follow existing code style and conventions
  • Update README.md if needed

πŸ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • 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

πŸ”— Links


Made with ❀️ for the Quartz.NET community

About

QuartzScheduler is a modern, powerful web-based management interface for Quartz.NET (https://www.quartz-scheduler.net)

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages