A decentralized architecture for playing card games.

0056bf8 Update redo file

3 years ago

#12 Allow pre-selecting cards

~subsetpark filed ticket on tamerlane todo

3 years ago


This project provides a decentralized HTTP callback-based architecture for playing card games.

It consists of two types of component:

  • a central server (this repo), which holds all game and player state, and which serves user interactions via javascript and websockets;
  • multiple game rules implementations, each of which implement the same set of endpoints and request format.

Games are configured by installing games on the central server as plugins, specifying a callback URL in the plugin config. From that point, users may begin a session of that game on the server, and the server will make calls to its configured URL whenever it needs to update game state.

In this way, developers can easily develop new games, using whatever technologies they like, as long as they can run a simple webserver. The process of implementing a new game is also reduced to simply articulating the rules, rather than having to maintain state or expose any user interaction.

#API format



To start your Phoenix server:

  • Install dependencies with mix deps.get
  • Create and migrate your database with mix ecto.setup
  • Install Node.js dependencies with npm install inside the assets directory
  • Start Phoenix endpoint with mix phx.server

Now you can visit localhost:4000 from your browser.

Ready to run in production? Please check our deployment guides.

#Learn more