• Stars
    star
    704
  • Rank 63,978 (Top 2 %)
  • Language
  • Created about 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A curated list of awesome Elixir and Command Query Responsibility Segregation (CQRS) resources.

Awesome Elixir and CQRS Awesome

A curated list of awesome Elixir, Command Query Responsibility Segregation (CQRS), and event sourcing resources.

Contents

Libraries

  • Chronik - A lightweight event sourcing micro framework for Elixir.

  • Commanded - Use Commanded to build your own Elixir applications following the CQRS/ES pattern. Provides support for command registration and dispatch, hosting and delegation to aggregate roots, event handling, and long running process managers.

  • Disco - Simple, opinionated yet flexible library to build CQRS/ES driven systems.

  • Eidetic - An event sourcing library for Elixir.

  • ES - Event Sourcing for Ecto and Postgresl/Dynamodb events storage.

  • EventBus - Traceable, extendable and minimalist event bus implementation for Elixir with built-in event store and event watcher based on ETS.

  • Eventlog - A simple event log backed by dynamodb and dynamodb streams.

  • EventStore - An Elixir event store using PostgreSQL for persistence.

  • Extreme - Elixir adapter for Greg Young's Event Store.

  • Fable - An Elixir event sourcing library.

  • Helios.Aggregate - Elixir library defining Aggregate behaviour and providing extendable facility for aggregate command pipeline.

  • Incident - Event Sourcing and CQRS in Elixir abstractions.

  • Maestro - An Elixir event store + CQRS library.

  • Pachyderm - A virtual/immortal/durable/resilient/global actor "always exists" and "never fails".

  • Perhap - Purely functional event store and service framework inspired by domain driven design and reactive architectures.

  • Seven Otters - A CQRS/ES Starter Kit for the BEAM.

  • TeaVent - TeaVent allows you to perform event-dispatching in a style that is a mixture of Event Sourcing and The "Elm Architecture" (TEA).

Community resources

Books

Articles

2019

2021

2022

Presentations

2014

2016

2017

2018

2019

2020

2021

  • Eventsourcing and CQRS in Elixir by Vasilis Spilka @ ElixirConf EU 2021 - In this talk, we will go through how we can build an eventsourced application using simple abstractions provided to us by the Commanded library. [ slides ]

  • Modelling complex business domains with events by Ben Smith @ Alchemy Conf 2021 - Discover how we can use domain events (simple facts relevant to a business) to model business processes. Using tools such as Event Storming we can design our applications around these events. [ slides ]

Podcasts

2021

  • Elixir Mix #148 Event Sourcing and CQRS ft. Ben Moss - Discusion about Event Sourcing and CQRS in Elixir. Event sourcing is the practice of logging data across logged series of events and then reconstructing data from the events. CQRS is focused on keeping read and write operations from conflicting.

  • Thinking Elixir #075 RabbitMQ and Commanded at Simplebet with Dave Lucia - Talk about Simplebet's use of RabbitMQ and Commanded for solving unique real-time problems. We learn how Simplebet uses Elixir when creating real-time sports betting markets. We also learn what CQRS systems are, how the Commanded library supports that in Elixir, and how Commanded pairs well with RabbitMQ.

Research papers

2017

2021

Screencasts

Example applications

  • Bank by Bernardo Amorim - Sample Application for Elixir Brasil Talk.

  • Bonfire by Qiu Hua - A small project for exploring some interesting approaches to a delightful web application.

  • Coins by Bernardo Amorim - An example app using CQRS and Event Sourcing built with Commanded for a talk at CodeBEAM SF 2018.

  • Conduit - A blogging platform, an exemplary Medium.com clone, built as a Phoenix web application.

  • DDD Shipping Example by Peter C Marks - Elixir implementation of the shipping example from Eric Evan's "Domain-driven Design: Tackling Complexity in the Heart of Software" book.

  • Gift card demo by Ben Smith - a Commanded demo application focused around a simplified gift card domain using Phoenix LiveView for realtime UI updates.

  • Segment Challenge by Ben Smith - a full featured Elixir Phoenix web application built with Commanded used to host Strava competitions for athletes.

  • Simple Pay by Christopher Yammine - An exploration of using CQRS/ES with Elixir & EventStore database.

  • Honeydew by Matthew Moody - A very basic example to help you get started with the CELP (Commanded, Elixir, LiveView, PostgreSQL) stack.

