Weave 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

Auditable Bundle Laravel Package

zhortein/auditable-bundle

An auditing package for Laravel applications that automatically tracks model changes. It logs create, update, and delete events with changed attributes, original values, user IDs, and timestamps, making it easy to see who changed what and when. Simple configuration and Eloquent integration.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

  • Architecture fit: The package is Doctrine/Symfony-oriented, not Laravel-native. It fits a Laravel/PHP application only if the app already uses Doctrine ORM 3, can bridge Symfony Security concepts, and wants application-owned audit storage. Typical Eloquent-only Laravel applications should treat this as a poor architectural fit without a significant adapter layer.
  • Integration feasibility: The default legacy mode preserves the existing AuditEntry mapping, audit_entry table, integer identifier, automatic listener, and fail-open behavior, so existing Doctrine users may upgrade with low immediate schema impact. New strict transactional mode requires the application to supply its own audit entity, factory, storage, and PSR-20 clock, which increases design and ownership effort.
  • Technical risk: Breaking dependency requirements are substantial: Doctrine ORM 2 is dropped, Doctrine ORM 3 is required, DoctrineBundle 2.19/3.x is required, PHP 8.3+ is required, and Symfony 7.4/8.x is required. In a Laravel context, DoctrineBundle and Symfony Security dependencies are especially important because they are not part of the default Laravel stack. Strict fail-closed behavior can turn audit-storage failures into business-transaction failures. Legacy fail-open behavior can silently lose audit evidence. No hidden flush or transaction control means transaction boundaries remain an application responsibility.
  • Key questions: Do we actually run Doctrine ORM 3, or is this an Eloquent-based Laravel app? Is DoctrineBundle a hard runtime dependency or only a test/integration dependency? Which Laravel versions and service-provider patterns are supported? Do we need strict transactional audit, or is legacy fail-open acceptable? Who owns the audit entity, migrations, retention, and schema lifecycle? How will Symfony Security actor resolution map to Laravel authentication and impersonation? Which databases beyond PostgreSQL 16 are supported in practice? Can we tolerate fail-closed audit outages for regulated workflows?

Integration Approach

  • Stack fit: Treat as conditional. Good fit for Doctrine-based PHP/Symfony-leaning systems; weak fit for standard Laravel Eloquent applications. If the application is Laravel-first, require a technical spike proving Doctrine ORM, DoctrineBundle compatibility, Symfony Security bridging, and audit-storage wiring before committing.
  • Migration path: Upgrade runtime prerequisites first: PHP 8.3+, Doctrine ORM 3, DoctrineBundle 2.19/3.x, and Symfony 7.4/8.x. Install 2.0.0 without enabling transactional-only mode to preserve legacy mapping and avoid mandatory database migration. Validate legacy behavior in staging, then decide whether to adopt strict mode. For strict mode, implement the application-owned audit entity, factory, storage, migrations, PSR-20 clock, actor resolution, and explicit transaction boundaries before production rollout.
  • Compatibility: Confirm Laravel version support, service-provider/bootstrap integration, Doctrine lifecycle hooks, database driver support, and authentication/impersonation mapping. The release validates PostgreSQL 16 transactional behavior; do not assume equivalent atomicity proof for MySQL, MariaDB, SQLite, or other databases without independent testing. Confirm whether DoctrineBundle is genuinely required at runtime in Laravel or can be avoided.
  • Sequencing: 1) Inventory current PHP, Laravel, Doctrine, Symfony, and database versions. 2) Run a non-production compatibility spike. 3) Upgrade PHP and Doctrine dependencies. 4) Install package in legacy mode and verify existing audit records. 5) Build strict-mode audit entity/storage/factory/clock in a feature branch. 6) Add transaction, rollback, failure, and impersonation tests. 7) Run parallel validation in staging. 8) Roll out strict mode behind configuration, with rollback to legacy mode. 9) Decommission legacy mapping only after audit evidence and retention requirements are satisfied.

Operational Impact

  • Maintenance: Ongoing maintenance will track PHP 8.3–8.5, Symfony 7.4/8.x, Doctrine ORM 3, and DoctrineBundle compatibility. PHPStan 2 at maximum level and Composer security audit are positive quality signals, but the narrow dependency matrix means upgrades may be coupled and non-trivial.
  • Support: Expect limited Laravel-native support. Teams will need internal ownership for Doctrine integration, Symfony Security bridging, audit schema migrations, transaction policy, and upgrade documentation. The UPGRADE-2.0.md guidance should be mandatory reading before enabling transactional-only mode.
  • Scaling: Audit writes add transaction latency, storage growth, and indexing pressure. Application-owned storage gives flexibility but shifts capacity planning and retention design to the team. Deterministic UUID and composite identifiers help with audit correlation, but high-volume audit paths need load testing and retention/archival policy.
  • Failure modes: Strict mode is fail-closed: audit-storage unavailability can block business transactions. Legacy mode is fail-open: audit writes may be missed without blocking business operations. Other risks include misconfigured transaction boundaries, missing actor/impersonation context, Doctrine mapping conflicts, missing migrations, unsupported database behavior outside PostgreSQL, and silent legacy fallback if strict mode is not explicitly configured.
  • Ramp-up: Allocate ramp-up for Doctrine ORM 3, Symfony Security actor resolution, PSR-20 clock wiring, audit entity/storage design, and transaction-failure testing. TPM should require a runbook covering strict-mode enablement, rollback to legacy mode, audit outage response, retention/legal hold, and evidence validation before production adoption.
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.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
adachsoft/php-code-style