laravel-taskbridge-filament-3 maintained by codetechnl
taskbridge-filament-3
Filament v3 admin panel integration for laravel-taskbridge. Provides a complete UI for managing scheduled jobs, viewing run history, and triggering manual executions — all without touching AWS.
Requirements
- PHP 8.3+
- Laravel 12 or 13
- Filament 3.2+
codetechnl/laravel-taskbridge(installed and configured)
Installation
composer require codetechnl/laravel-taskbridge-filament-3
Register the plugin
Add the plugin to your Filament panel provider:
use CodeTechNL\TaskBridgeFilament\TaskBridgePlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
TaskBridgePlugin::make(),
]);
}
That's it. The plugin automatically registers the Scheduled Jobs resource, the Run Logs resource, and the TaskBridge stats widget.
What you get
Scheduled Jobs resource
A full CRUD interface for your registered jobs:
- Create — select a job class from your registered jobs, configure queue connection, cron expression, retry policy, and enable/disable
- Edit — update any settings; saved changes auto-sync to EventBridge
- View — detailed job info with inline run history
- Filters — filter by group, enabled state, last status
Row actions available on every job:
| Action | Description |
|---|---|
| Run now | Immediately executes the job (bypasses enabled / shouldRun) |
| Dry run | Calls handle() with Bus::fake() — no real queue dispatches |
| Edit | Edit job settings |
| Delete | Remove from database and EventBridge |
Bulk actions: Enable selected, Disable selected, Delete selected
Header actions:
| Action | Description |
|---|---|
| Sync | Push all enabled jobs to AWS EventBridge Scheduler |
| Validate | Check that all registered job classes exist and implement the correct interface |
Run Logs resource
A read-only audit log of every job execution. Columns include status, trigger type, duration, jobs dispatched, and structured output.
Filters: job name, identifier, status, trigger type.
Row action: Output — opens a modal with the full structured output when a job reported metadata.
Dashboard widget
A stats overview widget showing:
- Total jobs
- Active (enabled) jobs
- Disabled jobs
- Failed runs in the last 24 hours (shown in red when > 0)
Plugin configuration
All options are set fluently on TaskBridgePlugin::make():
TaskBridgePlugin::make()
->navigationGroup('Infrastructure')
->navigationLabel('Scheduler')
->navigationIcon('heroicon-o-clock')
->navigationSort(50)
->slug('scheduler')
->heading('Scheduled Jobs')
->subheading('Manage your AWS EventBridge schedules')
->paginationPageOptions([10, 25, 50])
->defaultPaginationPageOption(25)
->groupActions() // collapse row actions into a dropdown
->preventDuplicates(true) // block the same class being registered twice
->withoutWidget() // remove the stats widget
->withoutRunLog() // remove the Run Logs page
->runLogNavigationLabel('Job History')
->runLogSlug('job-history')
->runLogPaginationPageOptions([25, 50])
All available options
| Method | Default | Description |
|---|---|---|
navigationGroup(string) |
'System' |
Sidebar group label |
navigationLabel(string) |
'Scheduled Jobs' |
Sidebar item label |
navigationIcon(string) |
heroicon-o-clock |
Sidebar icon |
navigationSort(int) |
99 |
Sidebar sort order |
slug(string) |
scheduled-jobs |
URL path for the resource |
heading(string) |
'Scheduled Jobs' |
H1 on the list page |
subheading(string) |
null |
Subtitle below H1 |
preventDuplicates(bool) |
true |
Block duplicate job registrations |
groupActions(bool) |
false |
Collapse row actions into a dropdown |
paginationPageOptions(array) |
[25, 50, 100] |
Page size options |
defaultPaginationPageOption(int) |
25 |
Default page size |
withoutWidget() |
— | Do not register the stats widget |
withoutRunLog() |
— | Do not register the Run Logs page |
runLogNavigationLabel(string) |
'Run Logs' |
Run Logs sidebar label |
runLogNavigationIcon(string) |
heroicon-o-list-bullet |
Run Logs sidebar icon |
runLogSlug(string) |
scheduled-job-runs |
Run Logs URL path |
runLogHeading(string) |
'Run Logs' |
Run Logs H1 |
runLogPaginationPageOptions(array) |
[25, 50, 100] |
Run Logs page size options |
runLogDefaultPaginationPageOption(int) |
25 |
Run Logs default page size |
policy(string) |
null |
Custom Filament policy class |
Authorisation
Pass a policy class to restrict access:
TaskBridgePlugin::make()
->policy(App\Policies\ScheduledJobPolicy::class)
The policy is applied to ScheduledJobResource. Standard Filament policy methods apply: viewAny, create, update, delete, etc.
Viewing structured job output
When a job implements ReportsOutput and uses the HasJobOutput trait, execution metadata is stored on the run record. In the Run Logs table, the Output action opens a modal showing:
- Status badge (Success / Error / Warning / Info)
- Message text
- Key/value metadata table
Example job output shown in the modal:
Status: Success
Message: Import complete
processed | 1 420
skipped | 38
duration | 2.1s
Customising the job label
By default, the UI shows the class basename (e.g. SendDailyReport). Implement LabeledJob to show a human-readable name:
use CodeTechNL\TaskBridge\Contracts\LabeledJob;
class SendDailyReport implements ScheduledJob, LabeledJob, ShouldQueue
{
public function taskLabel(): string
{
return 'Send Daily Report';
}
}
Grouping jobs
Implement GroupedJob to categorise jobs in the Create dropdown and filter:
use CodeTechNL\TaskBridge\Contracts\GroupedJob;
class SendDailyReport implements ScheduledJob, GroupedJob, ShouldQueue
{
public function group(): string
{
return 'Reporting';
}
}
Run Logs in the job view
Opening a job's detail page (View) shows the run history inline via the Run History relation manager. Same columns and actions as the standalone Run Logs page.