DDD Europe 2023 - Program

Projections for gamification in a social app

EventSourcing Live - EventSourcing Live Talk (50m)


Anton Stöckl

Anton Stöckl
Wednesday 7 from 14:00 until 14:50 in Room 6+7

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/envolvement/fun we have introduced "achievements", for some of them the players get extra points. E.g.: "first card of a deck" (cards are organized 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 sucscriptions 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?


Basic idea about ES and projections.

About Anton Stöckl

Twitter LinkedIn Blog Sessionize

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 modeling methods he likes to apply:

  • Hexagonal Architecture (aka. Ports & Adapters)
  • Event-Sourcing and CQRS
  • Distributed, event-driven systems
  • Event Storming
  • Trunk-based development

Lately, he is working with Golang using a functional style of programming as much as possible and applicable.