scheduler-list-laravel maintained by devakshay
Laravel Scheduler Control Center
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
- Open your host application's console router (
routes/console.phporConsole/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');
- Make sure your local development server is running:
php artisan serve
- Enable the dashboard in your environment:
SCHEDULER_LIST_ENABLED=true
-
Visit the dashboard directly in your browser: 👉 http://localhost:8000/schedulers (or your custom
pathconfiguration). -
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.