Open source · MIT licensed

Build the board game you want to play.

CouchPotatoes is an open source game engine, UX toolkit and framework for digital board games and card games. We handle the turns, decks, dice and lobbies, so you can focus on the idea that makes your game worth playing.

Free forever Community-driven Built in the open

What's inside

Everything under the table, so you can focus on the game.

Most digital tabletop games rebuild the same groundwork: state, rules, turns, shuffling, syncing players and a UI that feels good in the hand. CouchPotatoes packages that groundwork into pieces you can pick and choose.

Game engine

The rules brain of your game: deterministic, testable and easy to reason about.

  • Game state, turns & phases
  • Rules validation & legal moves
  • Seeded randomness for dice & shuffles

UX components

Reusable, accessible building blocks that make a game feel great to play.

  • Boards, cards, hands & decks
  • Tokens, timers & score tracking
  • Lobbies, invites & game flow

Frameworks

Opinionated patterns and tooling that take you from prototype to playable.

  • Project structure & templates
  • Rule testing & simulation
  • Local and online multiplayer

Idea to prototype

Describe your rules. Play tonight.

Define how your game works, and CouchPotatoes handles turn order, legal moves, shuffling and keeping every player in sync. Swap in our components or bring your own UI.

Illustrative API. The engine is being designed in the open, so shapes may change. Come help decide.

import { defineGame, deck } from '@couchpotatoes/engine'

export default defineGame({
  name: 'High Card',
  players: { min: 2, max: 6 },

  setup: ({ players, random }) => ({
    deck: random.shuffle(deck.standard52()),
    hands: players.map(() => []),
  }),

  moves: {
    draw: ({ state, player }) => {
      state.hands[player].push(state.deck.pop())
    },
  },

  // Turn order, validation and sync are handled for you
  turn: { order: 'clockwise', movesPerTurn: 1 },
})

Who it's for

Made for the people who love the table.

Game designers

Prototype and playtest digital versions of your designs without waiting on a full engineering team.

Developers

Ship board and card games without reinventing state management, networking and UI for the hundredth time.

Players & hobbyists

Tinker with, mod and contribute to the games you love, and learn how they work under the hood.

How we build

Developed in the open, with the community.

CouchPotatoes is a community project. Planning, design and code all happen on GitHub where anyone can follow along and pitch in.

01

Public roadmap & discussions

Design proposals, feature requests and decisions happen in GitHub Issues and Discussions, not behind closed doors.

02

Community-driven

Anyone can propose ideas, report bugs, or contribute code, art, docs and example games.

03

Small, reviewable changes

Work lands through pull requests reviewed by maintainers and the community.

04

Modular by design

The engine, UX and frameworks stay loosely coupled. Adopt only the pieces you need.

05

Free and MIT licensed

Use it for hobby projects, game jams, classrooms or commercial games. No strings attached.

06

Original games only

Our examples showcase original designs and public-domain classics, and we respect the IP of existing games.

Where we are

Early days. Great time to join.

The architecture and first components are taking shape now. Contributors joining today get to shape the direction of the project.

  • NowCore engine design: state model, turns & phases, moves and seeded randomness
  • NextFirst UX components: cards, hands, decks and a basic board
  • NextStarter templates and an example card game
  • LaterOnline multiplayer, lobbies and matchmaking
  • LaterRule simulation, bots and playtesting tools

Pull up a chair

Help build CouchPotatoes.

Code, game design feedback, playtesting, documentation, art: every contribution makes the table bigger. Start with an issue, open a discussion, or send a pull request.