Projects

Digxit live

A party card game for a television and everyone's phones. One Node process, one SQLite file and 850 MB of watercolour cards, on a server with a single core and a gigabyte of memory. The artwork is the whole point, so the interface gets out of its way.

Six people in a lamp-lit living room watching a game of Digxit on the television, two of them holding phones showing their hands of cards.
The television screen mid-round, with two phones standing at an angle in front of it. On the television, five watercolour cards face up under the clue “a borrowed moon”, vote markers on three of them, and a score rail of five players. One phone asks its player to pick a card and give it a clue; the other waits with a hand of six cards.
Curichkin waiting for its first table

A Munchkin-shaped party game for a television and everyone's phones, set in Curitiba and written in Portuguese so that only a curitibano can check the jokes. The engine is a pure reducer that replays byte for byte from a seed, and the combat arithmetic lives in exactly one function, so the screen cannot disagree with the rules in front of everyone. 175 cards, drawn four times over.

The television mid-fight, with a phone lying in front of it. On the television a yellow strip says it is Maria Eduarda's turn and that she accepted Zé's help; the table's 22 stands against the monsters' 8, the monster is O IPTU que Venceu Ontem, a ledger adds up both sides, and six players' tableaus run down the right with their levels and equipment. The phone, on its side, shows Gabriel's own tableau: a wool beanie, a ready chimarrão and rain galoshes, each with its bonus.
Flip 7 scoreboard live

A score pad for the card game Flip 7. Tap the cards each player ended the round with and it does the arithmetic: doubling before the modifiers, a bust to zero, fifteen more for seven cards, first to 200. No backend. The game lives in localStorage and survives a refresh, which is all the resilience a kitchen table needs.

Two phone screens at an angle. One shows the standings in round 7, Léo leading on 166 with Caio, Duda and Bia close behind, and Bia's pad with seven cards tapped and a Flip 7 +15 badge. The other shows the history table of six rounds, two busts in red, and the totals.
Petinder parked development

A pet adoption app in Brazilian Portuguese. React Native and Expo Router on the front, Supabase behind it for Postgres, auth, storage and realtime. TanStack Query holds the cache, so a cold start paints from last-known data instead of a spinner.

Two phone screens at an angle: a swipe card for Pipoca, a one-year-old corgi 681 km away, and the matches list showing Urso the husky with two unread messages and Bidu the golden retriever.
Denon panel on the wall

C on an ESP32-S3, driving a 480 by 480 touch panel that controls Spotify and the amplifier. Signed over-the-air images, anti-rollback, and real hardware that has been running long enough to be boring.

Three of the panel's screens at an angle: Reflections by Kiasmos over a dark gradient cover, Weightless by Marconi Union where the near-white cover forces the type to hold its own contrast, and a QR code for pairing Spotify from the panel itself.

About

I explore emerging tech to understand what it can really do, where it breaks, and whether there’s something interesting to build with it.

I build things end to end, mostly alone, and I document them as though someone else will have to pick them up. Usually that someone is me, a year later, with no memory of why any of it is the way it is.

Most of what I learn ends up in that documentation rather than in the code, because the interesting part is almost never the feature.