- 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
- Sample multi-project build.sbt
- Trailing commas
- better-monadic-for
- native packager + sbt-docker
- sbt-updates
See also: https://github.com/lauris/awesome-scala
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 :)