Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 3 months ago
JSON representation
A curated list of awesome resources (articles / videos / courses / repositories) about Event Modeling.
- Host: GitHub
- URL: https://github.com/MateuszNaKodach/awesome-eventmodeling
- Owner: MateuszNaKodach
- Created: 2023-03-19T23:20:17.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-08-26T21:04:17.000Z (about 1 year ago)
- Last Synced: 2024-08-14T03:02:34.241Z (3 months ago)
- Topics: awesome, awesome-list, ddd, domain-driven-design, event-modeling, eventmodeling, eventsourcing, eventstorming
- Homepage:
- Size: 97.7 KB
- Stars: 12
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- Contributing: contributing.md
- Code of conduct: code-of-conduct.md
Awesome Lists containing this project
- ultimate-awesome - awesome-eventmodeling - A curated list of awesome resources (articles / videos / courses / repositories) about Event Modeling. (Other Lists / PowerShell Lists)
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 DymitrukPrompt 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 stepscreen 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.