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

Event Tracker Bundle Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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:

  • A Laravel service provider wrapping the tracker service and binding its interfaces.
  • Replacing the Doctrine ORM entity/repository with Eloquent or a raw query builder repository.
  • Reimplementing or discarding the bundle's schema-creation listener as a Laravel migration.
  • Re-pointing its logger dependency at Laravel's PSR-3 logger binding.
  • Replacing Symfony-event-dispatcher wiring with Laravel listeners.

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.

  • Last release 2020-11-11. That predates PHP 8.1, 8.2, and 8.3. Expect deprecation noise at minimum and hard incompatibilities (implicit nullable params, dynamic properties, Doctrine DBAL 3/4 API changes) at worst.
  • Bus factor of effectively one, maintained as a consultancy's internal tooling ("Happyr" is a Symfony-focused agency). No security policy, no release cadence, no issue triage signal.
  • Zero dependents means no downstream pressure to keep it working and no community to answer questions.
  • License is clean (MIT) — this is the one low-risk dimension and it does permit forking.
  • Scoring agrees: composite 0.05 with an opportunity score of 1.09. The opportunity signal is the only mildly positive number and likely reflects "event tracking is a real need," not "this package addresses it."

Key questions to resolve before any code is written:

  1. What is the actual requirement — audit/compliance log, product analytics funnel, or debugging breadcrumbs? These have different retention, schema, and privacy answers, and only the first is well served by a database table.
  2. Is PII flowing through tracked events? A 2020-era package will have no GDPR data-deletion hooks, and an unbounded event table is a compliance liability.
  3. Does tracking sit on the request path or off it? If the former, synchronous DB writes are a latency and availability risk.
  4. Who owns the fork? If the answer is "nobody specifically," the answer to adoption is no.
  5. Has anyone evaluated spatie/laravel-activitylog (mature, actively maintained, Laravel-native) or plain Laravel events + a listener?

Integration Approach

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:

  • Option A (preferred, ~1–2 engineer-days): 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.
  • Option B (if the need is activity feeds/audit, ~0.5 day): adopt spatie/laravel-activitylog. Maintained, Laravel-native, well documented, handles the polymorphic subject and causer model.
  • Option C (only if a specific Symfony-only behavior is genuinely required): fork and port. Budget 3–5 days including tests, and accept permanent ownership of a dead upstream.

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.

  1. Requirements spike (1 day): classify the need per the key questions; confirm retention and PII posture with whoever owns compliance.
  2. Build-vs-buy decision record: document why the native path wins, with the abandoned-upstream risk as the deciding factor.
  3. Schema and migration: design the table before the listener; retention/partitioning decisions here dictate future operational cost.
  4. Capture layer: listener + queue job; wrap in try/catch and make tracking failure non-fatal by construction.
  5. Consumption layer: whatever reads the data — admin UI, export, or BI sync — built last, because it is the part most likely to change.

Operational Impact

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:

  • Write amplification: every user action becomes an insert. At high traffic this dominates DB write load.
  • Table growth: unbounded. Without retention policy or partitioning, the table becomes the largest in the schema within months and slows every query that touches it.
  • Index pressure: polymorphic subject lookups plus time-range queries need composite indexes designed up front.

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.

  • Tracking failure breaks the request. Highest-severity mode. A DB timeout or schema drift inside a synchronous listener takes down checkout. Decouple via queue; fail open, never closed.
  • Silent data loss. If tracking is queued and the worker dies, events vanish with no alert. Emit a heartbeat metric and alert on queue depth and job failure rate.
  • PII leakage into JSON payloads. Serializing a full model into payload can capture tokens, passwords, or health data. Deny-list attributes at the serialization boundary; never serialize raw request bodies.
  • Unbounded growth → disk-full incident. Retention job is a launch requirement, not a follow-up ticket.
  • PHP 8 incompatibility at upgrade time. Only relevant if you fork; it is the specific failure the build decision avoids.

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.

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.
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle