Skip to content
/ setml Public

Online, realtime, multiplayer game of Set, from Set Enterprises, Inc., built entirely with ocaml (and reasonml).

License

Notifications You must be signed in to change notification settings

atongen/setml

Repository files navigation

setml

Online, realtime, multiplayer game of Set, from Set Enterprises, Inc., built entirely with ocaml (and reasonml).

Play the game here: https://setml.andrewtongen.net/

Outside of the websocket connection, the app server processes are completely stateless. All messages are synchronized with postgresql using listen/notify.

Server-side ocaml code is found in src/server. Client-side reasonml code is found in src/client. Shared modules are found in src/shared.

On the client-side, all cards are rendered to a hidden canvas with svg, and then copied to the visible canvas to update the game board.

prerequisites

  • ocaml 4.06.1
  • dune
  • opam
  • npm
  • make
  • postgresql 11
  • linux (untested on macos)

building and running

check out the code

git clone [email protected]/atongen/setml
cd setml

envfile

Provision a postgres db for setml and create an envfile with the connection information.

The default values look similar to this:

DB_NAME=setml_development
DB_HOST=localhost
DB_PORT=5432
DB_USER=`whoami`
DB_PASS=abcd1234

Add entries only for what you need to override.

server-side

opam pin add -yn setml .
opam install setml
make

client-side

npm install
npm start

and in separate terminal:

npm run-script webpack

You may want to refer to https://reasonml.github.io/reason-react/docs/en/installation for more information about installing bucklescript/reasonml.

running

With db created, envfile in place, you can run

script/reload_db.sh

to load the database schema.

Then run:

script/run.sh

to start the server.

Browse to https://localhost:7777/ to access the application.

testing

Provision a test database in postgres (this is setml_test by convention), then run:

SETML_ENV=test script/reload_db.sh

To populate the test db schema.

Then run

make test

To run the test suite against both the server-side code and client-side code.

docker

Docker images are provided on dockerhub.

docker pull atongen/setml
docker-compose up

server-side resources

client-side resources

License

This project is licensed under the MIT License - see the LICENSE.md file for details

About

Online, realtime, multiplayer game of Set, from Set Enterprises, Inc., built entirely with ocaml (and reasonml).

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published