├── README.md ├── assets └── CQRS-big-picture.png └── projects.txt /README.md: -------------------------------------------------------------------------------- 1 | # AwesomeCqrs 2 | 3 | 4 | 5 | 6 | 7 | ### Videos 8 | - [A deep look into the Event Store by Greg Young at OreDev 2012 at Malmo, Sweden - Every](http://www.everytalk.tv/talks/2238-OreDev-A-deep-look-into-the-Event-Store) 9 | - [Event Sourcing and DDD with F# - Jérémie Chassaing - 2015](https://vimeo.com/131632601) 10 | 11 | 12 | ### Discussions: 13 | - [DDD, Event Sourcing, and CQRS Tutorial | Hacker News](https://news.ycombinator.com/item?id=10189031) 14 | - [Which Message / Command / Event Bus to use · Issue #12 · webdevilopers](https://github.com/webdevilopers/php-ddd/issues/12) 15 | - [CQRS Examples and Screencasts - stackoverflow](http://stackoverflow.com/questions/5043513/cqrs-examples-and-screencasts) 16 | 17 | 18 | ### Slides 19 | - [DDDEurope 2018 - Event Sourcing After Launch (2018/02)](https://speakerdeck.com/overeemm/dddeurope-2018-event-sourcing-after-launch) 20 | - [TOTAL RECALL - The application that never forgets - 2018/01](https://speakerdeck.com/hollodotme/total-recall-the-application-that-never-forgets-1) 21 | - [CQRS & Event Sourcing in the wild (Scotla](https://speakerdeck.com/mrook/cqrs-and-event-sourcing-in-the-wild-scotlandphp-2016?slide=54) 22 | - [Introduction to CQRS / ES with Rails – Mirosław Pragłowski](http://praglowski.com/presentations/cqrses/drug/#/7) 23 | - [CQRS & EVENTSOURCING DISCOVERY - Workshop](http://devlyon.fr/mixter/) 24 | - https://github.com/Ookami86/event-sourcing-in-practice 25 | - http://prolic.github.io/cqrs-event-sourcing-talk/#/39 - CQRS & Event Sourcing 26 | 27 | 28 | ### Other link collections 29 | - [A curated list of awesome CQRS and Event Sourcing things](https://github.com/leandrocp/awesome-cqrs-event-sourcing) 30 | - [GitHub - leandrocp/awesome-cqrs-event-sourcing: A curated list of awesome CQRS and Event Sourcing things](https://github.com/leandrocp/awesome-cqrs-event-sourcing) 31 | - [mlomnicki/ddd-resources: ](https://github.com/mlomnicki/ddd-resources) 32 | - [valentjedi/ddd-dynamic: Domain Driven Design in Python, Ruby and other dynamic languages resources](https://github.com/valentjedi/ddd-dynamic) 33 | 34 | 35 | ### Notes 36 | - [CQRS is not complicated · GitHub](https://gist.github.com/robashton/1244862/350601913b7b81c471a88b9b0691361238a41cc2) 37 | - [The relationship between state machines and event sourcing](https://gist.github.com/eulerfx/4ac420a14422ac960222) 38 | - [Data Management for Microservices · markus](https://github.com/markusklems/osstechmap/wiki/Data-Management-for-Microservices) 39 | - [Event Sourcing as 3 functions.](https://gist.github.com/gregoryyoung/a3e69ed58ae066b91f1b) 40 | - [Rough Notes about CQRS and ES · GitHub](https://gist.github.com/jaceklaskowski/d267bf4176822293e95e) 41 | - [Greg Young's CQRS Class - Random Notes - 2011](https://gist.github.com/briandonahue/1204748) 42 | 43 | - [Notes from DDD & CQRS training - day 1 - 2011](http://marcinderylo.blogspot.de/2011/04/notes-from-ddd-cqrs-training-day-1.html) 44 | - [Notes from DDD & CQRS training - day 2 - 2011](http://marcinderylo.blogspot.de/2011/04/notes-from-ddd-cqrs-training-day-2.html) 45 | - [Notes from DDD & CQRS training - day 3 - 2011](http://marcinderylo.blogspot.de/2011/04/notes-from-ddd-cqrs-training-day-3.html) 46 | 47 | 48 | ### Longer articles 49 | - [Sanity Checking an Event Sourced System - 2017/03](http://www.strauss.io/blog/2017-sanity-checking-an-event-sourced-system.html) 50 | - [Buzz-kills Chronicles - Part 1: CQRS - 2016/09](http://blog.bsg.co.za/2016/09/16/buzz-kill-chronicles-cqrs.html) 51 | - [Galeria-Kaufhof/web-eventsourcing: Event sourcing for the Web](https://github.com/Galeria-Kaufhof/web-eventsourcing/blob/master/draft-kiessling-web-eventsourcing-00.md) 52 | 53 | 54 | - [Projection Building Blocks: What you'll need to build projections - 2018/01](https://barryosull.com/blog/projection-building-blocks-what-you-ll-need-to-build-projections) 55 | - [Immediate Consistency in Event Sourcing - 2017/09](https://barryosull.com/blog/immediate-consistency-in-event-sourcing) 56 | - [Event Sourcing: What it is and why it's awesome - 2017/08](https://dev.to/barryosull/event-sourcing-what-it-is-and-why-its-awesome) 57 | 58 | - [12 Things You Should Know About Event Sourcing - 2017/04](http://blog.leifbattermann.de/2017/04/21/12-things-you-should-know-about-event-sourcing/) 59 | 60 | - [DDD, CQRS & ES! · GitHub](https://gist.github.com/rasheedamir/2f18c6a931fa65343f1d) --- very detailed! 61 | - https://github.com/Arnauld/CQRS-Ramblings/blob/master/doc/article/cqrs-article.mdown -- 62 | - [Entry-level, synchronous & transactional event sourcing](https://softwaremill.com/entry-level-event-sourcing/) - alternative, consistent ES architecture 63 | - [Scaling Microservices with an Event Stream | ThoughtWorks](https://www.thoughtworks.com/insights/blog/scaling-microservices-event-stream) 64 | - [Scalable Microservices through Messaging – Red Hat Developer Blog](http://developers.redhat.com/blog/2016/05/26/scalable-microservices-through-messaging/) 65 | - [Event Sourcing from the Trenches - 2016/06](https://www.linkedin.com/pulse/event-sourcing-from-trenches-dennis-doomen?articleId=8422486075574796264) 66 | - [Pragmatic CQRS: Verifying username uniqueness when registering a new user // Tom's ramblings - 2011/11](http://tojans.me/blog/2011/11/15/pragmatic-cqrs-verifying-username-uniqueness-when-registering-a-new-user/) 67 | - [Building Marten’s Async Daemon | The Shade Tree Developer](https://jeremydmiller.com/2016/08/31/building-martens-async-daemon/) 68 | - [Example application for my #qconsf presentation about building microservices with event sourcing and CQRS | plain old objects - 2015/01](https://plainoldobjects.com/2015/01/04/example-application-for-my-qconsf-presentation-about-building-microservices-with-event-sourcing-and-cqrs/) 69 | - [Decoupling applications with Domains Events - 2012/08](http://www.whitewashing.de/2012/08/25/decoupling_applications_with_domain_events.html) 70 | - http://labs.qandidate.com/blog/2015/07/08/replaying-event-streams-with-broadway/ 71 | - http://labs.qandidate.com/blog/2015/10/07/asynchronous-event-processing-with-broadway-using-rabbitmq/ 72 | 73 | ### Academic 74 | - [Domain-Driven Design mit Ruby on Rails - Bachelor Theses - 2015](http://edoc.sub.uni-hamburg.de/haw/volltexte/2016/3220/pdf/BA_Zender.pdf) - quite complete reference implementation of DDD concepts with Ruby / Rails 75 | - [(german) Testen von Domain Modellen anhand von Commands und Events - Bachelor Theses](https://www.fernuni-hagen.de/imperia/md/content/ps/bachelor-boehm.pdf) 76 | - [GitHub - redhead/diploma-thesis](https://github.com/redhead/diploma-thesis), quite good! 77 | - [Enabling retroactive computing through event sourcing - 2016/09 - Master theses](https://oparu.uni-ulm.de/xmlui/handle/123456789/4150) 78 | - [Correctness for CQRS Systems - Elicitation and validation - 2012 - Master of Science Thesis](https://www.nada.kth.se/utbildning/grukth/exjobb/rapportlistor/2012/rapporter12/hakim_kamil_12072.pdf) 79 | - [DISTRIBUTED DOCUMENT MIGRATION BETWEEN ERP SYSTEMS BY MEANS OF MESSAGING AND EVENT SOURCING - 2013](https://www.doria.fi/bitstream/handle/10024/94341/Distributed%20document%20migration%20between%20ERP%20systems%20by%20means%20of%20messaging%20and%20event%20sourcing.pdf?sequence=2) 80 | - [Using CQRS Pattern for Improving Performances in Medical Information Systems](http://ceur-ws.org/Vol-1036/p86-Rajkovic.pdf) 81 | - [Practitioners’ view on command query responsibility segregation - 2014/08](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.843.2533&rep=rep1&type=pdf) 82 | - [Maintainable architecture in project business analysis software - 2015](https://aaltodoc.aalto.fi/bitstream/handle/123456789/21038/master_Haapaniemi_Tuukka_2016.pdf?sequence=1) 83 | - [Variability in Multi-Tenant Enterprise Software - 2014/12](http://dspace.library.uu.nl/bitstream/handle/1874/303797/Kabbedijk.pdf;jsessionid=45D0CA7EB1871794921B50F07B404CA2?sequence=1) 84 | - [Designing a Business Platform using Microservices. - 2016/03](https://wwwmatthes.in.tum.de/file/i18zc136pl5a/Sebis-Public-Website/-/Master-s-Thesis-Rajendra-Kharbuja/Thesis_Report_Final.pdf) 85 | - [CLOUD FRAMEWORK ON INFRASTRUCTURE AS A SERVICE - 2013](https://dspace.vutbr.cz/bitstream/handle/11012/53428/14457.pdf?sequence=1) 86 | - [Towards cloud application architectural patterns: transfer, evolution, innovation and oblivion - 2014](http://www.diva-portal.se/smash/get/diva2:843924/FULLTEXT01.pdf) 87 | - [The Dark Side of Event Sourcing: Managing Data Conversion](http://files.movereem.nl/2017saner-eventsourcing.pdf) 88 | - [ИСПОЛЬЗОВАНИЕ ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ COMMAND QUERY RESPONSIBILITY SEGREGATION (CQRS) ДЛЯ РАСПРЕДЕЛЕННЫХ ИНФОРМАЦИОННЫХ СЕРВИСОВ (russian) - 2015](http://cyberleninka.ru/article/n/ispolzovanie-tehnologii-programmirovaniya-command-query-responsibility-segregation-cqrs-dlya-raspredelennyh-informatsionnyh) 89 | 90 | ### Ruby specific: 91 | - [Minimal decoupled subsystems in your rails app - 2016/09](http://blog.arkency.com/2016/09/minimal-decoupled-subsystems-of-your-rails-app/) 92 | - [From ActiveRecord to EventSourcing - 2014/05](http://www.slideshare.net/emadb/wroclove-rb) 93 | - [The journey to Rails and TDD - 2016/05](https://medium.com/planet-arkency/the-journey-to-rails-and-tdd-da639d921e17#.jh11nv9w7) 94 | 95 | 96 | ### Workshop 97 | - http://insights.workshop14.io/2015/07/14/domain-driven-design-introduction.html 98 | - http://insights.workshop14.io/2015/07/15/value-objects-in-ruby.html 99 | - http://insights.workshop14.io/2015/07/23/application-border-control-with-ruby-form-objects.html 100 | - http://insights.workshop14.io/2015/08/02/tackling-god-objects-in-ruby.html 101 | - http://insights.workshop14.io/2015/08/09/untangle-your-domain-model-from-the-database.html 102 | - http://insights.workshop14.io/2015/08/16/introducing-interactors-to-represent-getting-stuff-done.html 103 | - http://insights.workshop14.io/2015/08/20/domain-driven-design-where-the-real-value-lies.html 104 | 105 | 106 | 107 | 108 | ### Good documentation 109 | - [proophessor - Exploring prooph components](http://getprooph.org/) 110 | - [prooph/event-store · Docs (DDD/CQRS/ES concepts)](https://github.com/prooph/event-store/tree/master/docs) 111 | - https://github.com/ravendb/docs/blob/master/Articles/Raven.Documentation.Articles/articles/cqrs-and-event-sourcing-made-easy-with-ravendb.markdown 112 | - [GitHub - slashdotdash/cqrs-journey-pdf: CQRS Journey Guide converted to PDF for eBook reading.](https://github.com/slashdotdash/cqrs-journey-pdf) 113 | 114 | 115 | ### Tools 116 | - [Github - robertreppel/hist: A simple event store for event sourcing in Go.](https://github.com/robertreppel/hist) 117 | - [GitHub - debezium/debezium: Change data capture for a variety of databases.](https://github.com/debezium/debezium) 118 | - [GitHub - Flipkart/aesop: A keen Observer of change](https://github.com/Flipkart/aesop) 119 | 120 | 121 | 122 | # Code / Libraries 123 | 124 | ### Elixir / Erlang 125 | - [serverboards/serverboards: Serverboards is a microservices based service monitoring, alerting and management system.](https://github.com/serverboards/serverboards) 126 | - [GitHub - bryanhunter/cqrs-with-erlang: Resources for the CQRS with Erlang talk](https://github.com/bryanhunter/cqrs-with-erlang) 127 | - [CQRS with Elixir and Phoenix - 2015/11](http://jfcloutier.github.io/jekyll/update/2015/11/04/cqrs_elixir_phoenix.html) 128 | - [GitHub - CrowdHailer/event-sourcing.elixir: Event sourcing test project based on the Scala example in the Fun.CQRS library](https://github.com/CrowdHailer/event-sourcing.elixir) 129 | - [Github - andreapavoni/disco](https://github.com/andreapavoni/disco) - Simple, opinionated yet flexible library to build CQRS/ES driven systems 🕺 130 | - [EventStore HTTP client featuring subscriptions (competing consumers) and other celebrities.](https://github.com/tbug/elixir-eventstore-http-client) 131 | - [CQRS Eventsourcing Engine - Elixir](https://github.com/work-capital/elixir-cqrs-eventsourcing) 132 | - [DDD/CQRS/ES/NoSQL and functional programming - General Programming / General Chat - Elixir Forum](https://elixirforum.com/t/ddd-cqrs-es-nosql-and-functional-programming/519/2) 133 | - [Creating a supervision tree for Elixir GenEvent behavior - 2016/05](http://pedroassumpcao.ghost.io/creating-a-supervision-tree-for-elixir-genevent-behavior/) 134 | - [GitHub - madeinussr/exop: Little library that provides a few macros which allow to you encapsulate business logic and validate incoming params over predefined contract.](https://github.com/madeinussr/exop) 135 | - [GitHub - ericmj/true_story: Make your tests tell a story](https://github.com/ericmj/true_story) 136 | - [GitHub - antipax/gen_state_machine: An idiomatic Elixir wrapper for gen_statem in OTP 19 (and above).](https://github.com/antipax/gen_state_machine) 137 | - [GitHub - bernardolins/fake_server: FakeServer is a simple HTTP server used to mock external services responses on your tests.](https://github.com/bernardolins/fake_server) 138 | 139 | ### Golang 140 | - [hellofresh/goengine: Engine provides you all the capabilities to build an Event sourced application in go](https://github.com/hellofresh/goengine) 141 | - https://medium.com/@Oskarr3/implementing-cqrs-using-kafka-and-sarama-library-in-golang-da7efa3b77fe#.7gvhtgyf8 142 | - [mcveat/event-sourcing-cqrs: Example of Event Sourcing and CQRS in golang](https://github.com/mcveat/event-sourcing-cqrs) 143 | - [GitHub - looplab/eventhorizon: CQRS/ES toolkit for Go](https://github.com/looplab/eventhorizon) 144 | - [GitHub - eduncan911/es: Event-sourcing and microservices infrastructure with specs framework for GoLang](https://github.com/eduncan911/es) 145 | 146 | 147 | ### Javascript / Node.js 148 | - [GitHub - smariussorin/EventSourcedMicroservices: Microservices Architecture with Event Sourcing and CQRS using Node.JS](https://github.com/smariussorin/EventSourcedMicroservices) 149 | - [efacilitation/eventric: Minimalist JavaScript framework to build applications based on DDD, CQRS and Event Sourcing.](https://github.com/efacilitation/eventric) 150 | - [efacilitation/eventric-testing: Test helpers for eventric.js based applications](https://github.com/efacilitation/eventric-testing) 151 | 152 | 153 | ### PHP 154 | - [prooph/event-store-bus-bridge: Marry CQRS with Event Sourcing http://getprooph.org](https://github.com/prooph/event-store-bus-bridge) 155 | - [prooph/service-bus: PHP Lightweight Message Bus supporting CQRS.](https://github.com/prooph/service-bus) 156 | - [prooph/event-sourcing: Provides basic functionality for event sourced aggregates.](https://github.com/prooph/event-sourcing) 157 | - [qandidate-labs/broadway: Infrastructure and testing helpers for creating CQRS and event sourced applications](https://github.com/qandidate-labs/broadway) 158 | - [honeybee/honeybee: Library for implementing CQRS driven, event-sourced and distributed architectures.](https://github.com/honeybee/honeybee) 159 | - [hellofresh/engine: Engine provides you all the capabilities to build an Event sourced application.](https://github.com/hellofresh/engine) 160 | - [thephpleague/tactician: A simple, flexible command bus http://tactician.thephpleague.com](https://github.com/thephpleague/tactician) 161 | - [GitHub - treehouselabs/event-sourcing: Event sourcing library](https://github.com/treehouselabs/event-sourcing) 162 | - [GitHub - szjani/predaddy: DDD/CQRS/EventSourcing framework with annotation driven message bus](https://github.com/szjani/predaddy) 163 | 164 | 165 | ### Python 166 | - [GitHub - iancooper/Paramore: Command Dispatcher, Processor, and Distributed Task Queue](https://github.com/iancooper/Paramore) 167 | - [GitHub - johnbywater/eventsourcing: Event sourcing in Python](https://github.com/johnbywater/eventsourcing) 168 | 169 | ### Ruby 170 | - [krisleech/wisper: A micro library providing Ruby objects with Publish-Subscribe capabilities](https://github.com/krisleech/wisper) 171 | - [GitHub - arkency/aggregate_root](https://github.com/arkency/aggregate_root) 172 | - [zilverline/sequent: CQRS & event sourcing framework for Ruby](https://github.com/zilverline/sequent) 173 | - [GitHub - ianunruh/fountain-redis: Redis components for the Fountain CQRS/ES framework](https://github.com/ianunruh/fountain-redis) 174 | - [GitHub - ianunruh/fountain: Modular CQRS and event sourcing framework for Ruby](https://github.com/ianunruh/fountain) 175 | - [Event Sourcing & Unit Testing](https://ianunruh.com/2013/08/event-sourcing-unit-testing.html) 176 | - [ Event Sourcing in Ruby](https://ianunruh.com/2013/08/event-sourcing-ruby.html) 177 | - [GitHub - cavalle/banksimplistic: Exploring CQRS, Event Sourcing and DDD with Ruby](https://github.com/cavalle/banksimplistic) 178 | - [alexaitken/synapse: A versatile CQRS and event sourcing framework for Ruby](https://github.com/alexaitken/synapse) 179 | - [Papipo/event_sourcing: GitHub - Papipo/event_sourcing: Actor based Event Sourcing library for ruby](https://github.com/Papipo/event_sourcing) 180 | 181 | 182 | 183 | ### Meteor 184 | - [GitHub - meteor-space/event-sourcing: ](https://github.com/meteor-space/event-sourcing) 185 | 186 | ## JVM 187 | 188 | ### Java 189 | - [GitHub - opencredo/concursus: Concursus is a Java 8 framework for building applications that use CQRS and event sourcing patterns, with a Cassandra event log implementation.](https://github.com/opencredo/concursus) 190 | - [orbit/orbit - Concepts: Event Sourced State](https://github.com/orbit/orbit/wiki/Concepts%3A-Event-Sourced-State) 191 | - [fredgeorge/microservice_workshop: Material (setup, sample services, etc) for Booster 2014 MicroService workshop](https://github.com/fredgeorge/microservice_workshop) 192 | 193 | 194 | ### Scala 195 | - [GitHub - gabehollombe/scala-bank-cqrs-es: ](https://github.com/gabehollombe/scala-bank-cqrs-es) 196 | - [PagerDuty/poc-fast-event-sourcing: Fast Event Sourcing on Cassandra - Proof of Concept](https://github.com/PagerDuty/poc-fast-event-sourcing) 197 | - [GitHub - notxcain/aecor: Pure functional event sourcing runtime](https://github.com/notxcain/aecor) 198 | - [GitHub - scalapenos/stamina: Schema evolution for akka-persistence](https://github.com/scalapenos/stamina/) 199 | 200 | 201 | ### Clojure 202 | - [GitHub - capitalone/cqrs-manager-for-distributed-reactive-services: Experimental CQRS and Event Sourcing service](https://github.com/capitalone/cqrs-manager-for-distributed-reactive-services) 203 | - [rill-event-sourcing/wheel: Event generation using aggregates and commands](https://github.com/rill-event-sourcing/wheel) 204 | - [rill-event-sourcing/rill: Clojure Event Sourcing toolkit](https://github.com/rill-event-sourcing/rill) 205 | 206 | ## .NET 207 | 208 | ### F-Sharp 209 | - [GitHub - mastoj/LibAAS: Another sample project showing event sourcing in F#](https://github.com/mastoj/LibAAS) 210 | - [thinkbeforecoding/FsUno: Event sourcing implementation sample in F#](https://github.com/thinkbeforecoding/FsUno) 211 | 212 | ### C-Sharp 213 | - [klejeune/teclyn: A C#/Asp.Net production-ready Framework using CQRS and Event-Sourcing](https://github.com/klejeune/teclyn) 214 | - [GitHub - eventflow/EventFlow: Async/await first CQRS+ES and DDD framework for .NET](https://github.com/eventflow/EventFlow/) 215 | - [GitHub - SneakyPeet/EasyEventSourcing: A Simple Event Sourcing Example Application](https://github.com/SneakyPeet/EasyEventSourcing) 216 | - [GitHub - corker/FluentProjections: Fluent Projections provide a configurable hub that handle events and map them to database projection tables (read models).](https://github.com/corker/FluentProjections) 217 | - [GitHub - tangxuehua/Conference: A conference example to explain how to use enode to develop ddd+cqrs+event souricng application.](https://github.com/tangxuehua/Conference) 218 | - [GitHub - Elders/Cronus: Cronus is a lightweight framework for dispatching and receiving messages between microservices with DDD/CQRS in mind](https://github.com/Elders/Cronus) 219 | - [GitHub - 2020IP/TwentyTwenty.DomainDriven: DDD CQRS Event Sourcing Abstraction Library](https://github.com/2020IP/TwentyTwenty.DomainDriven) 220 | - [GitHub - jonsequitur/Alluvial: Stream your data from any source. Build projections and aggregations. Parallelize. Distribute. Replay.](https://github.com/jonsequitur/Alluvial) 221 | 222 | 223 | 224 | ### EventStore (geteventstore.com) 225 | - https://sqlbits.com/Sessions/Event14/EventStore-a_streaming_database_for_CQRS_and_event_sourcin 226 | 227 | 228 | 229 | 230 | 231 | ### Services 232 | - [serialized.io - APIS FOR BUILDING BUSINESS EVENT-DRIVEN APPLICATIONS - ](https://serialized.io/api/) 233 | -------------------------------------------------------------------------------- /assets/CQRS-big-picture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindreframer/awesome_cqrs/5f50aa3139fc3d334e016681caa85fb57bf048a1/assets/CQRS-big-picture.png -------------------------------------------------------------------------------- /projects.txt: -------------------------------------------------------------------------------- 1 | https://github.com/adrai/node-cqrs-domain.git 2 | https://github.com/RadicalFx/Radical.CQRS.git 3 | https://github.com/strongtyped/fun-cqrs.git 4 | https://github.com/eventflow/EventFlow.git 5 | https://github.com/Thorium/SimpleCQRS-FSharp.git 6 | https://github.com/JamesShuttler/CQRSStarterPack.git 7 | https://github.com/cer/event-sourcing-examples.git 8 | --------------------------------------------------------------------------------