lutrine-dice

Roll Dice With Friends

#+TITLE: Lutrine Dice

  • Lutrine :: (adj) Of, pertaining to, or characteristic of an otter. [[https://en.wiktionary.org/wiki/lutrine][(Wiktionary)]]

Lutrine Dice is a web application for rolling dice and chatting with friends. You might use it alongside video chat to a play pen & paper role-playing game, or host a whole standalone play by post game inside the app. You can [[https://dice.next.lutrine.com][use it for free]].

The aim of Lutrine Dice's design philosophy is to create a powerful, streamlined, delightful, playful piece of software, following its otter namesake. Please [[https://github.com/ryanprior/lutrine-dice/issues/new/choose][report an issue]] about anything you encounter that falls short of these ideals.

  • Hacking on Lutrine Dice

** The client

| Source code | lives in the =client/= directory | | Implementation language | [[https://www.mint-lang.com/][Mint]] | | Main entrypoint | [[file:client/source/Main.mint][main.mint]] | | Docs | [[file:client/README.org][client README]] | | License | [[https://www.gnu.org/licenses/gpl-3.0.en.html][GNU GPLv3+]] (see [[file:client/LICENSE][client/LICENSE]]) |

** The server

| Source code | lives in the =server/= directory | | Implementation language | [[https://crystal-lang.org/][Crystal]] | | Main entrypoint | [[file:server/src/server.cr][server.cr]] | | Docs | [[file:server/README.md][server README]] | | License | [[https://anticapitalist.software/][Anti-capitalist Software License 1.4]] (non-free; see [[file:server/LICENSE][server/LICENSE]]) |

(Want to use the server for capitalist purposes? Get in touch; answer is likely no. You're of course welcome to use the free software client with your own backend.)

** How to set up a dev environment

The way I set up my dev environment requires these tools:

  • Docker & =docker-compose=
  • GNU =make=
  • =watchexec=

With all these tools installed, you can run make dev to bring up a dev server. It will live in docker-compose as two separate containers, one for the server and another for the client.

#+begin_src bash

start-up dev environment containers

make dev

check service status

docker-compose ps

view server logs

docker-compose logs server

shut down dev environment

docker-compose down #+end_src

Whenever you modify code in the =server= subdirectory, =watchexec= will restart the container for the server which will re-compile. The client container is running the mint dev server which handles its own hot-reload logic.

The server will be locally accessible on port =3000= and the client on port =3001= (configurable in =docker-compose.yml=.) The dev build is configured to allow CORS and communicate across your local host network. When hacking on the client you should connect to the client container directly so that you benefit from the features of the mint-lang dev server.

*** Database

The dev server uses a =sqlite= file called =lutrine-dice.db= in the project directory to store your local test data. You can run make destroy-db to get a fresh database. If you delete the file, Docker will try to create a directory called lutrine-dice.db/ and this will break the dev enviornment, so save yourself the hassle and don't do that.

** How to build the production container

The production build also uses =make= and =docker-compose=:

#+begin_src bash make server-container-prod #+end_src

Repository

lutrine-dice

Owner
Statistic
  • 3
  • 1
  • 0
  • 0
  • 0
  • 10 months ago
  • May 26, 2021
License

Links
Synced at

Sat, 21 Dec 2024 03:16:07 GMT

Languages