Allen

At a glance

The Canadian Fish lobby, with one card to open a table, one to join with a six-letter room code, and the rules in four lines.
Status
Shipped
When
Aug 2026
Role
Solo: game engine, server, client
Built with
  • TypeScript
  • React
  • Vite
  • Supabase Realtime
  • Vercel Functions
  • Playwright
  • Vitest

The story

The place to actually play. Someone opens a table, hands out a six-letter room code, and six people are playing Literature in their browsers. No accounts, and nothing persists past the room. Its moons are the rest of the family: FishAI’s bots and lab, the onboarding guide, and Fish Online, still to come: a home for the game beyond a single room code.

  • The server is the referee. The game logic that counts runs in serverless functions, and state reaches the six seats over Supabase Realtime.
  • Bots that deduce. Empty seats go to deterministic inference bots, which work out what every public ask and answer proves rather than guessing.
  • Practice drills. A drill suite for the skills the game rewards, for when five friends are not available.
  • Phone first. It is built for a table of people holding phones, because that is who plays.

This is the 48-card game: the four 8s are removed, leaving eight half-suits of six. The engine is covered by unit tests and fuzz tests, with Playwright for the browser.

Moons of Canadian Fish

  • FishAI

    Bots for Canadian Fish, a six-player card game of hidden information, and the simulation lab that measures whether they are any good.

    Flagship · In progress

  • Fish Onboarding

    Learn the card game Literature in about four minutes, in a scripted teaching game where you have to make the key moves yourself.

    Shipped

  • Fish Online

    Planned: a website for playing Canadian Fish online, the step after the demo. Nothing is built yet.

    Planned