Skip to content
Packstub

Filament Gantt

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.

Features

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.