Filament Gantt

A Gantt chart and resource timeline for Filament v4 (4.13+) and v5. Any Eloquent query with a start and an end becomes draggable bars on an hour, day, week, month or year axis, grouped by whatever you like; the browser owns the chart, so a drag lands at once, and the server checks every rule again in the background. Free and open source (MIT). The sibling of Filament Kanban.
- Repository: github.com/packstub/filament-gantt
- Packagist: packstub/filament-gantt
- Support: GitHub issues
Features
- Drag to move, resize or reassign: bars move at once, by an edge or to another row.
- Rules on the server: policies, durations and a locked past, always checked.
- Groups and resource timelines: rows by project, assignee, room or machine.
- Milestones, progress and dependencies: diamonds, fills and finish-to-start arrows.
- Filament actions on bars: click to edit, right-click for more, click to create.
- Hour to year, zoom and Fit: five scales, wheel or pinch zoom, the whole plan in one screen.
- Search and filters: Filament's filter fields, kept in the URL.
- Keyboard and touch: move and resize with the arrows, drag on touch.
- Resource page, standalone page or widget: wherever your panel needs a timeline.
- No Gantt library, no build step: dark mode, RTL and four languages.
Guides
| Guide | What it covers |
|---|---|
| Installation | Requirements, your first chart on a resource page, a chart in any Livewire component |
| Bars | Start and end attributes, whole days versus moments, label, colour, progress, milestones, the Bar shape |
| Groups | Grouping by a column or a relation, fixed group lists, the resource-timeline recipe (rooms × bookings) |
| Moving and resizing | What a drag does, snapping, every rule, moveUsing(), afterMove(), the BarMoved event |
| Filters and the time window | Scales, the window and its bounds, the search box, select, multiple, Yes / No, toggle and date-range filters and where they are shown, refreshing and polling |
| Actions | Click and right-click actions on bars, creating on an empty spot |
| Widget and read-only mode | The dashboard widget, readOnly() |
| Styling | The CSS variables, dark mode, RTL, translations |
| Performance | What is drawn where, row windowing, eager loading, big windows |
| Kanban + Gantt | The same records on a board and on a timeline |
| Upgrading | Version notes |
At a glance
composer require packstub/filament-gantt
php artisan filament:assets
use Filament\Actions\EditAction;
use Packstub\Gantt\Gantt;
use Packstub\Gantt\Pages\GanttResourcePage;
class TasksGantt extends GanttResourcePage
{
protected static string $resource = TaskResource::class;
public function gantt(Gantt $gantt): Gantt
{
return $gantt
->query(fn () => Task::query()->with('project'))
->start('starts_on')->end('ends_on')
->label('title')
->progress('progress')
->groupBy('project', label: 'project.name')
->barAction(EditAction::make()->schema(TaskResource::fields()));
}
}
(TaskResource::fields() is your own helper returning the form components; ->schema(fn (Schema $schema) => TaskResource::form($schema)) reuses the resource's form.)
Requirements
PHP 8.3+, Laravel 12 or 13, Filament 4.13+ or 5.
These pages are published at packstub.dev/docs/filament-gantt from the package's docs/ directory. Spotted a mistake? Open a pull request.