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

Laravel Eventsauce Laravel Package

eventsauce/laravel-eventsauce

Laravel integration for EventSauce event sourcing. Wire message dispatchers, event repositories, and consumers into Laravel’s container with publishable config, queue-friendly dispatching, and conventions for aggregates and projections in Laravel applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • EventSauce is a framework-agnostic event sourcing library (aggregate roots, messages, message dispatchers, repositories). This package is thin glue: a Laravel service provider, publishable config, and container bindings that map EventSauce abstractions onto Laravel's IoC container and lifecycle.
  • It is not an event sourcing framework for Laravel — it does not add persistence, projections, or schema management on its own. It assumes you already have a message repository (Doctrine DBAL or custom) and a snapshot strategy. Fit is therefore high only for teams already committed to EventSauce or willing to adopt it; for teams wanting "event sourcing in Laravel," the package answers a smaller question than it appears to.
  • 0.5.0 upgrades the bridge to EventSauce 1.x. That is the material change: the glue now tracks the current major of the core library rather than a pre-1.0 contract, so the abstraction surface the bindings expose is the one the upstream documentation describes. This raises architectural fit for anyone starting today, because the bridge and the library it wraps are now on the same generation.
  • The glue surface remains small and conventional (service provider + config + bindings), which means it composes cleanly with standard Laravel patterns — queue workers for projections, Artisan commands for replay, container resolution in tests.

