Notes: this demo is intentionally simplified for a portfolio.
This demo is a compact client for an American Keno prototype. It demonstrates a small PixiJS-powered grid UI with client-side selection, animated draw presentation, and integration with a backend game service.
The backend is implemented as a NestJS service that exposes a small set of REST endpoints backing the UI. Key endpoints used by this demo:
/api/new (POST) — creates a new ephemeral game session
and returns a gameId.
/api/info (GET) — returns game metadata (grid/draw sizes,
paytable/rules).
/api/select (POST) — accepts
{ gameId, numbers } to persist the player's selections
server-side.
/api/bet (POST) — updates the bet amount for the session.
/api/draw (POST) — performs the draw on the server and
returns drawn numbers, hit calculation and payout information.
/api/paytable (POST) — returns paytable rows for the
selected count or full paytable.
gameId, selectedNumbers,
betAmount, and createdAt. This allows
auditing and replaying draws for debugging.
crypto or a vetted RNG library).
At the heart of this demo is the main game engine, which handles number selection, draws, and win evaluation. Conceptually, here’s how it works:
constructor(),
setBet(bet), setSelection(numbers),
draw(), getScreen(),
getState().
Notes: this demo is intentionally simplified for a portfolio.