(Check the live demo @ https://zesty-semifreddo-691978.netlify.app/ )
Front-end is deployed in Netlify, and back-end is running in Google App Engine
This is a toy project I'm using to learn some new tech. I wanted to learn Elixir (and especially OTP) and figured an online game would be a good fit. I also took the opportunity to play with Svelte while I'm at it :)
Some key features to make this interesting:
The following sequence diagram shows the back-end processes when a match is started.
The match's state machine runs inside the MatchServer
. The core logic is implemented in the Pong.Core.Match.StateMachine
module. It's implemented as a purely functional state machine so it's easy to unit test
To run the back-end:
cd backend
mix deps.get
mix run --no-halt
To run the front-end:
cd pong-ui
npm i
npm run dev -- --open