A unified chronological timeline for any Eloquent model. Aggregates spatie/laravel-activitylog events (own log + related logs), timestamp columns on related models, and any custom source you define — all in one Filament-native feed.
- Unified timeline — merge spatie logs, related-model timestamps, and custom events into one stream
- Pluggable sources —
fromActivityLog,fromActivityLogOf,fromRelation,fromCustom, and customTimelineSourceclasses - Per-event renderers — Blade views, closures, or renderer classes bound per event or type
- Filament-native UX — infolist component, relation manager, and header-action slide-over
- Dedup + filtering — type/event allow/deny lists, date windows, priority-based dedup with override
- Opt-in caching — per-call TTL with explicit invalidation — no model observers
- PHP 8.4+
- Laravel 12
- Filament 5
spatie/laravel-activitylog^5
composer require relaticle/activity-logMake the model timeline-capable, then render it on a Filament resource:
use Relaticle\ActivityLog\Concerns\InteractsWithTimeline;
use Relaticle\ActivityLog\Contracts\HasTimeline;
use Relaticle\ActivityLog\Timeline\TimelineBuilder;
use Spatie\Activitylog\Traits\LogsActivity;
class Person extends Model implements HasTimeline
{
use InteractsWithTimeline;
use LogsActivity;
public function timeline(): TimelineBuilder
{
return TimelineBuilder::make($this)->fromActivityLog();
}
}use Filament\Schemas\Schema;
use Relaticle\ActivityLog\Filament\Infolists\Components\ActivityLog;
public static function infolist(Schema $schema): Schema
{
return $schema->components([
ActivityLog::make('activity')->columnSpanFull(),
]);
}|
Visual form builder for all your public-facing forms. Learn more → |
Let users add custom fields to any model without code changes. Learn more → |
Drag-and-drop Kanban for any Laravel model. Learn more → |
Contributions are welcome. Please submit a Pull Request.
MIT License. See LICENSE.md for details.



