Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/MateuszNaKodach/awesome-eventmodeling

A curated list of awesome resources (articles / videos / courses / repositories) about Event Modeling.
https://github.com/MateuszNaKodach/awesome-eventmodeling

List: awesome-eventmodeling

awesome awesome-list ddd domain-driven-design event-modeling eventmodeling eventsourcing eventstorming

Last synced: 16 days ago
JSON representation

A curated list of awesome resources (articles / videos / courses / repositories) about Event Modeling.

Awesome Lists containing this project

README

        

# Awesome Event Modeling [![Awesome](https://awesome.re/badge.svg)](https://awesome.re)

> A curated list of awesome resources (articles / videos / courses / repositories) about Event Modeling.

Event Modeling is a method of describing systems using an example of how information has changed within them over time.
Specifically this omits transient details and looks at what is durably stored and what the user sees at any particular
point in time. These are the events on the timeline that form the description of the system.

Event Modeling was coined by [Adam Dymitruk](https://github.com/adymitruk/) by building on long-running process
specifications that Greg Young used in CQRS/ES systems. Alberto
Brandoliniโ€™s [Event Storming](https://github.com/mariuszgil/awesome-eventstorming) sticky notes and collaboration was
integrated to adopt the workshop format. The final piece was the UI/UX aspects to complete what more resembles a movie
story board. In the recent years many organizations were able to get on the same page with all departments and get their
projects done with much greater efficiency.

![Event Modeling](./assets/images/eventmodeling_history.jpg)
Event Modeling history from [HERE](https://eventmodeling.org/about/).

> ๐Ÿš€ Go ahead to the official web page here: ๐ŸŒ https://eventmodeling.org

## Getting Started
1. Read official introduction from Adam Dymitruk: [Event Modeling: What is it?](https://eventmodeling.org/posts/what-is-event-modeling/)
2. See Event Modeling Cheat Sheet by Sebastian Bortz: [EventModeling Cheat Sheet](https://eventmodeling.org/posts/event-modeling-cheatsheet/)

## ๐Ÿ“• Articles

- [eventmodeling.org | Event Modeling: What is it?](https://eventmodeling.org/posts/what-is-event-modeling/) - Adam Dymitruk
- [eventmodeling.org | Event Modeling Traditional Systems](https://eventmodeling.org/posts/event-modeling-traditional-systems/) -
Adam Dymitruk
- [eventmodeling.org | Great User Experience Demands Event Modeling](https://eventmodeling.org/posts/user-experience-event-modeling/) -
Eric Lau
- [eventmodeling.org | EventModeling Cheat Sheet](https://eventmodeling.org/posts/event-modeling-cheatsheet/) -
Sebastian Bortz
- [eventmodeling.org | Natural Human Thinking - Event Storming vs Event Modeling](https://eventmodeling.org/posts/human-natural-thinking/) -
Rafaล‚ Maciฤ…g
- [zycienakodach.pl | Event Modeling & Modularny Monolit | Od kolorowych karteczek do kodu poprzez TDD](https://zycienakodach.pl/event-modeling-modularny-monolit) (๐Ÿ‡ต๐Ÿ‡ฑ Polish) - Mateusz Nowak
- [InfoQ | Interview with Event Modeling Founder - Adam Dymitruk](https://www.infoq.com/news/2020/09/adameventmodeling/)
- [Goeleven.com | WHAT IS EVENT MODELING? (WITH EXAMPLE)](https://www.goeleven.com/blog/event-modeling/)
- [Event Modeling - A New Approach to Software Design](https://www.infoq.com/articles/event-modeling/)
- [From Model to Code: Event Modeling & Axon Framework](https://developer.axoniq.io/w/from-model-to-code-event-modeling-axon-framework)

## ๐Ÿ“บ Videos

> Official Event Modeling YouTube channel: [Event-Driven Information Systems](https://www.youtube.com/@eventmodeling)

- [Event Modeling Workshop - Adam Dymitruk](https://www.youtube.com/watch?v=gyhR5Wey6_s) - Full mini-workshop for InfoZone.se on Event Modeling.
- [Guidance Using Event Modeling](https://www.youtube.com/watch?v=sr3pMaLHYyQ&)
- [Copenhagen DDD Event Modeling with Adam Dymitruk](https://www.youtube.com/watch?v=U_MwAEf8V_A)
- [Event Modeling and Wardley Mapping with Chris Daniel](https://www.youtube.com/watch?v=FykEYRUrasI)
- [OAuth2 Event Modeling in Go](https://www.youtube.com/watch?v=32lvL_Un8ko)
- [Event Sourcing, Event Modeling and Event Storming](https://www.youtube.com/watch?v=tkn1p7LUY2o)
- [Event Modeling and Wardley Mapping with Chris Daniel](https://www.youtube.com/watch?v=FykEYRUrasI)
- [Event Modeling a Time Tracking System](https://www.youtube.com/watch?v=Ok_V2VDy-ns)
- [Sagas Don't Exist](https://www.youtube.com/watch?v=Q4iVt8GeOsE&t)
- [CQRS and Event Sourcing Introduction with Greg Young](https://www.youtube.com/watch?v=AspkNFjhHIM)
- [Small Design Up-Front Removes Agile](https://www.youtube.com/watch?v=mCZ8xQlR5yY)
- [MrDev.pl | Krzysztof Owsiany | Moje 5 minut](https://www.youtube.com/playlist?list=PLfQV-LT-sb2EwGOdnnow-2hXPH0l6URt1) (๐Ÿ‡ต๐Ÿ‡ฑ Polish)

## ๐ŸŽ™๏ธ Podcasts

- [ADD DOT | Event Modeling and Event Sourcing](https://play.acast.com/s/add-dot/adam-dymitruk) - host: Vaughn Vernon
- [semaphoreci.com | Adam Dymitruk on How to Upgrade Your Toolbox with Event Modeling](https://semaphoreci.com/blog/adam-dymitruk-event-modeling)
- [devsession.pl | Event Modeling โ€“ Rafaล‚ Maciฤ…g](https://devsession.pl/event-modeling/) (๐Ÿ‡ต๐Ÿ‡ฑ Polish) - host: Grzegorz
Kotfis

## ๐Ÿ› ๏ธ Tools with Event Modeling support

Whiteboards and everything else with can help you lead Event Modeling workshop.

- [miro](https://miro.com/)
- Templates:
- [eventmodeling.org | Event Modeling Cheat Sheet](https://miro.com/app/board/uXjVOia7ydY=/?share_link_id=194982904636)
- Examples:
- [eventmodeling.org | Event Modeling Tutorial: Time Tracking System](https://miro.com/app/board/o9J_lNYWcsI=/)
- [eventmodeling.org | TODO List](https://eventmodeling.org/event-modeling.rtb)
- [mrdev.pl | Krzysztof Owsiany | CatchTheFlow](https://miro.com/app/board/o9J_kwQS0ls=/) + [Git (implementation)](https://gemustudio.visualstudio.com/_git/CatchTheFlow)
- [ZycieNaKodach.pl | Mateusz Nowak | Table Soccer Tournaments system](https://miro.com/app/board/o9J_lOEebqI=/?moveToWidget=3074457356075616433&cot=14) + [GitHub (implementation)](https://github.com/MateuszNaKodach/CodersCamp2020.Project.FullStack-Node-React.TableSoccerTournaments/tree/develop/backend)
- [ZycieNaKodach.pl | Mateusz Nowak | Programming course management system](https://miro.com/app/board/o9J_lQvnN28=/?moveToWidget=3074457362407512031&cot=14) + [GitHub (implementation)](https://github.com/MateuszNaKodach/coderscamp/tree/main/packages/api/src/module)
- [ZycieNaKodach.pl | Mateusz Nowak | StarWars Quiz](https://miro.com/app/board/o9J_kg8fTO4=/?moveToWidget=3074457351245562568&cot=12) - for frontend development bootcamp
- [ZycieNaKodach.pl | Mateusz Nowak | Event Modeling workshops based on GitHub domain](https://miro.com/app/board/o9J_lOPDQoc=/?share_link_id=595878799640)(๐Ÿ‡ต๐Ÿ‡ฑ Polish) + [GitHub (implementation) - DDD.EventSourcing.EventModeling.Kotlin.NodeJS.DotNet.GitHubClone](https://github.com/MateuszNaKodach/DDD.EventSourcing.EventModeling.Kotlin.NodeJS.DotNet.GitHubClone)
- [Figma](https://www.figma.com/)
- Templates:
- [EventStorming | ZycieNaKodach.pl](https://www.figma.com/community/file/1090711660464730523)
- Examples:
- [draft.io](https://draft.io/)
- Templates:
- [Event Modeling](https://draft.io/example/event-modeling)
- [oNote](https://www.onote.com/)
- [Modellution (beta)](https://www.modellution.com/)
- [prooph BOARD](https://prooph-board.com/)
- Examples:
- [Event Modeling | Hotel example](https://free.prooph-board.com/inspectio/board/fa333058-226b-424c-b48a-8663c44fb0ea)

## ๐Ÿง‘๐Ÿปโ€๐Ÿ’ป Code examples

Repositories with software implementations from Event Modeling

// TODO: WAITING FOR YOUR CONTRIBUTIONS
- [fmodel | Restaurant System](https://github.com/fraktalio/fmodel-demos)

## ๐Ÿ’ก Case studies

- [Wimma - Event utilization in the start-up world](https://www.linkedin.com/pulse/wimma-event-utilization-start-up-world-per-%25C3%25B6kvist/) - Per ร–kvist

## ๐Ÿ’ฌ Online Communities

- [Event Modeling Discord](https://discord.gg/YqNrCapdTh) - leaded by Adam Dymitruk
- ~~-[Event Modeling Slack](https://join.slack.com/t/eventmodeling/shared_invite/enQtNzE0NjAyMjMwNjQ2LTY1NjgzZWI4ZjE0NmM0MWU0OGQwNjA3ZTZkZWViYWUzMTRjZWViYzdhZWMzNWMwZjQyM2VhMWVjZWQ5NjNjMjU) - replaced by Discord~~

## ๐Ÿค– Prompt Engineering
- [ChatGPT | Event Modeling Architect](https://chat.openai.com/share/378a24fc-e016-4806-af27-7a97ebf04cd5) - Adam Dymitruk

Prompt content 2023.08.26
you are an event modeling architect. you describe everything in steps using example data. every step is either a state change or a view into state.

each state change step has 4 items:
1. the screen that shows how the state change is initiated by the user including example data.
2. the command that contains the information that's needed to change the state including example data. only one command is allowed in this type of step. minimal information is used to mark the intent to change the state. this command can fail if business rules are broken.
3. the resulting event with the information that shows how the state is changed including example data
4. a reference to the previous step.

each state view step has 4 items:
1. the screen with what information is available to view with example data,
2. the read model that contains the model that populates the screen including example data. this is the result of a reducer over any relevant previous events. It may contain default data if no relevant events occured yet. only one read model is allowed in this type of step. it includes relevant ids that can be used by the system to accomodate commands.
3. a list of relevant events including the step they were created in that happened in the previous steps to make the informaton available
4. a link to the previous step

screen descriptions will include itemization of controls such as text boxes, lists, buttons, radio buttons, checkboxes, menus etc.

When a state view step connects to a state change step, they share the same screen so please repeat the screen between the 2 if they are related. When a state change step is followed by a state view step, references to relevant previous events serve as a link. These links ensure that there is referential integrity to the data in the system being shown. State changes are only user initiated. Any other state change is strictly deduced from a reduction of previous events. There are no explicit commands to adjust product inventaries or total prices.

Steps can also be called slices. A slice can be either a state change or a state view. Example data is used in each component - not just the property names. Data can be traced through the steps. Use realistic data and avoid gerenarlities like "Prouct A". Use integers or UUIDs as identifiers, but don't show them on the screens. You never combine operations into one step. if the instructions say something like "remove 2 products" you will make 2 steps to show explicitly how that happens.

Each command will have a suite of tests in the style of Given-When-Then GWT from BDD with the following format: "Given" is a set of 0..N events. "When" is the command. "Then" is one event showing the resulting state change if the command was successful. "Then" can be an exception if the scenario shows the command failing. The minimal amount of test is 2: 1 for a failure, 1 for a success. But more is usually typical to show data variations.

Each read model will have a suite of tests in the style of Given-When-Then GWT from BDD but without the "When" step. The "Given" is a set of 0..N events. The "Then" is a model that is the result of running a reducer over the events from the "Given" events.

The tests for commands and read models will be fully listed after all steps of the system are described.

Now that you know what to do, please architect the following system:

comletely show what happens when a user sees a page listing 10 different products, adds 2 products and removes one of them from their basket in an online store and then goes to checkout and pay. Please keep track of inventory (but not viewable by the end user) along the way and the users invoice history. show all tests needed.

## Courses & Workshops

Please mark if they are free (๐Ÿ†“) or paid (๐Ÿ’ฐ).
- [Introduction to Event Modeling by Bobby Calderwood](https://developer.confluent.io/courses/event-modeling) ๐Ÿ†“
- [Vaughn Vernonโ€™s IDDD Workshop Series | Event Modeling & Event Sourcing ](https://kalele.io/training/event-modeling-event-sourcing/)(๐Ÿ’ฐ latest price: ???)

## Companies

Where Event Modeling is used for software development or consultancy services / workshops facilitating.

- [Adaptech Group](https://adaptechgroup.com/) - CEO/Founder: Adam Dymitruk

## Contribute

Contributions welcome! Read the [contribution guidelines](contributing.md) first.