Inspiration

Classic game nights are easy when everyone is sitting around the same table, but playing remotely often means dealing with accounts, downloads, subscriptions, or platforms that do not support familiar house rules.

We created House Deck to remove that friction. Our goal was to recreate the feeling of opening a deck of cards with friends: create a private room, share a short code, choose a game, and start playing.

## What it does

House Deck is a realtime multiplayer web app featuring seven classic card and board games:

  • Bluff
  • President
  • Crazy Eights
  • Go Fish
  • Hearts
  • Basic Rummy
  • Ludo

Players can create private rooms, invite friends with a room code, configure supported house rules, and reconnect without losing their seat or private game state.

Every game includes a responsive tabletop interface and its own rules engine. Players see their own cards and the public table, while opponents’ hands, draw piles, private selections, and other hidden information remain protected on the server.

## How we built it

We organized House Deck into three TypeScript packages:

  • A Next.js and Tailwind CSS frontend for rooms, lobbies, responsive game tables, and player interactions.
  • An Express and Socket.IO backend for realtime communication and authoritative room management.
  • A shared package containing typed contracts, house-rule validation, reusable utilities, and the seven game engines.

The backend validates every action, including room membership, turn order, game phase, card ownership, and game-specific rules. It sends sanitized public room updates alongside personalized game updates containing only the information each player may see.

Card shuffling and Ludo dice use server-side cryptographic randomness. Stable player identities and room-specific rejoin tokens preserve seats and hands through temporary disconnects.

During OpenAI Build Week, we used Codex as a repository-aware engineering collaborator. We gave it durable architectural, privacy, and testing instructions through AGENTS.md. Codex helped us inspect the codebase, plan features, implement game engines, improve responsive interfaces, write regression tests, and review hidden-state boundaries.

## Challenges we ran into

Our biggest challenge was supporting seven games without creating seven disconnected applications. Every game has different rules and state transitions. Bluff hides played cards, Hearts includes simultaneous passing, President supports multi-round role trading, Rummy handles recycling and blocked rounds, and Ludo requires precise board movement.

Protecting hidden information was another major challenge. Broadcasting an internal game object could reveal every player’s hand or the order of a draw pile. We addressed this by designing separate internal, public, and personalized representations of game state.

Reconnect support was also more complex than simply reopening a socket. Players must return to the same seat and recover the correct state during normal turns, private selections, intermediate phases, and completed rounds.

Finally, fitting hands, tables, players, and actions onto mobile screens required several iterations. We developed compact, table-first layouts that prioritize the current decision while moving secondary information into accessible sheets and menus.

## Accomplishments that we're proud of

We are especially proud that House Deck now supports seven genuinely playable games through one consistent room lifecycle.

We also built:

  • Server-authoritative move validation across every game.
  • Personalized updates that protect hands and other hidden information.
  • Reconnect support that preserves player seats and private state.
  • Configurable house rules with validated dependencies.
  • Development bots that use the same authoritative move paths as human players without seeing private opponent information.
  • Responsive tabletop interfaces for both card games and Ludo.
  • Automated tests covering game rules, invalid moves, reconnect behavior, lifecycle transitions, and hidden-state safety.
  • Consent-gated analytics with strict property allowlists so gameplay data remains private.

## What we learned

We learned that multiplayer game development is primarily about preserving invariants. A polished interface matters, but fairness depends on authoritative state, explicit privacy boundaries, reconnect-safe transitions, and careful testing of unhappy paths.

We also learned that hidden information must be considered during the initial state design rather than removed at the end. Separating internal state from player-specific views made the system safer and easier to reason about.

Finally, we learned that AI-assisted development is most effective when the agent receives durable context and clear boundaries. Giving Codex explicit architecture, privacy, scope, and verification rules produced more consistent results than treating each prompt as an isolated request.

What's next for House Deck

Our next step is moving beyond the current in-memory MVP by adding persistent room infrastructure and preparing the backend for production scaling.

We also plan to introduce optional public matchmaking. Players who do not already have a group will be able to choose a game and join an available table or matchmaking queue. Private rooms and short invite codes will remain central to House Deck, while public matchmaking will provide another way to discover players and start a game.

Public matchmaking will require careful work around skill matching, player conduct, moderation, reporting, abandoned games, and safe display names. We want to build these protections before opening rooms to strangers.

We also want to:

  • Add more classic games and optional house-rule variants.
  • Expand automated frontend and end-to-end testing.
  • Improve production-safe room lifecycle monitoring.
  • Continue refining mobile and accessibility support.
  • Gather playtesting feedback and simplify confusing interactions.
  • Explore optional accounts, player profiles, and longer-lived game sessions without compromising the private, low-friction room experience.

Built With

Share this project:

Updates