Integration feasibility

  • MIT licensed, small dependency footprint, standard composer require + php artisan vendor:publish flow. On a greenfield Laravel stack with a currently supported PHP version, integration is likely a sub-day task.
  • The previous blocker — a 2021-era bridge that predated Laravel 10/11 and PHP 8.2/8.3 — is at least partially addressed by a release that targets EventSauce 1.x. Whether the illuminate/* and PHP ceilings were also widened is not stated in the release notes and must be verified from composer.json before planning. The notes describe one change only: an upstream dependency upgrade.
  • 0.5.0 is a breaking release relative to 0.4.0 by construction: anything bound against EventSauce 0.x message dispatcher, message consumer, repository, or snapshot interfaces will not resolve against 1.x. If a sandbox or spike was built on 0.4.0, treat it as a rewrite of the wiring, not an upgrade.
  • Because the bridge is small, the fallback path remains cheap: a hand-written service provider replicating the bindings is a realistic alternative. That decision is now less obviously correct than before — see build-vs-consume below.

Technical risk

  • Abandonment risk is materially reduced. A new release exists, and it comes from the EventSauce project's own author. That is the strongest possible signal short of the package being adopted into the core library: the person who defines the interfaces is now maintaining the Laravel binding to them, which sharply reduces the divergence risk between bridge and core.
  • Bus factor remains the headline residual risk. The release notes credit a single contributor making a first contribution, the package is still versioned 0.x (no semver stability guarantee, breaking changes permitted between minors), and the release contains exactly one change. Do not read this as a maintenance cadence; read it as proof of life.
  • API-lag risk is now inverted. The bridge is current with EventSauce 1.x, but it is current only for the moment of release. The next risk is that EventSauce core moves to 2.x and the bridge lags again — the same pattern as before, one cycle later. Track the pin explicitly rather than assuming currency.
  • Low field validation persists: the release notes do not change the package's footprint in the ecosystem, and there is no evidence of new production adoption. Few dependents means few production war stories, few StackOverflow answers, and no de facto community support channel. Failure modes will still be debugged from source.
  • Vendor/lock-in risk is low — the package encodes few opinions, and anything it does encode is easily reimplemented. But note the version-pinning trap: adopting 0.5.0 pins the application to EventSauce 1.x, which is a larger and less reversible commitment than pinning the bridge itself.

Key questions

  • What Laravel and PHP versions does 0.5.0 declare support for? The release notes describe only the EventSauce upgrade; the illuminate/* and php constraints must be read directly from composer.json.
  • Does 0.5.0 include the EventSauce 1.x interface changes (message dispatcher, message consumer, aggregate root repository, snapshot repository) as-is, and does the published config change key names or binding shape?
  • Which Laravel and PHP versions are in scope for us today, and what is the upgrade horizon for the next 18 months?
  • Does the package (or its config) dictate message storage, table names, or snapshot handling, or is persistence fully delegated to our own repository implementation?
  • Are we adopting EventSauce 1.x deliberately, or is this package being evaluated as a standalone event sourcing solution?
  • Do we consume 0.5.0 directly, fork it, or write a first-party provider — and who owns that decision and its maintenance budget?
  • Do we need the package's generators/commands, or only the container bindings? (The answer materially changes build-vs-consume.)

Integration Approach

Stack fit

  • Follows standard Laravel package conventions: auto-discovered service provider, publishable config/eventsauce.php, container bindings for the message dispatcher, event dispatcher, and aggregate root repository. This is idiomatic and low-ceremony for Laravel teams.
  • Works naturally with Laravel's queue and scheduler for asynchronous projections and replays, and with the container for injecting repositories into handlers and tests.
  • The binding shape now reflects EventSauce 1.x contracts. That is good for fit and bad for anything written against the 0.x shape — config keys, constructor signatures, and injected interface names may all have moved.

Migration path

  • Preferred path for new adoption: consume 0.5.0 directly, contingent on the constraint audit. The strongest argument for forking has weakened — the bridge is current and maintained by the upstream author, so a fork now buys a maintenance burden rather than a fix.
  • If the constraint audit fails (Laravel or PHP ceiling too low for our matrix), the fallback ordering is unchanged: fork to internal/laravel-eventsauce and widen constraints, or reproduce the bindings in a first-party provider. Budget is small because the code volume is small.
  • If any 0.4.0 spike exists, migrate it deliberately: re-read the provider for changed binding keys, re-resolve every interface from the container, and re-run the vertical slice. Do not assume the wire format of previously persisted events survived the EventSauce 0.x → 1.x transition — verify serialization and upcasting before trusting existing data.
  • Either way, define persistence explicitly and early: message store schema, snapshot store, and serialization/upcaster strategy are ours to own and remain the actual long-term cost.

Compatibility

  • Inspect composer.json first: the eventsauce/eventsauce constraint should now resolve to 1.x, and the framework/PHP ceilings determine whether this is a drop-in or another fork. The release notes do not answer this.
  • Pin EventSauce core to a known 1.x minor and document that pin as a deliberate decision. The bridge now has a narrower supported window by definition — it was written against one point in the 1.x line.
  • Validate in CI against our exact PHP/Laravel combination, including container autowiring tests. Binding drift is still the most likely silent breakage, and it is now more likely during any EventSauce 1.x minor upgrade.
  • Cross-check the migration guide for EventSauce 1.x against our persistence implementation, not just against the bridge. Core upgrades of this kind often move responsibilities between the library and the repository.

Sequencing

  1. Constraint audit: read composer.json in 0.5.0 and verify Laravel/PHP support against our matrix. This gates everything below.
  2. Sandbox spike: install, publish config, confirm dispatcher and repository resolve from the container, and diff the published config against any 0.4.0 expectations.
  3. Persistence decision: message store (Doctrine DBAL vs. Eloquent/custom), table schema, snapshot policy, serialization format — validated against EventSauce 1.x contracts.
  4. Vertical slice: one aggregate, one command handler, one projection, one replay command, end to end.
  5. Build-vs-consume decision, informed by steps 1–4. Default to consuming; fork only on a failed constraint audit.
  6. Operational tooling: replay/rebuild commands, projection lag monitoring, idempotency guarantees in consumers.
  7. Standards: event naming, versioning, upcasting, and schema review process — this outlives the package choice.

Operational Impact

Maintenance

  • No longer effectively unmaintained, but not comfortably maintained either. One recent release with one change and one first-time contributor is a data point, not a cadence. Assign a named maintainer and schedule periodic compatibility reviews against Laravel and EventSauce releases regardless.
  • Ongoing cost is low in absolute terms (small code surface). Adopting directly instead of forking moves that cost from "we own a fork" to "we track upstream," which is cheaper — as long as the tracking is actually done.
  • Still 0.x. Treat every minor as potentially breaking and read the diff before bumping.

Support

  • Community support remains effectively absent: no evidence of new adopters, no active issue triage described. Rely on EventSauce documentation plus internal expertise; do not plan on external answers.
  • One genuine improvement: the bridge is now authored by the EventSauce maintainer, so questions about binding semantics have a plausible route to the person who owns the interfaces. Do not over-rely on that channel, but it is better than nothing.
  • Internal documentation of the bindings and the persistence contract is still essential, because the source remains the only reliable reference — and it now also encodes a specific point in the EventSauce 1.x line.

Scaling

  • The glue layer does not affect scaling. Throughput and latency are determined by the message store (database write patterns, indexing), projection consumers (queue workers, concurrency, ordering), and snapshot strategy.
  • Watch aggregate replay cost as event volume grows, and watch projection lag as a first-class SLI rather than an afterthought.
  • The EventSauce 1.x upgrade is the moment to re-benchmark the persistence layer, since repository contracts may have shifted in ways that affect batching and read patterns.

Failure modes

  • Version-pinning trap: adopting 0.5.0 pins the application to EventSauce 1.x while the bridge is the only thing tested against that specific minor. A core minor bump can now break resolution through the bridge.
  • Composer resolution failure on framework or PHP upgrades, breaking CI until the constraint is widened — still the most likely operational interruption, since the release notes say nothing about the framework ceiling.
  • Silent binding drift when EventSauce core interfaces change underneath a pinned bridge, now against a 1.x surface rather than 0.x.
  • Event payload incompatibility from the 0.x → 1.x transition if any pre-0.5.0 data or spikes exist; requires an upcasting layer or a rebuild.
  • Dual-write inconsistency between the event store and read models; requires outbox or transactional guarantees and idempotent consumers.
  • Replay storms saturating the database when rebuilding projections without throttling.
  • Schema/payload drift in stored events without an upcasting layer, producing unreadable history.
  • Knowledge concentration: one engineer understands the wiring, and their departure is a continuity risk. The single-contributor release note is a reminder that this risk exists upstream too.

Ramp-up

  • Low for Laravel developers to get the wiring working; moderate to high for the event sourcing model itself — aggregates, eventual consistency, versioning, upcasting, and replay semantics.
  • The EventSauce 1.x alignment helps here: the bridge now matches the documentation practitioners will actually read, so ramping engineers no longer have to mentally translate between a 2021 binding and current library docs. That was a real onboarding tax and it is now gone.
  • The package still removes boilerplate but teaches none of the concepts. Budget the majority of ramp-up time for event sourcing design and review practices, not for the integration.
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.
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource