- 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
Akka and Akka Streams already deals with asynchronous code, and Play builds on Akka Streams for Websocket stuff. And Akka already has a scheduler built in.
@nairbv Play has an experimental akka http backend, but it's behind the engine, and doesn't effect what you use on the front end. You can put together a Play app in 30 lines of code so it can be just as "light" as Spray's routing API is.
Play Authentication is Silhouette, and Authorization is Deadbolt.
Logging I would recommend godaddy logger and Logstash Logback Encoder rather than Play's Logger API right now.