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 Like Laravel Package

bnnvara/event-like

A Laravel package from BNNVARA that adds like functionality to events, providing traits, migrations, and Eloquent relationships so users can like or unlike events with simple methods for toggling and counting likes.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The central finding is a stack mismatch: this is packaged as a Symfony bundle, not a Laravel package. Laravel does not load Symfony bundles — it has no bundle registration, no Extension/CompilerPass lifecycle, and no bundle config tree. Laravel sits on top of individual Symfony components (HttpFoundation, Console, VarDumper, etc.), but a bundle is a framework-level packaging construct that has no equivalent in Laravel's service-provider model. Any reuse therefore requires either (a) consuming only the underlying domain classes if they are framework-agnostic, or (b) porting the bundle's wiring into an Illuminate\Support\ServiceProvider. Neither is a drop-in path. Additionally, the name "event-like" and the description "like events" are ambiguous — it is unclear whether this emits domain events for like/unlike actions, provides a persistence model for likes, or both. That ambiguity must be resolved before any fit assessment is credible.

Integration feasibility. Low as-is, moderate as a concept source. A Symfony bundle typically assumes symfony/event-dispatcher contracts, a DI container with tagged services, and often Doctrine for persistence. Laravel's dispatcher implements Illuminate\Contracts\Events\Dispatcher (and PSR-14 in recent versions), but the contracts and the tagging/auto-configuration mechanisms differ. If the package's core logic is thin — an event class plus a listener — the port is a day of work. If it carries Doctrine entities, repositories, and a bundle Extension class, the port is a genuine refactor with schema and transaction-semantics implications. Without the source audited, treat feasibility as unknown-leaning-negative.

Technical risk. High, driven by supply-chain signals rather than code: zero stars, zero dependents, a Bitbucket-hosted repo (no Packagist visibility, no public issue surface), and no evidence of CI, tests, or release cadence. Effectively a bus factor of one with no downstream validation — nobody else has shipped this. Licensing and PHP/Symfony version constraints are unverified. Adopting it directly into a Laravel service would introduce a dependency we cannot support, patch, or reason about under incident pressure.

Key questions.

  • What is the actual domain surface: event classes only, or entities/repositories/migrations too?
  • Which Symfony and PHP versions are constrained, and does it depend on Doctrine?
  • Is the "like" concept generic (any likeable entity) or hardcoded to a specific model?
  • What is the license, and is the Bitbucket repo accessible to our org for forking?
  • Is there any test suite, and does it exercise idempotency and duplicate-like behavior?
  • Who maintains it, and is there any commit activity in the last 12 months?

Integration Approach

Stack fit. Poor by default. Laravel's idiomatic equivalent — Event::dispatch(), ShouldQueue listeners, model observers, and a likes polymorphic pivot — is well-trodden and requires no third-party bundle. Before sponsoring a port, the TPM question is: what does this package give us that 150 lines of first-party code would not? If the answer is "nothing structural," build in-house.

Migration path. If we proceed, the only defensible route is extract-and-adopt, not install-and-use: vendor the source into an internal namespace, strip the bundle Extension/Configuration classes, and re-expose the services through a Laravel service provider with explicit bindings. Do not attempt to run Symfony's DI compilation inside Laravel. If persistence is Doctrine-based, replace with Eloquent models and our own migrations rather than bridging ORMs.

Compatibility. Verify PHP constraint against our runtime, confirm no symfony/framework-bundle requirement leaks into production autoload, and confirm PSR-14 compatibility if we intend to keep the event classes unmodified. Treat any Doctrine dependency as a blocker requiring a rewrite, not a bridge.

Sequencing.

  1. Read-only source audit (half day) — resolve the ambiguity in the description and inventory dependencies.
  2. Decision gate: adopt-as-port vs. build-first-party. Default to build-first-party unless the audit surfaces non-trivial logic.
  3. If porting: isolate event classes behind our own interfaces so the vendor code is swappable, then implement persistence natively.
  4. Ship behind a feature flag with a kill switch to first-party dispatch.

Operational Impact

Maintenance. Effectively unmaintained from our perspective. Zero dependents means no community pressure to fix breakage; a Bitbucket repo means we cannot rely on Packagist versioning, security advisories, or Dependabot visibility. Any fork we create becomes permanently ours to own — budget ongoing ownership, not a one-time integration.

Support. No documentation surface, no issue tracker we can file against, no upstream SLA. Internal support means reverse-engineering the source, which raises the cost of every future incident and every new engineer's onboarding.

Scaling. If the package dispatches synchronously inside the request cycle, each like becomes an in-line write plus listener execution — acceptable at low volume, a contention point under viral or bot-driven traffic. Verify whether listeners are queued; if not, wrap dispatch in a job. Watch for missing uniqueness constraints on the like pivot, which is the classic duplicate-row failure at scale.

Failure modes.

  • Duplicate likes from absent or non-atomic uniqueness enforcement.
  • Lost events if dispatch occurs outside the transaction boundary and the write rolls back.
  • Dispatch storms from unqueued fan-out listeners on high-traffic entities.
  • Silent divergence if we fork and upstream later changes — no merge path exists.
  • Autoload pollution if Symfony framework packages leak into the production dependency graph.

Ramp-up. Two to three days for a competent Laravel engineer to audit and either port or replace, assuming the source is accessible. The real ramp-up cost is organizational: establishing that this package is a reference implementation, not a dependency, and ensuring no engineer later runs composer require against it. Codify that decision in an ADR so it survives team turnover.

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.
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator