CS 2340 Risk is a Scala web app that exposes a WebSocket API, leveraging the Akka Actor system to manage state.
At a high level, the frontend is built with Vue.js and HTML Canvases, while the backend is built with Scala Play and Akka. The project itself was produced for CS 2340 at Georgia Tech with Professor Christopher Simpkins (class website)
Detailed documentation on the project and its components (including the frontend, backend, and deployment) is available here.
To setup the Risk web application, both the front end, written in Vue, and the back end, written in Scala, need to be built.
To compile the web application from its sources, make sure you have Node.js installed. Run the following commands in the /vue
directory to install dependencies and then build the front-end codebase:
npm install
npm runScript buildProd
To start up the server and compile all Scala source files, run the following command from the project directory:
sbt run
And open http://localhost:9000/
For development mode, run the following commands instead, which will (in addition to installing dependencies like before) generate source mappings, more verbose modules, and enable the Vue devtools extension: (again, in the /vue
directory)
npm install
npm runScript build
When starting the server, you can enable the file watcher and start the Scala build/run process simultaneously:
sbt ~run
- Konva - Used for HTML canvas rendering
- Vue.js - Progressive SPA framework for Javascript application
- Popper.js - Javascript framework to create responsive tooltips
- BootstrapVue - Bootstrap bindings for Vue to develop responsive web applications
- FontAwesome - Large selection of web icons
- Play Framework - JVM web server framework
- Akka - Scala network runtime/webserver
- Guice - JVM Dependency Injection library
- Caffeine - JVM Caching library
- Docker - Container virtualization software
- Nginx proxy - Proxy container providing support for https on live
- Alpine Linux - Container image used to package application
Our team for CS 2340 consisted of the following members:
- Joseph Azevedo (jazevedo620)
- Andrew Chafos (andrewjc2000)
- Julian Gu (julian-g99)
- Thomas Lang (bopas2)
- Patrick Liu (PatrickLiu2000)