PHPackages                             bestora/laravel-filament-activity-log - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. bestora/laravel-filament-activity-log

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

bestora/laravel-filament-activity-log
=====================================

Laravel Filament Activity Log

v0.0.1(1mo ago)09MITPHPPHP ^8.4

Since May 5Pushed 1mo agoCompare

[ Source](https://github.com/Bestora/laravel-filament-activity-log)[ Packagist](https://packagist.org/packages/bestora/laravel-filament-activity-log)[ Docs](https://github.com/bestora/laravel-filament-activity-log)[ RSS](/packages/bestora-laravel-filament-activity-log/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (1)Dependencies (14)Versions (2)Used By (0)

Laravel Filament Activity Log
=============================

[](#laravel-filament-activity-log)

Fork of [Rômulo Ramos Activitylog](https://github.com/rmsramos/activitylog)

### Spatie Laravel Activity Log for Filament

[](#spatie-laravel-activity-log-for-filament)

[![Latest Version on Packagist](https://camo.githubusercontent.com/4f930c8f28a22952404330337cb934e5a691204dd5b1d566f6eee85db9d35644/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f626573746f72612f6c61726176656c2d66696c616d656e742d61637469766974792d6c6f672e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/bestora/laravel-filament-activity-log)[![Software License](https://camo.githubusercontent.com/074b89bca64d3edc93a1db6c7e3b1636b874540ba91d66367c0e5e354c56d0ea/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e737667)](LICENSE.md)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/e5202bba395db59eb5046d76c15b4d0e775b95a8971c494279f9e0d917ed8a81/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f626573746f72612f6c61726176656c2d66696c616d656e742d61637469766974792d6c6f672f6669782d7068702d636f64652d7374796c652d6973737565732e796d6c3f6272616e63683d6d61696e266c6162656c3d636f64652532307374796c65267374796c653d666c61742d737175617265)](https://github.com/bestora/laravel-filament-activity-log/actions?query=workflow%3A%22Fix+PHP+code+style+issues%22+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/5b1f5b60f0daa41fcdceac9e2a7f780184d237b538448322d1d6284b41558107/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f626573746f72612f6c61726176656c2d66696c616d656e742d61637469766974792d6c6f672e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/bestora/laravel-filament-activity-log/stats)

[![Screenshot of Application Feature](https://raw.githubusercontent.com/bestora/laravel-filament-activity-log/main/arts/cover.jpeg)](https://raw.githubusercontent.com/bestora/laravel-filament-activity-log/main/arts/cover.jpeg)

This package provides a Filament resource that shows you all of the activity logs and detailed view of each log created using the `spatie/laravel-activitylog` package. It also provides a relationship manager for related models.

Requirements
------------

[](#requirements)

- PHP ^8.4
- Laravel ^11.0 | ^12.0 | ^13.0
- Filament ^5.6
- Spatie Laravel Activity Log ^5.0

Languages Supported
-------------------

[](#languages-supported)

ActivityLog Plugin is translated for :

- 🇧🇷 Brazilian Portuguese
- 🇺🇸 English
- 🇩🇪 German
- 🇪🇸 Spanish
- 🇫🇷 French
- 🇮🇷 Persian
- 🇦🇪 Arabic
- 🇵🇹 Portuguese
- 🇮🇱 Hebrew
- 🇳🇱 Dutch
- 🇱🇻 Latvian

Installation
------------

[](#installation)

You can install the package via composer:

```
composer require bestora/laravel-filament-activity-log
```

After that run the install command:

```
php artisan activitylog:install
```

This will publish the config &amp; migrations from `spatie/laravel-activitylog`

And run migrates

```
php artisan migrate
```

You can manually publish the configuration file with:

```
php artisan vendor:publish --tag="activitylog-config"
```

This is the contents of the published config file:

```
return [
    'resources' => [
       'label'                     => 'Activity Log',
        'plural_label'              => 'Activity Logs',
        'hide_restore_action'       => false,
        'restore_action_label'      => 'Restore',
        'hide_resource_action'      => false,
        'hide_restore_model_action' => true,
        'resource_action_label'     => 'View',
        'navigation_item'           => true,
        'navigation_group'          => null,
        'navigation_icon'           => 'heroicon-o-shield-check',
        'navigation_sort'           => null,
        'default_sort_column'       => 'id',
        'default_sort_direction'    => 'desc',
        'navigation_count_badge'    => false,
        'resource'                  => \Bestora\FilamentActivityLog\Resources\ActivitylogResource\ActivitylogResource::class,
    ],
    'date_format'     => 'd/m/Y',
    'datetime_format' => 'd/m/Y H:i:s',
];
```

Optionally, you can publish the views using

```
php artisan vendor:publish --tag="activitylog-views"
```

Usage
-----

[](#usage)

### Basic Spatie ActivityLog usage

[](#basic-spatie-activitylog-usage)

In you `Model` add `Spatie\Activitylog\Traits\LogsActivity` trait, and configure `getActivitylogOption` function

For more configuration, Please review [Spatie Docs](https://spatie.be/docs/laravel-activitylog/v5)

```
use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\Traits\LogsActivity;
use Spatie\Activitylog\LogOptions;

class NewsItem extends Model
{
    use LogsActivity;

    protected $fillable = ['name', 'text'];

    public function getActivitylogOptions(): LogOptions
    {
        return LogOptions::defaults()
        ->logOnly(['name', 'text']);
    }
}
```

Plugin usage
------------

[](#plugin-usage)

[![Screenshot of Application Feature](https://raw.githubusercontent.com/bestora/laravel-filament-activity-log/main/arts/resource.png)](https://raw.githubusercontent.com/bestora/laravel-filament-activity-log/main/arts/resource.png)

In your Panel ServiceProvider `(App\Providers\Filament)` active the plugin

Add the `Bestora\FilamentActivityLog\ActivitylogPlugin` to your panel config

```
use Bestora\FilamentActivityLog\ActivitylogPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            ActivitylogPlugin::make(),
        ]);
}
```

Customising the ActivitylogResource
-----------------------------------

[](#customising-the-activitylogresource)

You can swap out the `ActivitylogResource` used by updating the `->resource()` value. Use this to create your own `CustomResource` class and extend the original at `\Bestora\FilamentActivityLog\Resources\ActivitylogResource\ActivitylogResource::class`. This will allow you to customise everything such as the views, table, form and permissions.

Note

If you wish to change the resource on List and View page be sure to replace the `getPages` method on the new resource and create your own version of the `ListPage` and `ViewPage` classes to reference the custom `CustomResource`.

```
use Bestora\FilamentActivityLog\ActivitylogPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            ActivitylogPlugin::make()
                ->resource(\Path\For\Your\CustomResource::class),
        ]);
}
```

Customising label Resource
--------------------------

[](#customising-label-resource)

You can swap out the `Resource label` used by updating the `->label()` and `->pluralLabel()` value.

```
use Bestora\FilamentActivityLog\ActivitylogPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            ActivitylogPlugin::make()
                ->label('Log')
                ->pluralLabel('Logs'),
        ]);
}
```

Displaying the resource in the navigation
-----------------------------------------

[](#displaying-the-resource-in-the-navigation)

You can enable or disable the `Resource navigation item` by updating the `->navigationItem()` value.

```
use Bestora\FilamentActivityLog\ActivitylogPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            ActivitylogPlugin::make()
                ->navigationItem(false), // by default is true
        ]);
}
```

Grouping resource navigation items
----------------------------------

[](#grouping-resource-navigation-items)

You can add a `Resource navigation group` updating the `->navigationGroup()` value.

```
use Bestora\FilamentActivityLog\ActivitylogPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            ActivitylogPlugin::make()
                ->navigationGroup('Activity Log'),
        ]);
}
```

Customising a resource navigation icon
--------------------------------------

[](#customising-a-resource-navigation-icon)

You can swap out the `Resource navigation icon` used by updating the `->navigationIcon()` value.

```
use Bestora\FilamentActivityLog\ActivitylogPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            ActivitylogPlugin::make()
                ->navigationIcon('heroicon-o-shield-check'),
        ]);
}
```

Active a count badge
--------------------

[](#active-a-count-badge)

You can active `Count Badge` updating the `->navigationCountBadge()` value.

```
use Bestora\FilamentActivityLog\ActivitylogPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            ActivitylogPlugin::make()
                ->navigationCountBadge(true),
        ]);
}
```

Set navigation sort
-------------------

[](#set-navigation-sort)

You can set the `Resource navigation sort` used by updating the `->navigationSort()` value.

```
use Bestora\FilamentActivityLog\ActivitylogPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            ActivitylogPlugin::make()
                ->navigationSort(3),
        ]);
}
```

Authorization
-------------

[](#authorization)

If you would like to prevent certain users from accessing the logs resource, you should add a authorize callback in the `ActivitylogPlugin` chain.

```
use Bestora\FilamentActivityLog\ActivitylogPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            ActivitylogPlugin::make()
                ->authorize(
                    fn () => auth()->user()->id === 1
                ),
        ]);
}
```

Translate Resource Names
------------------------

[](#translate-resource-names)

To translate resource names in the activity log, add a `translateSubject` callback within the `ActivitylogPlugin` chain

```
use Bestora\FilamentActivityLog\ActivitylogPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            ActivitylogPlugin::make()
                ->translateSubject(fn($label) => __("yourCustomLangFile.".$label)),
        ]);
}
```

Translate Activity log key Names
--------------------------------

[](#translate-activity-log-key-names)

To translate the names of the keys in the activity log, add a `translateLogKey` callback within the `ActivitylogPlugin` chain

```
use Bestora\FilamentActivityLog\ActivitylogPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            ActivitylogPlugin::make()
                ->translateLogKey(fn($label) => __("yourCustomLangFile.".$label)),
        ]);
}
```

Customize Date Parsing
----------------------

[](#customize-date-parsing)

To customize how dates are parsed, depending on user preferences or settings:

```
use Bestora\FilamentActivityLog\ActivitylogPlugin;
use Morilog\Jalali\Jalalian;
use Carbon\Carbon;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            ActivitylogPlugin::make()
                ->dateParser(
                    fn($date) => auth()->user()->isJalaliCalendar() ?
                        Jalalian::fromDateTime($date) :
                        Carbon::parse($date)
                )
        ]);
}
```

Customize Date and DateTime Formats
-----------------------------------

[](#customize-date-and-datetime-formats)

To customize the format of dates and datetime columns based on user settings:

```
use Bestora\FilamentActivityLog\ActivitylogPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            ActivitylogPlugin::make()
                ->dateFormat('Y-m-d')
                ->datetimeFormat(fn() => auth()->user()->getFilamentDateTimeFormat())
        ]);
}
```

Customize DateTime Columns
--------------------------

[](#customize-datetime-columns)

To conditionally customize datetime columns in the UI, depending on the user's calendar preference:

```
use Bestora\FilamentActivityLog\ActivitylogPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            ActivitylogPlugin::make()
                ->customizeDatetimeColumn(function ($column) {
                    return $column->when(
                        auth()->user()->isJalaliCalendar(),
                        function ($column) {
                            return $column->jalaliDateTime();
                        }
                    );
                })
        ]);
}
```

Customize Date Picker Fields
----------------------------

[](#customize-date-picker-fields)

To customize date picker fields in forms, depending on user preferences:

```
use Bestora\FilamentActivityLog\ActivitylogPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            ActivitylogPlugin::make()
                ->customizeDatePicker(function ($field) {
                    return $field->when(
                        auth()->user()->isJalaliCalendar(),
                        function ($field) {
                            return $field->jalali();
                        }
                    );
                })
        ]);
}
```

Manipulate View Action Using Custom Activity Resource Trait
-----------------------------------------------------------

[](#manipulate-view-action-using-custom-activity-resource-trait)

Implement `getFilamentActualResourceModel` in the trait `HasCustomActivityResource` to determine the actual model related to the activity record for generating valid URLs.

```
use Bestora\FilamentActivityLog\Traits\HasCustomActivityResource;

trait HasCustomActivityResource
{
    public function getFilamentActualResourceModel($record)
    {
        $record = $record->subject->translatable;
        $model = null;

        switch ($record::class) {
            case FirstTranslatableModel::class:
                $model = $record->firstModel;
                break;

            case SecondTranslatableModel::class:
                $model = $record->secondModel;
                break;

            default:
                throw new Exception("Error Translatable subject model not found. record = ".$record::class, 1);
                break;
        }

        return $model;
    }
}
```

### Hide Restore / View Action

[](#hide-restore--view-action)

To hide the restore / view action globally for a resource within the `ActivitylogPlugin`, you can use the `isRestoreActionHidden` and `isResourceActionHidden` method. these are particularly useful in scenarios where you do not want users to have the ability to restore or view entries from the activity log. you can also customize the label of view action:

```
use Bestora\FilamentActivityLog\ActivitylogPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            ActivitylogPlugin::make()
                ->isRestoreActionHidden(true)
                ->isResourceActionHidden(true)
                ->resourceActionLabel("Sample Label")
        ]);
}
```

### Show Restore (Soft Deletes)

[](#show-restore-soft-deletes)

In the `laravel-activitylog` configuration file `config/activitylog.php`:

```
return [
    'subject_returns_soft_deleted_models' => true,
]
```

To globally display the restore (soft delete) action of a resource within the `ActivitylogPlugin`, you can use the `isRestoreModelActionHidden` method. This is particularly useful in scenarios where you do not want users to have the ability to restore activity log entries:

```
use Bestora\FilamentActivityLog\ActivitylogPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            ActivitylogPlugin::make()
                ->isRestoreModelActionHidden(false)
        ]);
}
```

### Role Policy

[](#role-policy)

To ensure ActivitylogResource access via RolePolicy you would need to add the following to your AppServiceProvider:

```
use App\Policies\ActivityPolicy;
use Illuminate\Support\Facades\Gate;
use Spatie\Activitylog\Models\Activity;

class AppServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        Gate::policy(Activity::class, ActivityPolicy::class);
    }
}
```

Full configuration
------------------

[](#full-configuration)

```
use Bestora\FilamentActivityLog\ActivitylogPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            ActivitylogPlugin::make()
                ->resource(\Path\For\Your\CustomResource::class)
                ->label('Log')
                ->pluralLabel('Logs')
                ->navigationItem(true)
                ->navigationGroup('Activity Log')
                ->navigationIcon('heroicon-o-shield-check')
                ->navigationCountBadge(true)
                ->navigationSort(2)
                ->authorize(
                    fn () => auth()->user()->id === 1
                )
                ->translateSubject(fn($label) => __("yourCustomLangFile.".$label)),
                ->dateParser(
                    fn($date) => auth()->user()->isJalaliCalendar() ?
                        Jalalian::fromDateTime($date) :
                        Carbon::parse($date)
                )
                ->dateFormat('Y-m-d')
                ->datetimeFormat(fn() => auth()->user()->getFilamentDateTimeFormat())
                ->customizeDatetimeColumn(function ($column) {
                    return $column->when(
                        auth()->user()->isJalaliCalendar(),
                        function ($column) {
                            return $column->jalaliDateTime();
                        }
                    );
                })
                ->customizeDatePicker(function ($field) {
                    return $field->when(
                        auth()->user()->isJalaliCalendar(),
                        function ($field) {
                            return $field->jalali();
                        }
                    );
                })
                ->isRestoreActionHidden(true)
                ->isResourceActionHidden(true)
                ->isRestoreModelActionHidden(false)
                ->resourceActionLabel("Sample Label"),
        ]);
}
```

Relationship manager
--------------------

[](#relationship-manager)

If you have a model that uses the `Spatie\Activitylog\Traits\LogsActivity` trait, you can add the `Bestora\FilamentActivityLog\RelationManagers\ActivitylogRelationManager` relationship manager to your Filament resource to display all of the activity logs that are performed on your model. [![Screenshot of Application Feature](https://raw.githubusercontent.com/bestora/laravel-filament-activity-log/main/arts/relationManager.png)](https://raw.githubusercontent.com/bestora/laravel-filament-activity-log/main/arts/relationManager.png)

```
use Bestora\FilamentActivityLog\RelationManagers\ActivitylogRelationManager;

public static function getRelations(): array
{
    return [
        ActivitylogRelationManager::class,
    ];
}
```

Timeline Action
---------------

[](#timeline-action)

[![Screenshot of Application Feature](https://raw.githubusercontent.com/bestora/laravel-filament-activity-log/main/arts/timeline.png)](https://raw.githubusercontent.com/bestora/laravel-filament-activity-log/main/arts/timeline.png)

To make viewing activity logs easier, you can use a custom action. In your UserResource in the table function, add the `ActivityLogTimelineTableAction`.

```
use Bestora\FilamentActivityLog\Actions\ActivityLogTimelineTableAction;

public static function table(Table $table): Table
{
    return $table
        ->actions([
            ActivityLogTimelineTableAction::make('Activities'),
        ]);
}
```

you can pass a matrix with the relationships, remember to configure your `Models`.

```
public static function table(Table $table): Table
{
    return $table
        ->actions([
            ActivityLogTimelineTableAction::make('Activities')
                ->withRelations(['profile', 'address']), //opcional
        ]);
}
```

You can configure the icons and colors, by default the `'heroicon-m-check'` icon and the `'primary'` color are used.

```
use Bestora\FilamentActivityLog\Actions\ActivityLogTimelineTableAction;

public static function table(Table $table): Table
{
    return $table
        ->actions([
            ActivityLogTimelineTableAction::make('Activities')
                ->timelineIcons([
                    'created' => 'heroicon-m-check-badge',
                    'updated' => 'heroicon-m-pencil-square',
                ])
                ->timelineIconColors([
                    'created' => 'info',
                    'updated' => 'warning',
                ])
        ]);
}
```

You can limit the number of results in the query by passing a limit, by default the last 10 records are returned.

```
use Bestora\FilamentActivityLog\Actions\ActivityLogTimelineTableAction;

public static function table(Table $table): Table
{
    return $table
        ->actions([
            ActivityLogTimelineTableAction::make('Activities')
                ->limit(30),
        ]);
}
```

Full Timeline configuration
---------------------------

[](#full-timeline-configuration)

```
use Bestora\FilamentActivityLog\Actions\ActivityLogTimelineTableAction;

public static function table(Table $table): Table
{
    return $table
        ->actions([
            ActivityLogTimelineTableAction::make('Activities')
                ->withRelations(['profile', 'address'])
                ->timelineIcons([
                    'created' => 'heroicon-m-check-badge',
                    'updated' => 'heroicon-m-pencil-square',
                ])
                ->timelineIconColors([
                    'created' => 'info',
                    'updated' => 'warning',
                ])
                ->limit(10),
        ]);
}
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Acknowledgements
----------------

[](#acknowledgements)

Special acknowledgment goes to these remarkable tools and people (developers), the Activity Log plugin only exists due to the inspiration and at some point the use of these people's codes.

- [Jay-Are Ocero](https://github.com/199ocero/activity-timeline)
- [Alex Justesen](https://github.com/alexjustesen)
- [z3d0x](https://github.com/z3d0x/filament-logger)
- [Filament](https://github.com/filamentphp/filament)
- [Spatie Activitylog Contributors](https://github.com/spatie/laravel-activitylog#credits)

Credits
-------

[](#credits)

- [Rômulo Ramos](https://github.com/rmsramos) for the original Package
- [TappNetwork](https://github.com/TappNetwork) for the Filament v4 PR
- [Bestora](https://github.com/Bestora)
- [opencode](https://github.com/anomalyco/opencode) with Kimi K2.6
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance93

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 68.5% 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

35d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/33821c0ce303f9249cf574cd8e27826e8d097661cc6eaa7d653ae0ccef9d5254?d=identicon)[Bestora](/maintainers/Bestora)

---

Top Contributors

[![rmsramos](https://avatars.githubusercontent.com/u/5170473?v=4)](https://github.com/rmsramos "rmsramos (178 commits)")[![phpust](https://avatars.githubusercontent.com/u/9350475?v=4)](https://github.com/phpust "phpust (13 commits)")[![Bestora](https://avatars.githubusercontent.com/u/1472732?v=4)](https://github.com/Bestora "Bestora (7 commits)")[![paulohenriquesg](https://avatars.githubusercontent.com/u/312820?v=4)](https://github.com/paulohenriquesg "paulohenriquesg (6 commits)")[![howdu](https://avatars.githubusercontent.com/u/533658?v=4)](https://github.com/howdu "howdu (5 commits)")[![edeoliv](https://avatars.githubusercontent.com/u/76831154?v=4)](https://github.com/edeoliv "edeoliv (4 commits)")[![GeoSot](https://avatars.githubusercontent.com/u/22406063?v=4)](https://github.com/GeoSot "GeoSot (4 commits)")[![patrickwebsdev](https://avatars.githubusercontent.com/u/71416731?v=4)](https://github.com/patrickwebsdev "patrickwebsdev (4 commits)")[![Orphail](https://avatars.githubusercontent.com/u/38204752?v=4)](https://github.com/Orphail "Orphail (3 commits)")[![sparksp](https://avatars.githubusercontent.com/u/243893?v=4)](https://github.com/sparksp "sparksp (3 commits)")[![sugin223pl](https://avatars.githubusercontent.com/u/34408293?v=4)](https://github.com/sugin223pl "sugin223pl (3 commits)")[![swilla](https://avatars.githubusercontent.com/u/304159?v=4)](https://github.com/swilla "swilla (3 commits)")[![andreia](https://avatars.githubusercontent.com/u/38911?v=4)](https://github.com/andreia "andreia (3 commits)")[![makkinga](https://avatars.githubusercontent.com/u/3294611?v=4)](https://github.com/makkinga "makkinga (2 commits)")[![marcogermani87](https://avatars.githubusercontent.com/u/998645?v=4)](https://github.com/marcogermani87 "marcogermani87 (2 commits)")[![laravel-shift](https://avatars.githubusercontent.com/u/15991828?v=4)](https://github.com/laravel-shift "laravel-shift (2 commits)")[![alisalehi1380](https://avatars.githubusercontent.com/u/111766206?v=4)](https://github.com/alisalehi1380 "alisalehi1380 (2 commits)")[![atendwa](https://avatars.githubusercontent.com/u/125092307?v=4)](https://github.com/atendwa "atendwa (2 commits)")[![Muffinman](https://avatars.githubusercontent.com/u/1319568?v=4)](https://github.com/Muffinman "Muffinman (2 commits)")[![othyn](https://avatars.githubusercontent.com/u/7256684?v=4)](https://github.com/othyn "othyn (2 commits)")

---

Tags

laravelfilamentfilament-pluginactivitylogbestora

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/bestora-laravel-filament-activity-log/health.svg)

```
[![Health](https://phpackages.com/badges/bestora-laravel-filament-activity-log/health.svg)](https://phpackages.com/packages/bestora-laravel-filament-activity-log)
```

###  Alternatives

[rawilk/profile-filament-plugin

Profile &amp; MFA starter kit for filament.

3913.7k](/packages/rawilk-profile-filament-plugin)[mradder/filament-logger

Audit logging, activity tracking, exports, alerts, and dashboards for Filament admin panels.

2210.5k](/packages/mradder-filament-logger)[codewithdennis/filament-select-tree

The multi-level select field enables you to make single selections from a predefined list of options that are organized into multiple levels or depths.

327482.0k25](/packages/codewithdennis-filament-select-tree)[dotswan/filament-map-picker

Easily pick and retrieve geo-coordinates using a map-based interface in your Filament applications.

127173.7k3](/packages/dotswan-filament-map-picker)[croustibat/filament-jobs-monitor

Background Jobs monitoring like Horizon for all drivers for FilamentPHP

264298.4k8](/packages/croustibat-filament-jobs-monitor)[stephenjude/filament-jetstream

A Laravel starter kit built with Filament inspired by Jetstream.

17758.9k2](/packages/stephenjude-filament-jetstream)

PHPackages © 2026

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