License

CC0

To the extent possible under law, Ben Smith has waived all copyright and related or neighbouring rights to this work.

More Repositories

1

jekyll-lunr-js-search

[UNSUPPORTED] Jekyll + lunr.js = static websites with powerful full-text search using JavaScript
JavaScript
549
star
2

conduit

RealWorld example backend implementing the CQRS/ES pattern in Elixir and Phoenix
Elixir
347
star
3

faker-cs

C# port of the Ruby Faker gem (http://faker.rubyforge.org/)
C#
241
star
4

node-ledger-web

Web front-end to access ledger cli data.
JavaScript
144
star
5

saas-startup-checklist

SaaS Startup Checklist
128
star
6

phoenix-react-redux-example

Phoenix framework example using React and Redux
JavaScript
110
star
7

eventsourced

Functional domain models with event sourcing in Elixir
Elixir
104
star
8

rcqrs

Ruby CQRS with Event Sourcing library
Ruby
98
star
9

cqrs-best-practices

Best practices, guidance, and anti-patterns to avoid when building an application following CQRS/ES principles
95
star
10

node-pipes-and-filters

Pipes and Filters for Node.js to divide a larger processing task into a sequence of smaller, independent processing steps (Filters) that are connected by channels (Pipes).
JavaScript
80
star
11

segment-challenge

Segment Challenge is an Elixir Phoenix web application built using Commanded
Elixir
76
star
12

node-ledger

API for the ledger command-line interface (ledger-cli.org).
JavaScript
72
star
13

strava

Elixir wrapper for the Strava API (v3)
Elixir
46
star
14

til

Today I Learned
Elixir
44
star
15

eventstore-migrator

Copy & transform migration strategy for Elixir EventStore
Elixir
31
star
16

node-ledger-rest

REST web service to access the Ledger command-line interface (http://ledger-cli.org/).
JavaScript
27
star
17

stateless

[DEPRECATED] A C# Hierarchical State Machine
C#
23
star
18

Treaty

Rules Engine written in TypeScript implementing the Rete algorithm
20
star
19

domain-driven-js

Domain-driven JavaScript
20
star
20

gift-card-demo

Commanded demo application focused around a simple giftcard domain.
Elixir
20
star
21

implementing-cqrs-in-elixir

An introduction to implementing Command Query Responsibility Segregation (CQRS) in Elixir applications.
17
star
22

node-ledger-import

Import accounting transactions from CSV files to Ledger format.
JavaScript
11
star
23

cqrs-journey-pdf

CQRS Journey Guide converted to PDF for eBook reading.
Ruby
11
star
24

rcqrs-rails

Rails 3 plugin to use the RCQRS library
Ruby
9
star
25

rcqrs-blog

Rails 3 blog app using the RCQRS library
JavaScript
9
star
26

typescript-intro-presentation

Introduction to TypeScript presentation
JavaScript
2
star
27

Duplicity

Duplicate file system changes from one directory to another.
C#
2
star
28

kv

Key/value store using Elixir and Commanded CQRS/ES
Elixir
2
star
29

calculator

Attempt to define supported operations using `before_compile` macro
Elixir
2
star
30

DotNetFlow

An ASP.NET MVC web application for sharing links that demonstrates using CQRS with event sourcing. Inspired by RubyFlow.
JavaScript
2
star
31

eventstore-export

Export events stored in an EventStore database to disk
Elixir
2
star
32

notice

Notice board for tasks
JavaScript
1
star
33

ledger-import

Ruby
1
star
34

commanded_aggregate_race

Elixir
1
star
35

broadway-show

Broadway experiment using a custom `GenStage` producer with partitioning which stops processing on message failure
Elixir
1
star
36

nerves_agile_octopus

Display Agile Octopus electricity prices on an Inky pHAT display connected to a Raspberry Pi using Nerves.
Elixir
1
star