ecotone/pdo-event-sourcing
Full event sourcing for Ecotone, backed by your relational database via PDO: event-sourced aggregates and sagas, catch-up and streaming projections, event upcasting and replay. PostgreSQL and MySQL supported, with in-memory testing via EcotoneLite and no external infrastructure.
#[CommandHandler] CRUD-style handlers and later enable event-sourced aggregates without a rewrite. That reduces the cost of deferring the event-sourcing decision, which is usually the right call until you actually need auditability, replay, or temporal queries.Consider it when:
ecotone/ecotone; it is not a standalone library, and its value is inseparable from that ecosystem.Look elsewhere when:
NOASSERTION, which needs legal review before adoption; a package that is a read-only mirror also means issues and fixes route through a separate monorepo.ecotone/ecotone package; maturity currently reads as documentation-only on this package page.For executives (one paragraph): This is a low-cost option to add event sourcing and durable workflows to a PHP system using the PostgreSQL or MySQL database we already run, instead of standing up a new event-store platform. The strategic value is optionality — we can introduce audit trails and multi-step workflows now and grow into full event sourcing later without rewriting the codebase. The primary risks are vendor/community maturity (a young ecosystem with little third-party adoption), an unclear license that requires legal sign-off, and the fact that it only pays off if we commit to the Ecotone framework. Recommendation: treat it as a time-boxed pilot on one bounded domain, with a documented exit path, not a platform-wide standard.
For engineering leadership: The package gives us the commodity parts of event sourcing — aggregate repository, upcasting for schema evolution, projections with replay, and durable sagas — backed by PDO, so no new operational surface. The cost is adoption of Ecotone's attribute-driven programming model and a small dependency ecosystem; we should pin versions, own the operational runbook for projection lag and replay, and validate the license. Success criteria for the pilot: p95 command latency at expected write volume, replay correctness on a schema change, and a saga surviving a mid-flight process restart.
For the delivery team: Day one can look like ordinary command handlers; event sourcing is enabled per-aggregate. That keeps the learning curve incremental and lets us ship value before committing the whole domain.
How can I help you explore Laravel packages today?