Our public development site
got an update.
When you look at the platform page
or the screenshot below in this post, you should notice that the platform list (aka GamingEnvironments) now contains the concrete names of the connected titles (aka TransliteratedStrings). Previously it only contained the "IDs" of the titles.
This might seem "normal", "standard" and "easy to achieve" for you, but it wasn't. And that's because of the used technical instruments:
- I used two seperated bounded contexts according to Domain Driven Design principles
- all entered data for each bounded context is saved in events ("event sourcing")
- what you see on this page is a "read model", which is derived from all "events" that occured before when I entered data with "commands" (that is called CQRS)
These principles will build the foundations of our whole core domain application:
- the seperation of the bounded contexts make it possible to maintain the source code in the long term
- based on these principles it is possible to build multiple/different read models for the same data (e.g. one which contains all entered data, and one that contains only the data that is validated and proved by "mods" or so)
- we can attach additional information to all "data input events" (e.g. what was the source of the information, or how is it classified)
- other read models from all saved events can be created (e.g. a user based list of actions or anything that could be derived from the events)
- if we have some kind of bugs in the code that creates a read model, we could fix the bug and create all read models new from ground up based an all the saved events (or we could extend a read model after some time and simply regenerate it with the extension)
Read the above list again and think about it. Then you might understand why I am quite excited about this update.