Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Audit Laravel Package

moox/audit

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • Leverages Spatie’s ActivityLog: The package builds on top of Spatie Laravel ActivityLog, a battle-tested solution for tracking Eloquent model changes. This ensures compatibility with Laravel’s ecosystem and existing audit trail implementations.
  • Filament Integration: Designed for Filament (a modern Laravel admin panel), making it ideal for applications requiring a UI-driven audit log viewer without heavy frontend development.
  • Modular Design: The package follows Laravel’s conventions (publishable migrations/config), enabling plug-and-play adoption with minimal customization.
  • Limitation: No native support for non-Eloquent models or custom event-based logging (unlike Spatie’s core package).

Integration Feasibility

  • Low-Coupling: Works as a layered extension—does not modify core Laravel logic but extends Spatie’s ActivityLog.
  • Dependency Alignment:
    • Requires Laravel 10+ (based on last release date: 2026-02-20).
    • Filament 3.x (for UI integration).
    • Spatie/laravel-activitylog (implicit dependency).
  • Database Impact:
    • Adds a activity_logs table (shared with Spatie) and a audit_logs table (for Filament views).
    • Migration-friendly: Uses Laravel’s migration system for schema changes.

Technical Risk

Risk Area Assessment Mitigation Strategy
Version Skew Package targets Laravel 10+. Risk if using older LTS (e.g., 9.x). Validate compatibility via composer require or laravel/framework:^10.0.
Filament Dependency Breaks if Filament is not installed or version-mismatched. Document as a hard requirement in README/CHANGELOG.
Performance Heavy audit logs may slow queries (e.g., Activity::all()). Implement soft deletes, archiving, or query scopes post-integration.
Customization Limits UI is Filament-specific; may not fit non-Filament admin panels. Offer fallback views or API endpoints for custom frontends.
Data Model Conflicts Potential conflicts with existing activity_logs table (if using Spatie directly). Audit existing DB schema pre-install; use --force cautiously.

Key Questions

  1. Audit Scope:
    • Does the application need model-level (Spatie) or system-level (e.g., API calls, CLI) auditing?
    • If the latter, this package may require supplementation (e.g., Laravel’s logging channel).
  2. Filament Dependency:
    • Is Filament already in use? If not, is the team willing to adopt it solely for audit logs?
  3. Data Retention:
    • What’s the expected log volume and retention policy? (e.g., 6 months vs. indefinite).
  4. Custom Fields:
    • Are there non-standard audit fields (e.g., user IP, request payload) needed beyond Spatie’s defaults?
  5. Performance Baseline:
    • Has the team benchmarked ActivityLog queries under production load? If not, plan for indexing (created_at, subject_type).

Integration Approach

Stack Fit

  • Ideal For:
    • Laravel applications using Filament for admin panels.
    • Projects requiring real-time audit trails with minimal dev overhead.
    • Teams prioritizing UI-driven log exploration over raw API access.
  • Less Ideal For:
    • Headless APIs (no Filament).
    • Applications needing fine-grained event logging (e.g., Laravel Events, Queues).
    • Monolithic apps with legacy audit systems (e.g., custom tables).

Migration Path

  1. Pre-Integration:
    • Audit Existing Logs: Check for overlapping activity_logs tables (Spatie) or custom audit solutions.
    • Backup Database: Critical if migrating from a custom system.
    • Validate Filament: Ensure Filament is installed (composer show filament/filament).
  2. Installation:
    composer require moox/audit
    php artisan mooxaudit:install  # Handles migrations + config
    
    • Manual Alternative:
      php artisan vendor:publish --tag="audit-migrations"
      php artisan vendor:publish --tag="audit-config"
      php artisan migrate
      
  3. Post-Install:
    • Configure Logged Models: Update config/audit.php to specify models to audit (inherits Spatie’s config).
    • Filament Setup: Ensure the Audit resource is registered in app/Providers/Filament/AdminPanelProvider.php.
    • Test:
      • Create/update a model and verify logs appear in Filament.
      • Check for permission issues (Filament’s auth may block access).

Compatibility

Component Compatibility Notes
Laravel Tested on 10.x; may work on 11.x (check Spatie’s compatibility).
Filament Requires 3.x; UI may break on major Filament updates.
Spatie ActivityLog Hard dependency; conflicts if manually configured.
Database Supports MySQL, PostgreSQL, SQLite (via Spatie).
Caching No built-in caching; consider Activity::cache() for high-traffic apps.

Sequencing

  1. Phase 1: Core Integration (1–2 days)
    • Install package, configure models, verify Filament UI.
  2. Phase 2: Customization (0–3 days)
    • Extend audit fields (via Spatie’s logOnly/except).
    • Add Filament policies for access control.
  3. Phase 3: Optimization (Ongoing)
    • Index activity_logs table for large datasets.
    • Implement log archiving (e.g., Activity::whereDate() queries).

Operational Impact

Maintenance

  • Vendor Updates:
    • Automated: Use composer update moox/audit (test in staging first).
    • Risks: Filament/Spatie updates may require config tweaks.
  • Configuration:
    • Centralized in config/audit.php (e.g., log retention, model whitelists).
    • Backup: Publish config to version control.
  • Deprecation:
    • Monitor Spatie’s ActivityLog for breaking changes (this package is a thin layer).

Support

  • Troubleshooting:
    • Common Issues:
      • Missing logs → Verify model observers or Activity::enable().
      • Filament UI blank → Check audit-resource registration.
    • Debugging Tools:
      • php artisan audit:list (if available).
      • Spatie’s Activity::count() for data validation.
  • Documentation Gaps:
    • Limited customization examples (e.g., adding custom log fields).
    • Workaround: Reference Spatie’s docs for advanced use cases.

Scaling

  • Performance:
    • Reads: Optimize with created_at indexes and paginated Filament queries.
    • Writes: Batch inserts if auditing high-frequency models (e.g., Activity::log() in bulk).
    • Archiving: Implement a cron job to move old logs to cold storage (e.g., S3).
  • Horizontal Scaling:
    • Stateless: No session/process locks; safe for queues.
    • Database: Offload reads to a read replica if using Filament heavily.

Failure Modes

Scenario Impact Mitigation
Database Failure Logs lost if activity_logs corrupted. Enable database backups and Activity::log() retries.
Filament Downtime UI inaccessible but logs persist. Provide API fallback (e.g., /api/audit-logs).
Permission Errors Users can’t access audit logs. Configure Filament policies pre-launch.
Schema Conflicts Migration fails on existing tables. Use --force cautiously; document schema changes.
Package Abandonment No updates post-2026. Fork or migrate to Spatie + custom UI if critical.

Ramp-Up

  • Onboarding Time:
    • Developers: 2–4 hours (install + config).
    • DevOps: 1 hour (migrations + backups).
  • Training Needs:
    • Filament Basics: If
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
besmartand-pro/php-quality-config
sentix/ai-chatbot
terminal42/code-quality-tools
codifyo/ts-generator-bundle
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity