Laminar-Play-ZIO-Slick
This is a small showcase of what a project using Laminar, Play, ZIO and Slick could look like.
The technologies are for:
- Laminar: make the frontend (browser side) in Scala
- Play: Scala web framework
- Slick: library for communicating with the database
- ZIO: functional effect library for gluing all things together nicely.
Run the project
Once sbt is installed on your machine, in sbt command line:
fastOptCompileCopy
compiles the frontend and puts the compiled file in the server public directorybackend/run
runs the server locally onlocalhost:9000
.
With two sbt consoles open, you can have backend/run
running in the first one and ~fastOptCompileCopy
in the other so that frontend is automatically recompiled on file changes.
Run the tests
There is one example of a test case available in the shared project. Run sharedJVM/test
to run them (It is useless to run the sharedJS
test since they are exactly the same).
Alternatives
All of the afore mentioned technologies could be replaced by similar others:
- Laminar: see also scala-js-react and Slinky, or even Laminar-cycle
- Play: see also cask, akka-http or http4s
- Slick: see also doobie, quill
- ZIO: see also scalaz, cats-effect