muhammadsadeeq / laravel-activitylog-ui
A beautiful, modern UI for Spatie's Activity Log with advanced filtering, analytics, and real-time features.
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Language:Blade
Requires
- php: ^8.1
- illuminate/contracts: ^10.0|^11.0|^12.0
- spatie/laravel-activitylog: ^4.8
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0|^10.0
- phpunit/phpunit: ^10.1
Suggests
- barryvdh/laravel-dompdf: Required for exporting activity logs to PDF format.
- maatwebsite/excel: Required for exporting activity logs to XLSX format.
README
Beautiful, modern UI for Spatie's Activity Log
Important: This package assumes you already have Spatie's Activity Log installed and configured in your Laravel application. It does not replace the logging package—only provides a powerful UI for viewing and analyzing the stored activities.
✨ Features
- Table, Timeline & Analytics dashboards
- Powerful filter panel (date presets, events, users, subjects, search)
- Saved views, per-page & sorting preferences
- Export to CSV / Excel / PDF / JSON
* Optional Excel & PDF exports require additional packages (see below) - Real-time count & pagination powered by Laravel cache
- Authorization gate, middleware & granular access lists
- Tailwind CSS & Alpine.js – no build step required
🗒️ Requirements
- PHP ≥ 8.1
- Laravel 10 | 11 | 12
- spatie/laravel-activitylog ≥ 4.8 (already logging your activities)
- Database table
activity_log
with Spatie’s default columns
Optional (for export)
Feature | Package | Version |
---|---|---|
Excel (XLSX) | maatwebsite/excel |
^3.1 |
barryvdh/laravel-dompdf |
^2.0 |
Add them when you need those formats:
composer require maatwebsite/excel barryvdh/laravel-dompdf
🚀 Installation
- Install the package
composer require muhammadsadeeq/laravel-activitylog-ui
- (Optional) Publish resources
# Config file (config/activitylog-ui.php) php artisan vendor:publish --provider="MuhammadSadeeq\ActivitylogUi\ActivitylogUiServiceProvider" --tag="activitylog-ui-config" # Blade views (if you want to customise) php artisan vendor:publish --provider="MuhammadSadeeq\ActivitylogUi\ActivitylogUiServiceProvider" --tag="activitylog-ui-views" # Public assets (logo, js, css) php artisan vendor:publish --provider="MuhammadSadeeq\ActivitylogUi\ActivitylogUiServiceProvider" --tag="activitylog-ui-assets"
- Run migrations
Ensure you have already run Spatie’s migrations so theactivity_log
table exists:php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="activitylog-migrations" php artisan migrate
- Visit the UI
/activitylog-ui # default route prefix
⚙️ Configuration Overview
A full configuration file is published to config/activitylog-ui.php
. Below is a quick reference:
return [ 'route' => [ 'prefix' => 'activitylog-ui', // URL prefix 'middleware' => null, // Auto-detected or custom array ], 'authorization' => [ 'enabled' => false, // true => uses Gate / auth middleware 'gate' => 'viewActivityLogUi', ], 'access' => [ 'allowed_users' => [], // user email whitelist 'allowed_roles' => [], // role names (Spatie Permission, etc.) ], 'features' => [ 'analytics' => true, 'exports' => true, 'saved_views' => true, ], 'exports' => [ 'enabled_formats' => ['csv', 'xlsx', 'pdf', 'json'], 'max_records' => 10000, 'queue' => [ 'enabled' => false, 'threshold' => 1000, 'queue_name'=> 'exports', ], ], ];
Refer to the inline comments in the file for every available option.
🔐 Authorization & Access Control
- Gate:
viewActivityLogUi
is auto-registered (seeActivitylogUiServiceProvider
). You may define it in your own code or rely on the package’s default email/role checks. - Toggle authentication: Set
authorization.enabled
totrue
to require login + gate. - Granular lists:
access.allowed_users
andaccess.allowed_roles
let you open the UI to a subset of users—regardless of the gate.
📤 Exports
- CSV & JSON work out-of-the-box.
- Excel (XLSX) requires
maatwebsite/excel
– otherwise we gracefully fall back to CSV. - PDF requires
barryvdh/laravel-dompdf
– otherwise we fall back to JSON. - Large exports can be queued; enable
exports.queue.enabled
.
📈 Analytics Dashboard
Enable/disable with features.analytics
. Caches stats for analytics.cache_duration
seconds (default 1 h).
🤝 Contributing
PRs and issues are welcome!
📝 License
The MIT License (MIT). See LICENSE
for details.