Introducing my Catan Project
Fri Aug 29 2025
I'm starting a new coding project - building a Catan web app.
Written by: Wesley Witsken

Building My Own Game of Catan
I’ve officially started a new side project: building my own digital version of Catan. It’s part coding exercise, part experiment, part excuse to spend too much time thinking about sheep, wheat, and brick.
I want this project to be fun, but also a way to push myself into a few technologies and patterns I’ve been wanting to explore. So, here’s the plan (at least, for now).
What I’m Trying to Build
At its core, this will be a multiplayer game of Catan that you can play in a browser. I’ll build a backend in C# with Clean Architecture (because nothing teaches like practice, even if it’s “overkill”), and I’ll pair it with a single-page frontend — probably React. Eventually, I’d love to add a 3D renderer (thinking Three.js or similar) so the board feels alive and interactive.
On the multiplayer side, I’m using SignalR for real-time updates. That way, when you place a settlement, roll a 7, or curse at the robber, everyone’s board updates instantly.
Why Redis?
Here’s the unique twist: I want to use Redis as the primary database.
That might sound unusual, since Redis is usually a cache or a secondary store, but for a board game like this, I don’t care about data sticking around once the game is over. If the game ends, the data can vanish — perfect for Redis.
Of course, this means I’ll be doing a ton of JSON serialization/deserialization, storing objects directly in Redis, and experimenting with what Clean Architecture looks like when the “persistence layer” is ephemeral. I don’t see a lot of people talking about Redis as the only database in this kind of setup, so I’m curious to see how it plays out.
Orchestration with Aspire
I also plan to use .NET Aspire for orchestration. Since this project will have multiple services — backend API, SignalR hub, Redis, frontend, etc. — Aspire should help me glue everything together in a clean, developer-friendly way. It will also help me deploy to the Azure cloud when I’m ready. It’s not strictly necessary, but again… overkill is kind of the point here.
Where I’m Starting
Right now, I’m focusing on the backend domain logic — things like representing the board, enforcing turn order, and handling the rules (trading, robber moves, longest road, etc.). Once I have a solid domain model, I’ll start wiring it into SignalR and Redis.
What’s Next?
This is just the start of the journey. I plan to post updates as I go:
-
How I’m modeling the game in Clean Architecture
-
My adventures (and misadventures) with Redis as a database
-
Real-time game loops with SignalR
-
Building a board UI
I’m not promising a polished product — but I am promising to share the process, lessons learned, and problems I’m struggling with.
So, stay tuned — the road (longest road?) is just beginning.