Looking to hire Laravel developers? Try LaraJobs

scheduler-list-laravel maintained by devakshay

Description
A beautiful, real-time developer control center to monitor, search, and manually execute scheduled tasks directly from a premium Pulse-like web interface.
Author
Last update
2026/05/23 13:20 (dev-main)
License
Downloads
776

Comments
comments powered by Disqus

Laravel Scheduler Control Center

Latest Version on Packagist GitHub Tests Action Status Total Downloads License

A breathtaking, premium, real-time developer dashboard for monitoring, searching, filtering, and manually executing Laravel scheduled tasks in a single click—fully inspired by Laravel Pulse.


✨ Features

  • 💫 Pulse-Style Dashboard: A premium user interface featuring fluid modern glassmorphism panels, harmonious tailored HSL color schemes, and subtle interactive micro-animations.
  • 🌗 Steady Toggle Theme Switcher: Full Dark and Light theme adaptability with local storage persistence and transition controls.
  • ⚡ Controlled Manual Triggering: Optionally trigger Artisan commands, Closure callbacks, and shell jobs directly from the UI when explicitly enabled.
  • 📟 Beautiful Built-in Console: Executes and streams terminal logs in real-time within an interactive overlay (custom-designed in Xcode-dark and DevTools-light styles).
  • 🔍 Real-Time Fuzzy Search & Filtering: Instantly search by command name, expression, or description. Filter tasks by type (Artisan, Callbacks, Shell) with active badge indicators.
  • 🏷️ Smart Meta Indicators: Real-time next run schedules (Carbon countdowns), timezone details, total task count, and task constraints (e.g. Without Overlapping, On One Server, In Maintenance).
  • 🎨 Custom Favicon & Logo: Displays a bespoke console terminal brand logo and a matching self-contained inline SVG favicon.


🚀 Installation

You can install the package via Composer:

composer require devakshay/scheduler-list-laravel

You can publish the configuration file using:

php artisan vendor:publish --tag="scheduler-list-laravel-config"

This will place a simplified and clean configuration file inside config/scheduler-list.php.


⚙️ Configuration

Here is the default configuration file structure inside config/scheduler-list.php:

return [
    /*
     * The path/URL where the scheduler dashboard will be accessible.
     */
    'path' => env('SCHEDULER_LIST_PATH', 'schedulers'),

    /*
     * The middleware applied to the scheduler dashboard routes.
     * Keep auth enabled in production and add any tenant/admin/IP middleware your app needs.
     */
    'middleware' => ['web', 'auth'],

    /*
     * Optional Gate ability used by the package. The default Gate only grants access
     * in local environments; production apps should define this ability explicitly.
     */
    'ability' => env('SCHEDULER_LIST_ABILITY', 'viewSchedulerList'),

    /*
     * Optional authorization callback. Return true to allow access.
     */
    'authorize' => null,

    /*
     * Whether the scheduler dashboard is enabled.
     */
    'enabled' => env('SCHEDULER_LIST_ENABLED', false),

    /*
     * Allow developers to run scheduled tasks manually from the dashboard.
     */
    'manual_execution' => env('SCHEDULER_LIST_MANUAL_EXECUTION', false),

    /*
     * Maximum number of output characters returned to the browser after a manual run.
     */
    'output_limit' => 12000,
];

🔐 Production Security

The dashboard is disabled by default. To use it in production, enable it deliberately and restrict it to trusted operators:

SCHEDULER_LIST_ENABLED=true
SCHEDULER_LIST_MANUAL_EXECUTION=false

Manual execution should stay disabled unless your team explicitly needs it. If you enable it, define a Gate in your application:

use Illuminate\Support\Facades\Gate;

Gate::define('viewSchedulerList', function ($user) {
    return $user->is_admin;
});

Alternatively, publish the config and provide an authorize callback:

'authorize' => fn (\Illuminate\Http\Request $request) => $request->user()?->is_admin === true,

Never expose the dashboard with only ['web'] middleware on a public application.


💡 Usage

  1. Open your host application's console router (routes/console.php or Console/Kernel.php) and register your scheduled tasks:
use Illuminate\Support\Facades\Schedule;

Schedule::command('inspire')
    ->everyMinute()
    ->description('Displays a random motivational quote.');

Schedule::call(function () {
    echo "Processing database backups...";
})->everyFiveMinutes()->description('Database Backup');
  1. Make sure your local development server is running:
php artisan serve
  1. Enable the dashboard in your environment:
SCHEDULER_LIST_ENABLED=true
  1. Visit the dashboard directly in your browser: 👉 http://localhost:8000/schedulers (or your custom path configuration).

  2. To allow the Run button, explicitly enable manual execution:

SCHEDULER_LIST_MANUAL_EXECUTION=true

🧪 Testing

The package includes a comprehensive feature test suite validating routes, manual triggers, standard output streaming, and security blocks:

composer test

🤝 Contributing

Contributions are welcome! Please feel free to open a Pull Request or report bugs in the Issues page.


📄 License

The MIT License (MIT). Please see the License File for more details.