Capi
Dominican dominoes, online with your people: 2v2, capicúa, trancao, no accounts.

Live at playcapi.com. 1v1 works end to end; 2v2 is on the way. Code private.
The idea
Dominoes back home is a table game in every sense: two teams, your partner across from you, and a lot of opinions. Capi brings that table online without the friction that kills family game nights: no accounts, no installs. You pick a name, share a link, and play.
What I built
The heart is a rules engine written as a pure TypeScript reducer with zero dependencies: types, moves, validation, and Dominican scoring (capicúa, trancao, and the rest) in one framework-agnostic package with 62 tests. The web app and the mobile app both consume it, so the rules exist exactly once.
On top of that, the web app is Next.js with Supabase: Postgres for state, Realtime subscriptions so moves land on everyone’s screen instantly, and SQL migrations checked into the repo. The tables have names from home: Barbería Don Ramón, Colmado La Esquina, El Patio de Tía. Quick-chat keeps the trash talk alive without a keyboard.
The hard parts
01
One engine, every platform
Keeping the engine dependency-free is what lets web and mobile share it byte for byte, and what makes 62 tests cover every platform at once.
02
Real time without accounts
No signups is a feature, not a shortcut: a shared link is the whole invite flow. The tradeoff is doing presence and reconnection carefully without a stable user identity.
03
The rules are cultural
Generic dominoes apps get the Dominican table wrong. Encoding 2v2 con tu frente, capicúa, and trancao faithfully was the whole point, and the engine’s tests pin them down.
What’s next
Finish 2v2 end to end and ship the mobile app.