Every year I need a way to rank Eurovision entries and argue about them with friends. This year I just built the app.
The atmosphere makes this kind of thing possible in a way that feels like the early web — I had an idea, I built it over a weekend, and the protocol handled identity and data storage for free. No user accounts to manage, no database of rankings to maintain. Your ranking lives on your PDS, not my server.
The Concept
All 35 Eurovision 2026 entries show up as draggable postcards. Drag to rank, give star ratings, write handwritten-style notes on each one. Sign in with your atmosphere account and your rankings save automatically to your PDS. You get a shareable profile page (/@yourhandle) showing your ranked postcard wall that anyone can see without logging in.
The Aesthetic
I went all in on the postal theme. Perforation edges on cards using CSS mask-image with radial gradients. Paper texture overlays via SVG fractal noise. Each country gets a stamp with the correct denomination in their local currency (CHF 1.10 for Switzerland, €0.85 for France). The typography mixes Libre Baskerville, Bricolage Grotesque, Special Elite, and Caveat for the handwritten notes. It’s a lot — but it’s Eurovision, so restraint felt wrong.
How It Works
SvelteKit 5 with runes, Turso for the tiny bit of state that isn’t on your PDS, and AT Protocol OAuth for identity. Rankings save with a 2-second debounce on any interaction. The whole thing is nearly stateless — your ranking is a single ATProto record keyed by year, with array position as implicit rank.
There’s also a sticker picker so you can stamp emoji on your profile’s postcard wall, because why not.