happyr/event-tracker-bundle
HappyR EventTrackerBundle is a Symfony bundle for recording and managing application events. It integrates with Doctrine to persist tracked events and provides services for capturing user activity, logging actions, and building simple analytics.
Architecture fit — the headline finding is a framework mismatch. happyr/event-tracker-bundle is a Symfony bundle, not a Laravel package. It ships a Bundle class, DI extension, and compiler passes, and it expects the Symfony kernel, service container, and event dispatcher. There is no service provider, no config/ publishable config, no facade, and no Laravel-compatible autoloading contract. In a Laravel codebase this is not "install and configure" — it is "port," and a port of a four-star, zero-dependent package is almost never the right trade.
Beyond the framework issue, the package's domain is generic: capture domain events (user registered, order placed) and persist them for later inspection. That is a ~200-line concern, and Laravel already provides the two primitives it needs — the event dispatcher and the queue — plus mature alternatives.
Integration feasibility: low. The realistic bridge would require:
At that point you have rewritten the package and inherited its API as a constraint. For a package with 4 stars and 0 dependents, there is no ecosystem to inherit value from.
Technical risk: high, concentrated in abandonment.
Key questions to resolve before any code is written:
spatie/laravel-activitylog (mature, actively maintained, Laravel-native) or plain Laravel events + a listener?Stack fit: none, as shipped. The package targets Symfony 3.4/4.x on PHP 7.x with Doctrine ORM 2.x. A current Laravel application is on PHP 8.2+ with Eloquent and a different container, dispatcher, and configuration model. There is no overlapping supported version window — not a narrow fit, a disjoint one.
Recommended path: do not integrate. Re-implement the concept natively. The correct TPM recommendation is a build decision, and the build is small:
tracked_events table (id, event name, subject_type/subject_id polymorphic, payload JSON, actor_id, ip, occurred_at) plus a listener registered against Event::listen('*') or explicit domain events, dispatched onto a queue. Fully owned, no fork, no abandoned dependency.spatie/laravel-activitylog. Maintained, Laravel-native, well documented, handles the polymorphic subject and causer model.Migration path. There is no migration from an existing installation to perform — no dependents exist and you are not currently running it. The "migration" is conceptual: extract the data model and event-capture semantics (which are conventional and well understood), then discard the Symfony plumbing entirely. Treat the package as design reference, not a dependency. Do not add it to composer.json, even temporarily, for a spike — a discarded composer.json entry is cheap, but a spike that produces working code in the repo creates adoption pressure by inertia.
Compatibility and sequencing.
try/catch and make tracking failure non-fatal by construction.Maintenance. This is the deciding factor. Adopting the bundle imports a dependency with no upstream maintainer activity since November 2020. Every PHP or framework upgrade becomes a fork-maintenance task, and your team becomes the de facto maintainer of a package it did not write and does not understand. The native alternative has near-zero maintenance — it is application code your team wrote and can read. On a 4-star/0-dependent package, the expected maintenance cost over a two-year horizon exceeds the entire original build cost several times over.
Support. No commercial support, no active issue triage, no security advisory channel. Internal queries go unanswered. Compare to spatie/laravel-activitylog, which has a maintainer team and a documentation site — a materially different support posture for the same functional outcome.
Scaling. The pattern the bundle encourages — a synchronous write per tracked event — scales poorly and predictably:
Mitigation is architectural, not package-level: queue the writes, batch-insert, partition or archive by month, and set an explicit retention window from day one. None of this is provided by the package, so you build it either way — reinforcing the case for building it on a foundation you control.
Failure modes to design against explicitly.
payload can capture tokens, passwords, or health data. Deny-list attributes at the serialization boundary; never serialize raw request bodies.Ramp-up. Low for the native path — Laravel events, queues, and Eloquent are skills the team already has, and a new engineer reads the whole feature in an afternoon. Ramp-up for a ported Symfony bundle is high and non-transferable: engineers must learn an unfamiliar DI/compiler-pass idiom to maintain code that exists only in your fork. That knowledge has no value outside this one feature, which is precisely the kind of cost a TPM should refuse.
Bottom line. Recommend do not adopt. Re-implement the concept natively in 1–2 engineer-days, or adopt spatie/laravel-activitylog if the need is specifically audit/activity feed. Cite the framework mismatch, the 2020 abandonment, and the zero-dependent ecosystem as the three independent reasons the risk is unmitigated.
How can I help you explore Laravel packages today?