Skip to content

Oct 16, 2026

Central419

My earlier attempts at building an all-in-one webapp for the Dune board game

All posts

In the last post I ended on an asset generator: one source of truth for the factions, with every image drawn from it. That sounds like a single project. In fact it was several, and looking back, they share a theme I never planned: I kept switching databases. Or trying very hard to have none at all.

Every project was a new answer to two questions. Where does the data live? And who turns that data into images?

dune.games: counting wins

The first answer was dune.games, a dashboard for the games we played on the Discord server. It tracked how long games took, on which turn they were won, and how: strongholds, a correct prediction, a Fremen or Guild special victory, a forfeit or a timeout. All of it was split by rule set: GF9 basic, GF9 advanced and Dreamrules.

I’ll admit I built it to prove a point. I was convinced that games under the GF9 rules lean towards a stall-out, and that the rule set I was a fan of had fixed that. A dashboard full of real games felt like the most convincing way to show it.

And it did show it. In this screenshot from March 2021, the outer two rings are the GF9 rules: 14% of basic games and 22% of advanced games went all the way to turn 10. In Dreamrules, the inner ring, hardly any did. Most of those games were decided between turns 3 and 5, or around turn 8.

Victory turn distribution, March 2021.

The bigger dream was to have the Tabletop Simulator mod report wins, or even whole games, automatically. That’s why the site asked players for their Steam ID.

At its peak, dune.games held about 1,000 logged games.

The data lived in FaunaDB. Fauna has since shut down, and the data went with it. The site is still online, though, and its charts are now empty, waiting patiently for games that will never be reported.

dune.games today.

dune-app: a creator for everything

Our homebrew looked homemade. The very first Dreamrules “logo” was the GF9 box with a rainbow pasted behind Shai-Hulud. I wanted our cards and sheets to look as official as the real ones.

That became dune-app. It started small: in September 2021, my first attempt at drawing a leader token in code was a red ring, an empty disc where the portrait would go, and a strength of 12. It grew into a much more ambitious app, with sign-in, users, rule sets and a GraphQL API.

Its heart was the Creator: for every kind of game asset, a live preview next to an editor. Leader cards, treachery cards, alliance cards, faction sheets, tokens and shields could all be edited there.

One of my first leader tokens in code, September 2021.
Later, a leader card and its editor.
The Creator.

The Creator still works today. The rule sets and users pages don’t, because the backend behind them is gone. A database again.

StackBlitz: no database at all

So in September 2023 I tried the opposite: no database whatsoever. The Dune Online Generator on StackBlitz keeps every faction as a code file. From those files it draws full faction sheets with advantages, alliance advantages, fate rules, Karama effects and a Q&A, plus faction, leader and troop tokens, and the start of a paged rulebook laid out for A4.

Some of the Q&A sections still say “LALALA?”. It was a prototype, after all.

dune-assets: git as the database

In March 2024 I took “no database, no costs” as far as it would go. In dune-assets, every asset is a Storybook story. Each time a change lands, a GitHub Action builds the stories, opens every one in a headless browser, takes a picture, and commits the images back into the repository. Git was the database, CI was the renderer, and GitHub hosted the images for free.

It was wildly inefficient. It also worked. The repository holds almost 500 generated files: traitor and treachery cards, spice and alliance cards, leader, faction, troop and tech tokens, shields, faction sheets and a Dreamrules rulebook PDF.

Cards and tokens, each one a picture CI took of a story.

It was also the first of these projects where other people joined in. Thanks to Laurens1234 for the CHOAM, alliance and card text updates, to Ralf Boltshauser for fixing Jamis’ strength, and to Jacek C. for adding GF9’s Ecaz and Moritani treachery cards and fixing typos.

Where the data lives now

Each of these projects taught me something that dune.zone now builds on. Factions are data, not pictures. Assets are drawn from that data, not drawn by hand. And everything, from the sheets to the rulebook, references the same source.

dune.zone does have a database, and I’ve made my peace with that. But the data finally has a home that should outlast the next shutdown, and the images are drawn on the page, live, from the same data.

Where that home is, and how it all fits together, is the story of the next post. Fair warning: that one gets a bit technical.

House Atreides in 2023, and on dune.zone today.