Skip to content

ecotoneframework/documentation

Repository files navigation

About

CQRS, Event Sourcing, Workflows, and Production Resilience for Laravel and Symfony

Add production-grade architecture to your existing framework with a single Composer package. No framework change. No base classes. Just PHP attributes.


What problem does Ecotone solve?

Your app grew, your architecture didn't

Controllers doing too much. Business logic scattered across listeners, services, and middleware. Every change risks breaking something unrelated. Testing requires bootstrapping the entire framework.

Ecotone introduces clear separation — Command Handlers for writes, Query Handlers for reads, Event Handlers for reactions. Each has a single responsibility, wired automatically through PHP attributes.

Async processing is fragile

Failed jobs disappear silently. There's no retry strategy beyond "try again 3 times." You can't replay failed messages or see what's stuck in the queue. Going async required touching every handler.

Ecotone provides production resilience — automatic retries, error channels, dead letter queues, outbox pattern, and idempotency. All declarative via attributes, with a single attribute to make any handler async.

Enterprise patterns feel out of reach in PHP

You've seen CQRS, Event Sourcing, and Sagas in Java and .NET ecosystems. Every PHP implementation requires rewriting your application or adopting an opinionated framework.

Ecotone brings these patterns to your existing stack — works with Laravel (Eloquent, Queues, Octane) and Symfony (Doctrine, Messenger Transport) without requiring a framework change. No base classes to extend, no interfaces to implement.


Choose your path

Laravel developers — Keep Eloquent, add enterprise messaging.
Start with Laravel Quick Start or Laravel Module docs.

Symfony developers — Go beyond Symfony Messenger.
Start with Symfony Quick Start or Symfony Module docs.

Other PHP frameworks — Use Ecotone with any PHP application.
Start with Ecotone Lite docs.

Architects — PHP can do what Spring and Axon do.
Read Why Ecotone? to understand the positioning.


How it works

  1. Install via Composercomposer require ecotone/laravel or ecotone/symfony-bundle
  2. Add attributes to your code — Mark methods as Command Handlers, Event Handlers, or Queries using PHP attributes
  3. Ecotone wires the messaging — Message buses, async channels, retries, and event sourcing are handled automatically

Get started in minutes

{% hint style="info" %} Built on Enterprise Integration Patterns. Used in production by teams running multi-tenant, event-sourced systems at scale. {% endhint %}

{% hint style="success" %} Join Ecotone's Community Channel, and ask questions there. {% endhint %}

About

Ecotone documentation https://docs.ecotone.tech

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors