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.
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.
Public roadmap & discussions
Design proposals, feature requests and decisions happen in GitHub Issues and Discussions, not behind closed doors.
Community-driven
Anyone can propose ideas, report bugs, or contribute code, art, docs and example games.
Small, reviewable changes
Work lands through pull requests reviewed by maintainers and the community.
Modular by design
The engine, UX and frameworks stay loosely coupled. Adopt only the pieces you need.
Free and MIT licensed
Use it for hobby projects, game jams, classrooms or commercial games. No strings attached.
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.