CS 2340 Scala Project: Risk
CS 2340 Risk is a Scala web app that exposes a WebSocket API, leveraging the Akka Actor system to manage state.
๐ Live Version
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)
๐ Design Docs
Detailed documentation on the project and its components (including the frontend, backend, and deployment) is available here.
๐ Getting Started
To setup the Risk web application, both the front end, written in Vue, and the back end, written in Scala, need to be built.
Front End
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 buildProdBack End
To start up the server and compile all Scala source files, run the following command from the project directory:
sbt runAnd open http://localhost:9000/
โ Development setup
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 buildWhen starting the server, you can enable the file watcher and start the Scala build/run process simultaneously:
sbt ~run๐ Dependencies
Frontend
- 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
Backend
- Play Framework - JVM web server framework
- Akka - Scala network runtime/webserver
- Guice - JVM Dependency Injection library
- Caffeine - JVM Caching library
Deployment
- Docker - Container virtualization software
- Nginx proxy - Proxy container providing support for https on live
- Alpine Linux - Container image used to package application
๐ฅ Contributors
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)
