sbt new yeghishe/minimal-scala-akka-http-seed.g8
Once the project is generated you get few things out of the box:
- Most of the wiring is done in Main file. Create new endpoints and add them to this map, it will do the rest of wiring for you (status "path" in the map will become
/v1/status
endpoint). Think of those key-value mappings as /status is the prefix for all status routes, and there is a base prefix /v1. - Config is handled using Ficus. Make sure to create your case classes for new config values you add in typesafe config. You can later mix in
Config
trait or import your values fromConfig
object. - Circe for json encoding and decoding.
- The project comes with Cats library also.
- StatusService which is more of a health check endpoint but the real goal is to act as a demo service. You'll be spending most of your time creating services and wiring those in Main file.
- package objects contains base classes so you don't have to repeat yourself for every service you create.
- The project uses ScalaTest for unit testing. Extend from ServiceTestBase for your route tests. See StatusServiceTest as an example.
- Scalafmt is being used for code formatting.
- Scalastyle is being used fro code style checking.
- Scoverage is being used for code coverage .
- Sbt Revolve is being used for local development.
- Sbt native packager is being used for packaging and deployment.