laravel-appkit/blameable
Laravel AppKit Blameable automatically tracks who created, updated, or deleted Eloquent models, filling blame columns without extra code. Lightweight and easy to drop into existing apps for simple audit trails.
created_by / updated_by / deleted_by relationships to Eloquent models, which underpins support workflows ("who deleted this record?"), admin tooling, and record-ownership displays without custom plumbing.deleted_by is captured, decisions about restore/recovery UX (who can restore what, with what trail) become implementable rather than theoretical.Adopt when:
Look elsewhere when:
user_id ambiguous (e.g., system jobs, impersonating admins, service accounts) — verify the fallback semantics fit before committing.Release signal (v1.2.0): maintenance-only release — dependency bumps, a modernized test matrix, and PHP 8.4 support. No new features, no breaking changes, no deprecations. Treat it as evidence of healthy upkeep and current-version compatibility, not as a capability upgrade.
For executives: This is a small, low-risk open-source component that answers a question every support and compliance conversation eventually hits — who changed this record? Buying it (free, OSS) costs us a dependency instead of engineering days, and the latest release confirms it runs on our current PHP version and is actively maintained. It does not by itself satisfy an audit or compliance requirement; it's one building block, and if a formal audit trail enters the roadmap we'll need a dedicated solution alongside it.
For engineering: A single trait plus three nullable foreign keys gives you created_by / updated_by / deleted_by relations and helpers across models, with no opinion imposed on the rest of your schema. v1.2.0 is a hygiene release — dependency updates, testbench/phpunit bumps, and PHP 8.4 compatibility — so upgrading is low-risk and there are no migration or API changes. Caveat worth validating in a spike: attribution relies on model events, so bulk writes, DB::table() updates, and queued jobs without an authenticated user will need a deliberate fallback (system user or null) if you depend on these columns for reporting.
How can I help you explore Laravel packages today?