- Web Server: Play (framework) or http4s (library)
- Actors: akka
- Asynchronous Programming: monix (for tasks, reactors, observables, scheduler etc)
- Authentication: Silhouette
- Authorization: Deadbolt
- Command-line option parsing: case-app
- CSV Parsing: kantan.csv
- DB: doobie (for PostgreSQL)
- Evolutions: flyaway
- I/O: better-files
- JSON: circe + rapture-json (for dynamic JSON access)
- Enums: enumeratum
- Records: scala-records
- DI: macwire
- Config: PureConfig
- Logging: log4s for Java logging or else scribe or BlindSight
- RPC: finagle
- Caching: scalacache
- Templating: ssp
- Utils: pimpathon, scalactic, rapture, shapeless
- Algebra: cats + monocole
- Numeric: spire, squants
- Codecs: scodec
- Java Integration: scala-time, scala-java8-compat
- Data Validation: accord, refined
- Streams: scalaz-zio
- ScalaJS: scalajs-react + Components
If you are using Play, these are reasonable alternatives to above since these have better out-of-the-box Play support:
- ORM: slick + slick-pg + type-checked SQL (for PostgreSQL)
- Evolutions: play-evolutions
- JSON: play-json + play-json-derived + support for >22 fields
- Logging: play-logger
- Templating: twirl
- ScalaJs + Play
- Testing: ScalaTest + ScalaCheck
- Coverage: https://codecov.io + scoverage
- CI: CircleCI
- Lint: wartremover, linter, etc
- Code style: ScalaStyle
- Codacy: https://www.codacy.com/
- Error Monitoring: OverOps + Loggly + NewRelic
Interesting selection.
I would add something for dealing with asynchronous code, for example Monix. There is no ScalaZ in the list, so instead of
scalaz.concurrent.Task, you can use Monix Task or FS2 Task.Also, adding sbt-coursier wouldn't harm :)