Islanders is an online real-time implementation of the magnificent "The Settlers of Catan" designed by Klaus Teuber.
Run the following on a system that has Docker installed:
docker build -t islanders/islanders-shared ./islanders-shared
docker build -t islanders/islanders-client ./islanders-client
docker build -t islanders/islanders-server ./islanders-server
docker-compose up -d
If you have a running traefik service you can access the app at islanders.localhost.
Otherwise, run docker inspect islanders-client | grep IPAddress
to find the ip address of the app.
The server, shared libraries and client are all written in TypeScript and transpiled to JavaScript. The server runs in node, and the client is built using Vue.
All modification on the game world are expressed in a monadic form, and will return a new game world when applied on the current world. This gives us free "versioning" of the game world, gives us easy undo functionality and makes the real-time aspects of the game easier to work with and implement.
Feel free to take a look at the code and throw a PR if you are missing any features/rules (there's plenty of expansions to the game that we haven't implemented - yet)!