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.
Once sbt is installed on your machine, in sbt command line:
fastOptCompileCopycompiles the frontend and puts the compiled file in the server public directorybackend/runruns 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.
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).
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