Webmodelica is based on the following tools and libraries:
-
Akka HTTP a library for HTTP-Backends.
-
Twitter’s Finagle a library for distributed systems. Its the middleware that drives Finatra and enables protocol-agnostic RPC-Calls based on Future’s. Each RPC-Call is a function:
A ⇒ Future[B]
. -
pureconfig a wrapper around Typesafe’s Config library. It parses a config file and generates a Scala case class. In our case it reads
conf/webmodelica.conf
and creates an instance ofwebmodelica.config.WMConfig
. -
scala cats functional programming library for scala. Its main purpose is for nested Monad transfomers, for example:
Future[Option[A]]
. -
MacWire dependency injection library using macros instead of runtime reflection magic. It generates object instantiation code using in-scope dependencies. Used in
webmodelica.core.WebmodelicaModule
. -
chimney a library for converting objects between case classes. This allows easy conversion between case classes with similar shapes.
-
ScalaTest testing library for scala based on Behaviour driven Development. Its awesome ;).
-
sbt the scala build tool.
-
React.js the SPA framework.
-
ramda.js a js library with functional utilities for lists, objects and maps.
-
Gitub’s octicons icon library similar to font awesome but from GitHub. redux, react-redux
-
react-bootstrap a component library for react based on bootstrap.
-
Microsoft’s Monaco Editor the code editor that powers VS Code. We are using it for editing Modelica code.