rolld: I put my board game logs on AT Protocol
For years my board game log lived in a little WordPress plugin I wrote. rolld is my next small experiment: the same log, rebuilt on the AT Protocol, where each play is a record on your own PDS. Give it a try!
y wife and I play board games. For a few years now, I’ve kept a log of what we played: the date, whether it was any good, who won. I like to quantify things, and it always feels good to be able to answer “What game did we play the most this year” and similar questions.
Up until now, that log lived in a quiet corner of this very blog. I’ve written myself a small WordPress plugin that adds a custom post type for board game plays, and I’ve been slowly filling it up ever since. You’ll find games displayed in some of the pages on this blog via bits. It works fine, and maybe most importantly the data is all mine.
So this isn’t a story about escaping a silo. If you’ve read my blog in the past few months, you’ll know I’ve been experimenting with ATProto with different projects (SkyPress, comments on atproto, ATmosphere, and most recently AT Mot. Each one has been me taking something I actually use and rebuilding it on the AT Protocol, just to find out what the protocol feels like behind the scenes. rolld is that, pointed at my board game shelf.
You can have a look right now at rolld.at.
Its name reads as “roll’d”, as in rolling dice, and it happens to end in .at because ATproto. Knowing me, you won’t be surprised that I’m still not great at naming things. 🙂
What it does
The loop is deliberately small, and built for a phone, because you log a game at the table right after you finish, not sitting at a desk an hour later.
- Log a play. Search the game, set the date, submit. If you want you can add more details, like who played with you, the scores, a winner, how long it ran, a photo of the board, or a note on how it went.
- Rate a game.
- See what people you follow are playing, if they’re on rolld too.
- Check your history, your most-played games, your top-rated ones, what you’ve played this year.
- Share a play to Bluesky, if you feel like it.
Every game gets its own page as well, bringing a bit of community feeling to the tool. You get to see who’s played it, and what the people you actually know thought about it. My goal wasn’t to out-do BoardGameGeek, obviously, so it pulls data from BGG and uses its API behind the scenes.
Where the plays actually live
Here’s the part that’s different from my old WordPress version. rolld doesn’t have a database of your games. Each play and each rating is written as a record to your own PDS, signed by you. rolld is just a lens sitting on top, reading those records back and turning them into pages. If rolld disappeared tomorrow, your history wouldn’t; it’d still be on your PDS, still yours, still readable by any other app that understands the format.
And, same as with AT Mot, there’s very little behind rolld. It’s a folder of static files and a handful of public services I don’t run:
- Constellation, the backlink index I leaned on for AT Mot’s leaderboard, does the aggregate reads here too: who else has played a game, how it’s been rated across the people you follow.
- Slingshot handles record and identity reads, turning a handle into the right PDS to read from.
- Spacedust is the live firehose, so a friend’s play can turn up in your feed without a refresh.
All three come from microcosm.blue, run on community goodwill, and here I am leaning on that goodwill again. I’m very grateful it exists.
The one piece I do run is a small Cloudflare Worker. Board game metadata, the covers and weights and the catalog all come from BoardGameGeek. The Worker fronts BGG and caches it; the browser never talks to BGG directly. That’s the whole server. My data on my PDS, a few public indexes I don’t own doing the social heavy lifting, and one small Worker handling the AppView.
Building rolld also meant accepting some bottlenecks and limitations:
- The metadata is all BGG’s, and that’s a dependency. I looked at other options out there, but BGG really is the best there is. I did, however, try to keep it as an enrichment dependency, not an ownership one. Your records name the game themselves, so if BGG ever went away you’d lose the cover art, not the memory of the game you played.
- The social half leans on those public microcosm services. It’s the same independence tension I keep bumping into with ATproto: trying to be fully independent somehow keeps adding services to run. 🙂
- A record on your PDS is portable, but it doesn’t have a web page until an app makes one. rolld is that app. The raw, portable version of your data is always yours; the pretty, shareable version needs rolld, or something like it, to keep existing.
Give it a try!
Go and log a play at rolld.at. You can browse the public pages without an account; to keep your own log, sign in with your Bluesky / Blacksky / Eurosky / ATProto handle and your games will follow you around wherever you go.
The code is open, dual-licensed MIT / Apache-2.0 like ATproto itself, over on Tangled at tangled.org/jeremy.herve.bzh/rolld.
Let me know what you’ve been playing, and what you think of the tool! I’ll keep poking at it and making improvements to the interface in the next few days.
Did you enjoy this article?
Recommend it — Standard Reader surfaces well-loved writing to more readers across the network.