Skip to content

Latest commit

 

History

183 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Capi 🁣

Dominican Dominoes, online. Play 1v1 or 2v2 (con tu frente) in the browser at playcapi.com or in the Capi app for iOS and Android. Real-time multiplayer, authentic rules, full Dominican flavor.

What is Capi?

Capi is the Dominican dominoes game you grew up with, built for the culture. No account needed: pick a name, share a 6-letter code, and run it. The rules are authentic (DOMINÓ, CAPICÚA, TRANQUE, VEINTICINCO), the tables feel right (barbería, colmado, patio), and every seat is a real person. English or Dominican Spanish, your call.

Features

  • 1v1 and 2v2 (con tu frente): head-to-head, or partners across the table (N-S vs E-W)
  • Real-time multiplayer: Supabase Realtime syncs moves instantly; app and browser players share the same table
  • Authentic Dominican rules, validated server-side so nobody can cheat
  • 3 table themes: Barbería Don Ramón, Colmado La Esquina, El Patio de Tía
  • Target score: first to 100 or 200
  • Quick chat + emotes: ¡Dale!, ¡Eso e'!, ¡Qué lo qué!, 🔥, 💀 and more (predefined phrases only)
  • Sound + haptics: the tile slam you know, with a mute the table will thank you for
  • Bilingual: English and Dominican Spanish
  • No sign-up: session stored locally, share a code or link to invite

The rules, as played

  • DOMINÓ: play your last tile to win the round. Every pip still on the table counts for you, opponents and your own partner included.
  • CAPICÚA: close the round with a tile that matches both open ends. +25 bonus.
  • TRANQUE: the table locks with no legal moves. The side with fewer pips in hand wins the round.
  • VEINTICINCO: you play and every other player passes before your turn comes back. +25 on the spot, and the round keeps going. It stacks if you do it again.

Monorepo

Path What it is
apps/web Next.js 14 site + API at playcapi.com (Vercel)
apps/mobile Expo app (SDK 52, React 18.3.1 pinned) for iOS and Android
packages/engine Pure TypeScript rules engine + board layout, zero dependencies
packages/i18n Typed ES/EN string dictionaries shared by both apps
docs/ Release playbook, runbook, and store listing kit; start at docs/README.md

Tests live next to the code they cover: the engine suite (rules, scoring, a property suite that plays hundreds of random legal games per run to prove board tiles can never overlap at any screen width, and a seeded fuzz of full games), plus the web and mobile suites. npm run test:all runs all three from the repo root.

Getting started

Prerequisites: Node 20 (nvm use 20), a Supabase project.

git clone https://github.com/aaguasvivas/capi.git
cd capi
npm install

Environment: copy apps/web/.env.example to apps/web/.env.local and apps/mobile/.env.example to apps/mobile/.env, then fill in the Supabase values (the other variables are optional and documented inline). Run the SQL files in supabase/migrations/ in order in your Supabase SQL editor.

npm run test:all                         # engine, web, and mobile suites, from the repo root
npm run verify                           # test:all plus the em-dash check
cd apps/web && npm run dev               # web at http://localhost:3000
cd apps/mobile && npx expo start         # mobile via Expo Go (Node 20 required)

Shipping

Store identity, EAS build profiles, and the submission runbook live in docs/PLAYBOOK.md and docs/RELEASE.md; the 1.1 gate list is docs/m5-submission-checklist.md. Store copy (EN + ES) is in docs/store-listing.md.

License

MIT

About

Dominican dominoes, online: 1v1 and 2v2 real-time multiplayer with capicúa, trancao, and full Dominican flavor. No accounts.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages