- 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
I'm a big fan of pebble for templates. They're like Django templates and support template inheritance. Written in Java but works fine in Scala.
For web I like spray / akka http. It looks like play is starting to investigate using that as well.
What are the tradeoffs of doobie vs scalikejdbc? They seem similar.
I'm surprised not to see scalariform in the list.