A framework for building Elixir applications using the CQRS and Event Sourcing (CQRS/ES) pattern.
Commanded is an Elixir framework for building applications that follow the CQRS (Command Query Responsibility Segregation) and Event Sourcing (ES) patterns. It provides the infrastructure needed to handle commands, manage aggregates, process events, and run long-lived process managers, abstracting away the boilerplate so developers can focus on business logic.
Elixir developers and teams building complex, domain-driven applications that require scalability, auditability, and a clear separation between write and read models, such as financial systems, e-commerce platforms, or real-time collaboration tools.
Developers choose Commanded because it offers a battle-tested, production-ready foundation for CQRS/ES in Elixir, reducing implementation time and complexity while ensuring best practices. Its flexibility in event store integration and comprehensive feature set for command and event handling make it a go-to solution for event-sourced architectures.
Use Commanded to build Elixir CQRS/ES applications
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Commanded is battle-tested and used by companies in production, providing a reliable base for complex Elixir applications, as listed in its wiki.
Supports multiple event stores like PostgreSQL-based EventStore and EventStoreDB, allowing developers to choose based on scalability and operational needs.
Includes built-in process managers for coordinating long-running business processes, simplifying implementation of complex domain logic.
Abstracts command dispatch and event handling boilerplate, enabling developers to concentrate on core business rules, as emphasized in the philosophy.
Implementing CQRS/ES adds significant design complexity, making it overkill for straightforward applications without complex domain requirements.
Managing changes to event schemas over time requires careful upcasting and serialization customization, as noted in the guides, which can be error-prone.
Relies on event stores like EventStoreDB, introducing additional operational overhead and potential vendor lock-in compared to traditional databases.