muhammadsadeeq/laravel-activitylog-ui
Modern UI for Spatie laravel-activitylog: table, timeline and analytics dashboards with powerful filters, saved views, exports (CSV/Excel/PDF/JSON), caching for fast counts/pagination, and authorization controls. Tailwind + Alpine, no build step.
laravel-activitylog (v5+) is installed and configured with migrations run (php artisan migrate).composer require muhammadsadeeq/laravel-activitylog-ui
php artisan vendor:publish --provider="MuhammadSadeeq\ActivitylogUi\ActivitylogUiServiceProvider" --tag="activitylog-ui-config"
/activitylog-ui in your browser. No additional setup is required for basic functionality.Debugging a User Action:
deleted, updated).title from "Old Value" to "New Value") and custom properties (e.g., source_ip).Dynamic Filtering: Use the filter panel (collapsible sidebar) to narrow down activities by:
created, deleted).causer_id (who performed the action) and subject_id (what was acted upon).description, properties, and attribute_changes.event=deleted AND user=admin@example.com) for granular queries.Analytics Dashboard:
Enable via config/activitylog-ui.php:
'features' => [
'analytics' => true,
]
View:
Post, User).deleted events).maatwebsite/excel), PDF (requires barryvdh/laravel-dompdf), JSON.updated activities from the last month to XLSX for a compliance report.config/activitylog-ui.php:
'exports' => [
'queue' => [
'enabled' => true,
'threshold' => 5000, // Queue if >5000 records
],
]
exports). Useful for avoiding timeouts.'authorization' => [
'enabled' => true,
'gate' => 'viewActivityLogUi',
]
Define the gate in App\Providers\AuthServiceProvider:
Gate::define('viewActivityLogUi', function ($user) {
return $user->isAdmin(); // Custom logic
});
'access' => [
'allowed_users' => ['admin@example.com'],
'allowed_roles' => ['super-admin'], // Spatie Permission package
]
php artisan vendor:publish --tag="activitylog-ui-views"
resources/views/vendor/activitylog-ui/layouts/app.blade.php to add headers/footers.resources/views/vendor/activitylog-ui/partials/activity-table.blade.php to add columns (e.g., ip_address).php artisan vendor:publish --tag="activitylog-ui-assets"
Add custom CSS to resources/css/activitylog-ui.css:
@layer components.activitylog-ui {
.activitylog-ui .custom-badge {
background-color: #10b981;
}
}
resources/js/activitylog-ui/filters.js (e.g., add a custom filter for status=pending).$user->logActivity('post.updated', $post);
$user->logActivity('post.updated', $post, [
'source' => 'admin_panel',
'ip_address' => request()->ip(),
]);
Missing activity_log Table:
Table 'activity_log' doesn't exist.php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="activitylog-migrations"
php artisan migrate
PHP 8.4+ Required:
Your PHP version (8.1) is not supported by this package.Attribute Changes Column Missing:
laravel-activitylog <5.0 won’t show attribute_changes.properties.old/properties.attributes).Export Failures:
Class 'Maatwebsite\Excel\Facades\Excel' not found.composer require maatwebsite/excel
Authorization Conflicts:
allowed_users access are still blocked by the gate.authorization.enabled = false).Performance with Large Datasets:
id sorting (default in v2+) instead of created_at.Check API Responses:
Network tab) and inspect /activitylog-ui/api/activities for errors.500 Internal Server Error responses to identify backend issues (e.g., missing columns).Enable Debug Logging:
Add to config/activitylog-ui.php:
'debug' => [
'enabled' => true,
'log_level' => 'debug',
]
Check storage/logs/laravel.log for detailed queries and errors.
Clear Cache:
php artisan cache:clear
php artisan view:clear
Timeline View Glitches:
created_at is indexed in your activity_log table:
Schema::table('activity_log', function (Blueprint $table) {
$table->index('created_at');
});
Add Custom Columns to Table View:
resources/views/vendor/activitylog-ui/partials/activity-table.blade.php:
<th>IP Address</th>
<!-- ... -->
<td>{{ $activity->properties['ip_address'] ?? '-' }}</td>
Modify Filter Panel:
How can I help you explore Laravel packages today?