event-sourcing-demo-app
event-sourcing-demo-app copied to clipboard
Demo application to demonstrate the power of the event sourcing architecture for DevelopersBR livestream
Demo app for Event Sourcing architecture
Demo application to demonstrate the power of the event sourcing architecture for DevelopersBR livestream
You can check that in JavaScript as well
Summary
-
Demo app for Event Sourcing architecture
- Summary
-
What is event sourcing
- Related material
- Running the application
- Useful tooling
-
Challenge!
- How do I improve?
What is event sourcing
Event sourcing is a development pattern to solve audit problems and make our application more easily maintainable. It is described as:
A way to capture all changes to an application state as a sequence of events.
There's not much jabber about it right now, however this pattern first emerged in one of Martin Fowler's articles in 2005, for some reason it's been forgotten ever since.
I'm not describing it all here, however I have a series of related material (in portuguese) so you can study it for yourself.
Related material
- What is event sourcing (talk in portuguese)
- Let's talk about event sourcing and how it can save your project (in portuguese)
- An architecture guide to use event sourcing
- Livestream video where I build this application (in portuguese)
- Slides used in this livestream
- Article about this architecture
- Video about this architecture (2021) [Portuguese]
Running the application
This app uses Docker Compose as runner, it'll build and set all your containers, you just need to run docker-compose up
in the root directory.
Useful tooling
- Doctor
- Tardis - A Nodejs library to control time
- Paradox - A Nodejs library to aid event sourcing apps
Challenge!
This app version has some intentional "errors" and/or misleading designs in order to incentivate students to improve it.
How do I improve?
Our branches are named master
which is v1, we have v2
with some additional improvements. If you want to make even more improvements, clone the project and go to the v2
branch. Then do your thing and submit a PR for approval.
DO NOT FORGET TO ADD WHAT YOU HAVE CHANGED IN THE BACKEND CHANGELOG OR FRONTEND CHANGELOG FILES IN ORDER TO LET PEOPLE KNOW WHAT HAS BEEN DONE
PR's without changelogs will not be approved