commanded alternatives and similar packages
Based on the "Framework Components" category.
Alternatively, view commanded alternatives based on common mentions on social networks and blogs.
plug9.9 6.7 commanded VS plugCompose web applications with functions
surface9.8 7.4 commanded VS surfaceA server-side rendering component library for Phoenix
ex_admin9.7 0.0 commanded VS ex_adminExAdmin is an auto administration package for Elixir and the Phoenix Framework
torch9.4 7.1 commanded VS torchA rapid admin generator for Elixir & Phoenix
addict9.2 0.0 commanded VS addictUser management lib for Phoenix Framework
phoenix_html9.1 5.5 commanded VS phoenix_htmlPhoenix.HTML functions for working with HTML strings and templates
phoenix_ecto9.0 3.3 commanded VS phoenix_ectoPhoenix and Ecto integration with support for concurrent acceptance testing
scrivener9.0 0.0 commanded VS scrivenerPagination for the Elixir ecosystem
absinthe_plug8.8 0.0 commanded VS absinthe_plugPlug support for Absinthe, the GraphQL toolkit for Elixir
react_phoenix8.8 0.0 commanded VS react_phoenixMake rendering React.js components in Phoenix easy
corsica8.7 2.1 commanded VS corsicaElixir library for dealing with CORS requests. 🏖
cors_plug8.7 0.0 commanded VS cors_plugAn Elixir Plug to add CORS.
scrivener_html8.6 0.0 commanded VS scrivener_htmlHTML view helpers for Scrivener
Raxx8.5 0.0 commanded VS RaxxInterface for HTTP webservers, frameworks and clients
phoenix_slime8.4 0.0 commanded VS phoenix_slimePhoenix Template Engine for Slime
phoenix_live_reload8.4 3.2 commanded VS phoenix_live_reloadProvides live-reload functionality for Phoenix
params8.3 2.6 commanded VS paramsEasy parameters validation/casting with Ecto.Schema, akin to Rails' strong parameters.
phoenix_pubsub_redisThe Redis PubSub adapter for the Phoenix framework
rummage_ecto7.9 2.6 commanded VS rummage_ectoSearch, Sort and Pagination for ecto queries
kerosene7.9 0.0 commanded VS kerosenePagination for Ecto and Pheonix.
passport7.8 0.0 commanded VS passportProvides authentication for phoenix application
dayron7.8 0.0 commanded VS dayronA repository `similar` to Ecto.Repo that maps to an underlying http client, sending requests to an external rest api instead of a database
phoenix_token_auth7.6 0.0 commanded VS phoenix_token_authToken authentication solution for Phoenix. Useful for APIs for e.g. single page apps.
rummage_phoenix7.6 3.6 commanded VS rummage_phoenixFull Phoenix Support for Rummage. It can be used for searching, sorting and paginating collections in phoenix.
phoenix_haml7.6 0.0 commanded VS phoenix_hamlPhoenix Template Engine for Haml
recaptcha7.3 0.0 commanded VS recaptchaA simple reCaptcha 2 library for Elixir applications.
plugsnag6.9 0.0 commanded VS plugsnagA Bugsnag notifier for Elixir's plug
plug_graphql6.9 0.0 commanded VS plug_graphqlPlug (Phoenix) integration for GraphQL Elixir
sentinel6.9 0.0 commanded VS sentinelDEPRECATED - Phoenix Authentication library that wraps Guardian for extra functionality
plug_rails_cookie_session_storeRails compatible Plug session store
phx_component_helpersExtensible Phoenix liveview components, without boilerplate
multiverse6.3 0.0 commanded VS multiverseElixir package that allows to add compatibility layers via API gateways.
filterable6.3 0.0 commanded VS filterableFiltering from incoming params in Elixir/Ecto/Phoenix with easy to use DSL.
access pass6.1 0.0 commanded VS access passprovides a full user authentication experience for an API. Includes login,logout,register,forgot password, forgot username, confirmation email and all that other good stuff. Includes plug for checking for authenticated users and macro for generating the required routes.
ashes6.1 0.0 commanded VS ashesA code generation tool for the Phoenix web framework
better_params6.0 0.0 commanded VS better_paramsCleaner request parameters in Elixir web applications 🙌
webassembly6.0 0.0 commanded VS webassemblyWeb DSL for Elixir
scrivener_headers6.0 0.0 commanded VS scrivener_headersScrivener pagination with headers and web linking
plug_auth5.9 0.0 commanded VS plug_authA collection of authentication-related plugs
phoenix_pubsub_rabbitmqRabbitMQ adapter for Phoenix's PubSub layer
plug_checkup5.5 0.0 commanded VS plug_checkupPlugCheckup provides a Plug for adding simple health checks to your app
Whatwasit5.5 0.0 commanded VS WhatwasitTrack changes to your Ecto models
plug_statsd5.4 0.0 commanded VS plug_statsdSend connection response time and count to statsd
plug_rest5.0 0.0 commanded VS plug_restREST behaviour and Plug router for hypermedia web applications in Elixir
trailing_format_plugAn elixir plug to support legacy APIs that use a rails-like trailing format: http://api.dev/resources.json
Votex4.8 0.0 commanded VS VotexImplements vote / like / follow functionality for Ecto models in Elixir. Inspired from Acts as Votable gem in Ruby on Rails
raygun4.7 0.0 commanded VS raygunA raygun client for Elixir
plug_jwt4.6 0.0 commanded VS plug_jwtPlug for JWT authentication
phoenix_html_simplified_helpersSome helpers for phoenix html( truncate, time_ago_in_words, number_with_delimiter, url_for, current_page? )
plug_canonical_host4.3 0.0 commanded VS plug_canonical_hostPlugCanonicalHost ensures that all requests are served by a single canonical host.
Learn Elixir in as little as 12 Weeks
Do you think we are missing an alternative of commanded or a related project?
Use Commanded to build your own Elixir applications following the CQRS/ES pattern.
Provides support for:
- Command registration and dispatch.
- Hosting and delegation to aggregates.
- Event handling.
- Long running process managers.
Commanded provides a solid technical foundation for you to build on. It allows you to focus on modelling your domain, the most important part of your app, creating a better application at a faster pace.
You can use Commanded with one of the following event stores for persistence:
- EventStore - Elixir library using Postgres for persistence.
- EventStoreDB - a stream database built for Event Sourcing.
- In-memory event store - included for test use only.
Please refer to the [CHANGELOG](CHANGELOG.md) for features, bug fixes, and any upgrade advice included for each release.
Requires Erlang/OTP v21.0 and Elixir v1.9 or later.
You can help support Commanded by helping to fund its ongoing development, new features, and releases.
- Become a GitHub sponsor
- [View sponsors & backers](BACKERS.md)
- What is CQRS/ES?
- Frequently asked questions
- Getting help
- Latest published Hex package & documentation
This README and the following guides follow the
masterbranch which may not be the currently published version.
Read the documentation for the latest published version of Commanded on Hex.
- [Getting started](guides/Getting%20Started.md)
- [Choosing an event store](guides/Choosing%20an%20Event%20Store.md)
- [PostgreSQL-based EventStore](guides/Choosing%20an%20Event%20Store.md#postgresql-based-elixir-eventstore)
- [Greg Young's Event Store](guides/Choosing%20an%20Event%20Store.md#greg-youngs-event-store)
- [Using Commanded](guides/Usage.md)
- [Example aggregate](guides/Aggregates.md#example-aggregate)
- [Aggregate state snapshots](guides/Aggregates.md#aggregate-state-snapshots)
- [Command handlers](guides/Commands.md#command-handlers)
- [Command dispatch and routing](guides/Commands.md#command-dispatch-and-routing)
- [Define aggregate identity](guides/Commands.md#define-aggregate-identity)
- [Multi-command registration](guides/Commands.md#multi-command-registration)
- [Dispatch timeouts](guides/Commands.md#timeouts)
- [Dispatch consistency guarantee](guides/Commands.md#command-dispatch-consistency-guarantee)
- [Dispatch returning execution result](guides/Commands.md#dispatch-returning-execution-result)
- [Aggregate lifespan](guides/Commands.md#aggregate-lifespan)
- [Composite command routers](guides/Commands.md#composite-command-routers)
- [Example middleware](guides/Commands.md#example-middleware)
- [Composite command routers](guides/Commands.md#composite-command-routers)
- [Domain events](guides/Events.md#domain-events)
- [Event handlers](guides/Events.md#event-handlers)
- [Consistency guarantee](guides/Events.md#consistency-guarantee)
- [Upcasting events](guides/Events.md#upcasting-events)
- [Process managers](guides/Process%20Managers.md)
- [Example process manager](guides/Process%20Managers.md#example-process-manager)
- [Default JSON serializer](guides/Serialization.md#default-json-serializer)
- [Configuring JSON serialization](guides/Serialization.md#configuring-json-serialization)
- [Decoding event structs](guides/Serialization.md#decoding-event-structs)
- [Using an alternative serialization format](guides/Serialization.md#using-an-alternative-serialization-format)
- [Customising serialization](guides/Serialization.md#customising-serialization)
- [Read model projections](guides/Read%20Model%20Projections.md)
- [Single node deployment](guides/Deployment.md#single-node-deployment)
- [Multi node cluster deployment](guides/Deployment.md#multi-node-cluster-deployment)
- [Multi node, but not clustered deployment](guides/Deployment.md#multi-node-but-not-clustered-deployment)
- [Testing with Commanded](guides/Testing.md)
- Used in production?
- Example application
- Learn Commanded in 20 minutes
- [Choosing an event store provider](guides/Choosing%20an%20Event%20Store.md#writing-your-own-event-store-provider)
- Need help?
Used in production?
Yes, see the companies using Commanded.
Conduit is an open source, example Phoenix 1.3 web application implementing the CQRS/ES pattern in Elixir. It was built to demonstrate the implementation of Commanded in an Elixir application for the Building Conduit book.
Learn Commanded in 20 minutes
Watch Bernardo Amorim introduce CQRS and event sourcing at Code Beam SF 2018. Including a tutorial on how to implement an Elixir application using these concepts with Commanded.
Pull requests to contribute new or improved features, and extend documentation are most welcome.
Please follow the existing coding conventions, or refer to the Elixir style guide.
You should include unit tests to cover any changes. Run
mix test to execute the test suite.
Commanded exists thanks to the following people who have contributed.
- Adil Yarulin
- Alexandre de Souza
- Andrey Akulov
- Andrzej Sliwa
- Ben Smith
- Benjamin Moss
- Bernardo Amorim
- Brenton Annan
- Chris Brodt
- Chris Martin
- Christophe Juniet
- Danilo Silva
- Dave Lucia
- David Carlin
- Damir Vandic
- Danni Friedland
- Fernando Mendes
- Florian Ebeling
- Henry Hazan
- Joan Zapata
- João Thallis
- John Wilger
- Joseph Lozano
- Kian-Meng Ang
- Kok J Sam
- Leif Gensert
- Luís Ferreira
- Marcelo Dominguez
- Matt Doughty
- Matthew Boehlig
- Michael Herold
- Miguel Palhas
- Nigel Thorne
- Olafur Arason
- Paolo Laurenti
- Patrick Detlefsen
- Phil Chen
- Raphaël Lustin
- Štefan Ľupták
- Tobiasz Małecki
- Willy Wombat
- Yordis Prieto
- Yuri de Figueiredo
Please open an issue if you encounter a problem, or need assistance. You can also seek help in the Gitter chat room for Commanded.
For commercial support, and consultancy, please contact Ben Smith.
*Note that all licence references and agreements mentioned in the commanded README section above are relevant to that project's source code only.