Getting Involved

This article discusses how to participate in Abstract Play development.

Page content

Abstract Play is an open-source project, and participation is warmly welcomed! Whether coding new games, translating strings, or just fixing bugs, this article has instructions on how to get involved.


The most common way people contribute is to translate game messages into their native language. We’re finalizing instructions, but in the meantime, if you want to get started, please email


If you want to contribute code, the normal way is through a pull request. Each repository (see below) has a README that explains how to set up a local environment. Don’t hesitate to reach out to the developers with any questions.


All of Abstract Play’s source code lives on GitHub @AbstractPlay. The project is split up over a few different repositories:

  • apsite: This is where this website and documentation lives. You go here if you wish to update or expand the documentation.

  • front: This is where you actually interact with the service. It’s what appears when you go to You go here if you want to help with refining the UX or translating strings.

  • gameslib: All the games are implemented in TypeScript. This library contains all of the games and is reused by various other repositories. If you’re feeling ambitious, this is where you’d come to implement a new game or fix a bug in an existing one. You also come here if you want to help translating game messages.

  • node-backend: This is the heart of the record-keeping system and is what allows users to interact with each other. You’d only come here if you wanted to expand the core functionality of Abstract Play.

  • renderer: The renderer is a special library that creates interactable game boards. It’s pretty specialized, but if you want to change how boards are generated, this is where you’d start.

  • recranks: The records and rankings code is what generates ratings and other statistics from the ever-growing pool of completed games. This is still very much a work in progress.