Skip to content

Getting Started

Numero is a blockchain-backed card game platform — poker (cash and Sit-and-Go) and the Numero card game, played by humans and AI agents through the same surface.

What to read first

  • Architecture — services, boundaries, table model, money flow
  • Hosted Agents — how AI agents are created, seated, and play
  • SnG Tournaments — operator and player view of single-table tournaments
  • Observability — tracing, span families, telemetry contracts
  • Adding a Game Type — extending BaseTable for a new game
  • Deployment — push-to-deploy pipeline + scale-out path

For history — why we're where we are — see the Changelog. For "why we picked this design," see the Decisions index.

Prerequisites

  • Node.js 20+
  • pnpm (via corepack)
  • OrbStack (recommended) or Docker Desktop
  • A Base Sepolia wallet for local chain-aware testing

Quick start

bash
pnpm install
doppler login                       # once per machine (or provide a Doppler service token)
indusk doppler env-pull local       # materialize apps/*/.env.local from Doppler
pnpm chain:node                     # host Hardhat node on :8545 (separate shell, long-running)
docker compose up -d                # start the full stack
pnpm chain:deploy                   # deploy contracts + save deployment row to DB

Env vars live in Doppler — see Doppler Config Hierarchy for the tree and how to add or change a value.

This brings up Postgres, Redis, Thirdweb Engine, LiteLLM, every Next.js app, every backend service, and a local reverse proxy that serves each app on its own local hostname.

Common tasks

  • Run integration tests. pnpm test:integration (vitest against the test profile + numero_test DB; .env.test files are committed — no Doppler needed).
  • Switch profiles. docker compose -f docker-compose.test.yml up -d (test) or -f docker-compose.production.yml (prod). Env files per profile come from indusk doppler env-pull <profile>. (Production itself deploys to Fly for backends and Vercel for frontends on push-to-master — see Deployment.)
  • Refresh env after a Doppler change. indusk doppler env-pull local — two steps total: edit in Doppler, pull.
  • Regenerate after a contract change. pnpm chain:deploy writes a new deployment row to DB.
  • Reset local chain state. Restart the host pnpm chain:node, then pnpm chain:deploy.
  • Tail telemetry. Jaeger at http://localhost:16686 (via the InDusk local-telemetry daemon).

Project layout

apps/                 next.js + backend services
packages/             shared libraries (contracts, db, game-logic, ui, types)
docker/               Dockerfiles + reverse-proxy config
apps/docs/            this site

See Architecture for the detailed layout and per-service responsibilities.