For good explanation of Raft see:
Requires sbt
To start an interactive server use the following line and open localhost:8080. After each source code change the server and the client will reload. (This feature is provided by sbt-revolver)
sbt ~reStart
Notice that sbt starts in the server project, to test server and client code use
sbt server/test client/test
The folder server
contains the Raft algorithm it self written with Akka-Typed and a Akka-HTTP web-server to observe the running algorithm (in package vis
).
The folder client
contains a web application to visualise the behaviour of Raft.
The application receives updates via Server-sent events and
manages updates with Diode (conceptually very similar to Redux).
Instead of XML-literals ScalaTags is used, so instead of <p id="some">Text</p>
you see p(id := "some", "text")
everwhere.
The folder shared
just contains code that is useful for the server and the web application.
Right now allow messages that are transferred to the front end lives here.