About Contact me Presentations rss feed  rss

Case study: The digital transformation of Santa's logistical nightmare

16 Dec 2022

Note: This is a cross post from Functional Feline Society, a collaboration between Elias Court and Myself.


This is the first post in a series walking through an example of a microservice with a Kafka integration using the Typelevel stack. We have chosen to showcase a simplified version of Santa’s Ledger. If you want to see the repo now, click here. Unbeknownst to most, Santa’s systems are actually supported by cats (the ones that go meow). The work here was kindly translated into English by our keepers.



This series of posts is a report on our experience building and running Santa’s Ledger, a well known, reliable system of gifting. One component of this report is a toy version of the real system designed for didactic purposes. This toy repo has representative examples of:

To keep the toy project simple and to the point, there are a series of decisions and assumptions we have made. Please see #Decisions & Assumptions for details.


Some of our keeper’s friends, who are coming from Akka and Alpakka, asked us about how to integrate with Kafka using the Typelevel stack. We decided an example would be a great place to start.

We looked but in our (not overly extensive) search we were unable to find a recent and succinct example of the above and set off to building one!

More importantly, it’s 🎄Christmas-time 🎄 and 🎅 Santa 🎅 needed a digital transformation.


With this example we aim to demonstrate the consumption of kafka messages, maintenance of local state and running an HTTP server using the Typelevel stack. The requirements are as follows:

Decisions & Assumptions

What’s next?

We’ll dive deeper into some of the technologies used over a series of blog posts throughout the festive period. If you have any preference in order, please let us know.

This blog post was supervised by Andrea Magnorsky and Elias Court

If you want to discuss this post, the best place right now for me is mastodon, please message me with your comment/question.