Projections for gamification in a social app - Anton Stöckl - DDD Europe 2023
YouTube Viewers YouTube Viewers
28.3K subscribers
339 views
0

 Published On Jan 8, 2024

Domain-Driven Design Europe 2023
https://dddeurope.com -   / ddd_eu   - https://newsletter.dddeurope.com/   / domain-driven-design-europe  
Organised by Aardling (https://aardling.eu/)


We have this company-internal social app where ppl. get 3 random cards with social tasks they need to finish to earn points, they can also reject a card once a week. For gamification/involvement/fun we have introduced "achievements", for some of them the players get extra points. E.g.: "first card of a deck" (cards are organised into different decks), 3rd task ever, 8th task ever, complete deck, .... .

Interesting parts, apart from how cool projections are to create any sort of metric you invented while the app is already live, could be:
- How we implement that with EventStore DB with subscriptions per "achievement" where we store commit checkpoints;
- Issues/open questions we just ran into which are based on the design at a point in time we did not know about "achievements" (not everything is possible/simple with ES);
- How much sanity checks, e.g. order of events, to do for such "view model" projections aka. ;
- How much should we trust our events?

Anton Stöckl works for MaibornWolff GmbH in Munich as a Senior IT Architect since 2019.

He brings along more than 2 decades of experience in professional software development with roles as developer, software architect, and team lead.

He is especially interested in Domain-driven Design and how to build solid and loosely coupled Microservice architectures.

Another important aspect for him is "socio-technical architecture" - a holistic approach to align IT architectures and autonomous agile development teams.

He loves to coach or mentor development teams, run workshops, and to write blog posts.

Some other important paradigms, architectural styles, and modelling methods he likes to apply:

Hexagonal Architecture (aka. Ports & Adapters)
Event-Sourcing and CQRS
Distributed, event-driven systems
Event Storming
TDD, BDD, ATDD
Trunk-based development
Lately, he is working with Golang using a functional style of programming as much as possible and applicable.

show more

Share/Embed