PHPackages                             sdkwala/laravel-dynamic-scheduler-ui - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. sdkwala/laravel-dynamic-scheduler-ui

ActiveLibrary[Admin Panels](/categories/admin)

sdkwala/laravel-dynamic-scheduler-ui
====================================

Manage Laravel Scheduled Commands from a dashboard

v1.0.0(9mo ago)313[2 issues](https://github.com/sdkwala/laravel-dynamic-scheduler-ui/issues)MITPHPPHP ^8.1CI passing

Since Aug 8Pushed 9mo agoCompare

[ Source](https://github.com/sdkwala/laravel-dynamic-scheduler-ui)[ Packagist](https://packagist.org/packages/sdkwala/laravel-dynamic-scheduler-ui)[ RSS](/packages/sdkwala-laravel-dynamic-scheduler-ui/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (4)Versions (2)Used By (0)

Laravel Dynamic Scheduler UI (sdkwala/laravel-dynamic-scheduler-ui)
===================================================================

[](#laravel-dynamic-scheduler-ui-sdkwalalaravel-dynamic-scheduler-ui)

A modern, feature-rich Laravel package for managing scheduled jobs with a beautiful React dashboard. **Zero build required** - everything is pre-built and ready to use!

✨ Features
----------

[](#-features)

### 🎯 Core Features

[](#-core-features)

- **Modern React Dashboard** - Beautiful UI built with shadcn/ui and Inertia.js
- **Dynamic Job Management** - Create, edit, enable/disable scheduled jobs
- **Real-time Execution** - Run jobs manually with live output
- **Comprehensive Logging** - Track job execution history and errors
- **Job Details Modal** - Click any job or log to view complete details
- **Cron Expression Builder** - Visual cron builder with quick examples
- **Timezone Support** - Set different timezones per job
- **Route Prefix Configuration** - Customize dashboard URLs via config

### 🛠️ Technical Features

[](#️-technical-features)

- **Zero Build Required** - Pre-built assets, no npm/webpack needed
- **Laravel Integration** - Seamless integration with Laravel's scheduler
- **Database Migrations** - Automatic table creation
- **Service Provider** - Easy Laravel integration
- **Error Handling** - Robust error logging and display
- **Example Seeder** - Demo jobs included
- **Test Suite** - Comprehensive test coverage with GitHub Actions CI/CD

🚀 Installation
--------------

[](#-installation)

### 1. Install the Package

[](#1-install-the-package)

```
composer require sdkwala/laravel-dynamic-scheduler-ui
```

### 2. Publish Assets and Configuration

[](#2-publish-assets-and-configuration)

```
php artisan vendor:publish --provider="Sdkwala\Scheduler\SchedulerServiceProvider"
```

This will publish:

- Configuration file: `config/scheduler.php`
- Database migrations
- Public assets (CSS/JS)

### 3. Run Migrations

[](#3-run-migrations)

```
php artisan migrate
```

This creates the required database tables:

- `scheduled_jobs` - Stores job definitions
- `scheduled_job_logs` - Stores execution logs

### 4. Access the Dashboard

[](#4-access-the-dashboard)

Visit `/scheduler` in your browser. The dashboard is ready to use!

📖 Usage
-------

[](#-usage)

### Creating a Scheduled Job

[](#creating-a-scheduled-job)

1. **Via Dashboard:**

    - Go to `/scheduler`
    - Click "Create New Job"
    - Fill in job details (name, command, schedule, timezone)
    - Use the cron builder for easy schedule creation
2. **Via Code:**

    ```
    use Sdkwala\Scheduler\Models\ScheduledJob;

    ScheduledJob::create([
        'name' => 'Daily Backup',
        'command' => 'backup:run',
        'schedule' => '0 2 * * *', // Daily at 2 AM
        'timezone' => 'UTC',
        'is_active' => true,
    ]);
    ```

### Managing Jobs

[](#managing-jobs)

- **Enable/Disable:** Toggle job status from the dashboard
- **Manual Execution:** Click "Run" to execute jobs manually
- **Edit Jobs:** Modify job settings anytime
- **View Logs:** See execution history and errors
- **Job Details:** Click any job row to view complete information

### Viewing Logs

[](#viewing-logs)

- **Dashboard Logs:** See latest 5 logs per job on the main page
- **Full Log History:** Visit `/scheduler/logs` for complete log history
- **Log Details:** Click any log entry to view full output and errors

⚙️ Configuration
----------------

[](#️-configuration)

### Route Prefix

[](#route-prefix)

Customize the dashboard URL by editing `config/scheduler.php`:

```
return [
    'route_prefix' => 'admin/scheduler', // Default: 'scheduler'
    // ... other config options
];
```

After changing the prefix:

```
php artisan route:clear
```

### Available Timezones

[](#available-timezones)

The package includes a comprehensive list of timezones organized by region. You can customize this list by editing `config/scheduler.php`:

```
'available_timezones' => [
    'UTC' => 'UTC',
    'North America' => [
        'America/New_York' => 'Eastern Time',
        'America/Chicago' => 'Central Time',
        'America/Denver' => 'Mountain Time',
        'America/Los_Angeles' => 'Pacific Time',
        'America/Toronto' => 'Toronto',
        'America/Vancouver' => 'Vancouver',
    ],
    'Europe' => [
        'Europe/London' => 'London',
        'Europe/Paris' => 'Paris',
        'Europe/Berlin' => 'Berlin',
        'Europe/Moscow' => 'Moscow',
        'Europe/Dublin' => 'Dublin',
    ],
    'Asia' => [
        'Asia/Tokyo' => 'Tokyo',
        'Asia/Kolkata' => 'Kolkata (India)',
        'Asia/Dubai' => 'Dubai',
        'Asia/Shanghai' => 'Shanghai',
        'Asia/Singapore' => 'Singapore',
        'Asia/Bangkok' => 'Bangkok',
        'Asia/Seoul' => 'Seoul',
    ],
    'Australia & Pacific' => [
        'Australia/Sydney' => 'Sydney',
        'Australia/Melbourne' => 'Melbourne',
        'Pacific/Auckland' => 'Auckland',
    ],
    'Other' => [
        'Africa/Cairo' => 'Cairo',
        'Africa/Johannesburg' => 'Johannesburg',
        'America/Sao_Paulo' => 'São Paulo',
    ],
],
```

**To add custom timezones:**

1. Edit `config/scheduler.php`
2. Add your timezone to the appropriate region or create a new region
3. Use the format: `'Timezone/Identifier' => 'Display Name'`

### Cron Expression Validation

[](#cron-expression-validation)

The package includes robust validation for cron expressions:

- **Format Validation**: Ensures proper cron syntax (5 fields: minute hour day month weekday)
- **Runtime Validation**: Uses the CronExpression library to validate expressions
- **Error Messages**: Clear error messages for invalid expressions

**Valid Examples:**

- `* * * * *` - Every minute
- `0 2 * * *` - Daily at 2 AM
- `0 0 1 * *` - Monthly on 1st
- `0 9 * * 1-5` - Weekdays at 9 AM
- `*/15 * * * *` - Every 15 minutes

**Invalid Examples:**

- `* * * *` - Missing field
- `60 * * * *` - Invalid minute (0-59)
- `* 25 * * *` - Invalid hour (0-23)
- `* * 32 * *` - Invalid day (1-31)

### Available Routes

[](#available-routes)

- `GET /{prefix}` - Main dashboard
- `GET /{prefix}/create` - Create new job
- `POST /{prefix}` - Store new job
- `GET /{prefix}/{id}/edit` - Edit job
- `PUT /{prefix}/{id}` - Update job
- `DELETE /{prefix}/{id}` - Delete job
- `POST /{prefix}/{id}/run` - Run job manually
- `GET /{prefix}/logs` - View all logs

🔧 Integration with Laravel Scheduler
------------------------------------

[](#-integration-with-laravel-scheduler)

The package automatically integrates with Laravel's scheduler. Jobs created via the dashboard will be automatically registered with Laravel's `Schedule` facade.

### Example: Custom Job Registration

[](#example-custom-job-registration)

```
// In your App\Console\Kernel.php
protected function schedule(Schedule $schedule)
{
    // Your existing scheduled jobs...

    // The package automatically adds dynamic jobs here
}
```

🎨 UI Features
-------------

[](#-ui-features)

### Dashboard

[](#dashboard)

- **Job Table:** View all scheduled jobs with status, last run, next run
- **Quick Actions:** Run, edit, enable/disable, delete jobs
- **Tab Navigation:** Switch between dynamic jobs and Artisan schedule
- **Job Details Modal:** Click any job row to view complete information

### Logs Page

[](#logs-page)

- **Complete History:** View all job execution logs
- **Filter Options:** Filter by job, status, date range
- **Log Details Modal:** Click any log to view full output and errors

### Create/Edit Forms

[](#createedit-forms)

- **Cron Builder:** Visual cron expression builder
- **Timezone Selection:** Choose timezone per job
- **Validation:** Real-time form validation
- **Quick Examples:** Pre-built cron examples

🐛 Troubleshooting
-----------------

[](#-troubleshooting)

### Common Issues

[](#common-issues)

**1. Logs not appearing for scheduled runs:**

- Check Laravel logs for errors
- Ensure your cron job is running: `* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1`
- Verify database migrations are run

**2. Dashboard not loading:**

- Ensure assets are published: `php artisan vendor:publish --provider="Sdkwala\Scheduler\SchedulerServiceProvider"`
- Clear route cache: `php artisan route:clear`

**3. Jobs not executing:**

- Check if jobs are enabled in the dashboard
- Verify cron expressions are valid
- Check Laravel logs for errors

**4. Modal not working:**

- Ensure you're using the latest version
- Clear browser cache
- Check browser console for JavaScript errors

### Debug Commands

[](#debug-commands)

```
# Check if jobs are registered
php artisan schedule:list

# Test a specific job
php artisan schedule:test

# Clear all caches
php artisan config:clear && php artisan route:clear && php artisan view:clear
```

🧪 Testing
---------

[](#-testing)

### Local Testing

[](#local-testing)

Run the comprehensive test suite:

```
# Install dependencies
composer install

# Run all tests
vendor/bin/phpunit

# Run specific test files
vendor/bin/phpunit tests/ScheduledJobTest.php
vendor/bin/phpunit tests/SchedulerControllerTest.php

# Run JavaScript tests
npm install
npm run build
```

### Continuous Integration

[](#continuous-integration)

This package includes GitHub Actions workflows that automatically run tests on:

- Push to `main` branch
- Pull requests to `main` branch

The CI pipeline tests:

- PHP compatibility (8.1, 8.2, 8.3)
- Laravel compatibility (10.*, 11.*, 12.\*)
- JavaScript build process
- Security vulnerabilities
- Code quality checks

For detailed testing information, see [TESTING.md](./TESTING.md).

📚 Development
-------------

[](#-development)

For development, customization, and contribution instructions, see [DEVELOPMENT.md](./DEVELOPMENT.md).

🤝 Contributing
--------------

[](#-contributing)

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request

📄 License
---------

[](#-license)

This package is open-sourced software licensed under the [MIT license](LICENSE).

🔗 Links
-------

[](#-links)

- **GitHub:**
- **Packagist:**
- **Issues:**

---

**Built with ❤️ using [Laravel](https://laravel.com/), [React](https://react.dev/), [Inertia.js](https://inertiajs.com/), and [shadcn/ui](https://ui.shadcn.com/)**

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance44

Moderate activity, may be stable

Popularity9

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

278d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/d6a8528b1a8eb4df58733991f8ba05314a212e6642b6b4e2e9e25c044b6f7a1b?d=identicon)[sdkwala](/maintainers/sdkwala)

---

Top Contributors

[![sdkwala](https://avatars.githubusercontent.com/u/218804976?v=4)](https://github.com/sdkwala "sdkwala (1 commits)")

### Embed Badge

![Health badge](/badges/sdkwala-laravel-dynamic-scheduler-ui/health.svg)

```
[![Health](https://phpackages.com/badges/sdkwala-laravel-dynamic-scheduler-ui/health.svg)](https://phpackages.com/packages/sdkwala-laravel-dynamic-scheduler-ui)
```

###  Alternatives

[slowlyo/owl-admin

基于 laravel、amis 开发的后台框架~

61214.2k26](/packages/slowlyo-owl-admin)[takielias/tablar

Tablar: A Laravel Dashboard Preset Featuring Dark Mode and Dynamic Menu Generation for Effortless Navigation and Fast Development.

30817.7k3](/packages/takielias-tablar)[adminui/inertia-routes

A hybrid JS/PHP package adding Ziggy-routes functionality to your Laravel/Inertia/Vue3 application

183.2k](/packages/adminui-inertia-routes)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)[takielias/tablar-kit

The Elegance of Tablar Dashboard

413.4k](/packages/takielias-tablar-kit)[a2insights/filament-saas

Filament Saas for A2Insights

161.1k](/packages/a2insights-filament-saas)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
