Skip to content

Instantly share code, notes, and snippets.

@clementi
Last active October 28, 2022 22:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save clementi/4317c5616df500de42f185921cf48dca to your computer and use it in GitHub Desktop.
Save clementi/4317c5616df500de42f185921cf48dca to your computer and use it in GitHub Desktop.
Scala Libraries and Tools

Scala Libraries and Tools

A curated List of useful or interesting libraries and tools for Scala programming. See also the Scala Toolbox.

Libraries

Name Description URL
Akka HTTP The Akka HTTP modules implement a full server- and client-side HTTP stack on top of akka-actor and akka-stream. https://doc.akka.io/docs/akka-http/current
Akka Stream The purpose is to offer an intuitive and safe way to formulate stream processing setups such that we can then execute them efficiently and with bounded resource usage—no more OutOfMemoryErrors. https://doc.akka.io/docs/akka/current/stream
Akka Akka is a toolkit for building highly concurrent, distributed, and resilient message-driven applications for Java and Scala https://akka.io
Alpakka The Alpakka project is an open source initiative to implement stream-aware and reactive integration pipelines for Java and Scala. https://doc.akka.io/docs/alpakka/current
aws-lambda-scala Writing AWS Lambdas in Scala https://github.com/mkotsur/aws-lambda-scala
Caliban Functional GraphQL library for Scala https://ghostdogpr.github.io/caliban
case-app Type-level & seamless command-line argument parsing for Scala https://github.com/alexarchambault/case-app
cask Cask: a Scala HTTP micro-framework https://com-lihaoyi.github.io/cask
castor Castor is a lightweight, typed Actor library for Scala and Scala.js https://github.com/com-lihaoyi/castor
Cats Lightweight, modular, and extensible library for functional programming https://typelevel.org/cats
Cats Effect The IO Monad for Scala https://typelevel.org/cats-effect
Cats MTL Provides transformer typeclasses for cats' Monads, Applicatives and Functors. https://typelevel.org/cats-mtl/
cats-retry A library for retrying actions that can fail. Designed to work with cats and cats-effect or Monix. https://cb372.github.io/cats-retry
Circe A JSON library for Scala powered by Cats https://circe.github.io/circe
ciris Functional Configurations for Scala https://cir.is
Clump A library for expressive and efficient service composition https://github.com/getclump/clump
Console4Cats Effect-type agnostic Console I/O for Cats Effect Superseded by Cats Effect 3.x https://console4cats.profunktor.dev
Cron4s Scala CRON Parser https://www.alonsodomin.me/cron4s
decline Composable command-line parsing for Scala https://ben.kirw.in/decline
Diode Diode was born out of the need of having something similar to Redux or Om for Scala applications. https://diode.suzaku.io
Dispatch Dispatch is a library for asynchronous HTTP interaction. It provides a Scala vocabulary for Java’s async-http-client. https://dispatchhttp.org
Doobie A pure functional JDBC layer for Scala and Cats. https://tpolecat.github.io/doobie
enumeratum A type-safe, reflection-free, powerful enumeration implementation for Scala with exhaustive pattern match warnings and helpful integrations. https://github.com/lloydmeta/enumeratum
extruder Populate Scala case classes from any data source https://janstenpickle.github.io/extruder
FastParse Fast to write, Fast running Parsers in Scala https://com-lihaoyi.github.io/fastparse
fetch Simple and Efficient data fetching https://47degrees.github.io/fetch
finagle Finagle is an extensible RPC system for the JVM, used to construct high-concurrency servers. https://twitter.github.io/finagle
Finatra Finatra is a Scala services framework built on top of TwitterServer and Finagle. https://twitter.github.io/finatra
finch Scala combinator library for building Finagle HTTP services https://finagle.github.io/finch
fs2 Functional, effectful, concurrent streams for Scala https://fs2.io
fs2-blobstore Minimal, idiomatic, stream-based Scala interface for key/value store implementations https://github.com/fs2-blobstore/fs2-blobstore
hammock Purely functional HTTP client https://github.com/pepegar/hammock
http4s Typeful, functional, streaming HTTP for Scala. https://http4s.org
jawn Jawn is for parsing jay-sawn (JSON) https://github.com/typelevel/jawn
json4s At this moment there are at least 6 json libraries for scala, not counting the java json libraries. All these libraries have a very similar AST. This project aims to provide a single AST to be used by other scala json libraries. https://json4s.org
Kamon Distributed Tracing, Metrics and Context Propagation for applications running on the JVM https://github.com/kamon-io/Kamon
kittens Automatic type class derivation for Cats https://github.com/typelevel/kittens
lagom The opinionated microservices framework for moving away from the monolith https://www.lagomframework.com
Libra Libra is a dimensional analysis library based on shapeless, spire and singleton-ops. It contains out of the box support for SI units for all numeric types. https://to-ithaca.github.io/libra
Lift Lift is the most powerful, most secure web framework available today. https://liftweb.net
log4cats log4cats attempts to make referentially transparent logging a reality. https://typelevel.org/log4cats
log4s High-performance SLF4J wrapper for Scala. https://github.com/Log4s/log4s
macwire Lightweight and nonintrusive Scala dependency injection library https://github.com/softwaremill/macwire
mainargs A small, convenient, dependency-free library for command-line argument parsing in Scala https://github.com/com-lihaoyi/mainargs
Modux A microservice server for Scala https://modux4s.github.io/modux
Monix Monix is a high-performance Scala / Scala.js library for composing asynchronous, event-based programs. https://monix.io
Monocle Access and transform immutable data with lenses https://www.optics.dev/Monocle
Mu Mu is a purely functional library for building microservices https://higherkindness.io/mu
munit Scala testing library with actionable errors and extensible APIs https://scalameta.org/munit
Neutron Neutron is a purely functional Apache Pulsar client for Scala, build on top of fs2 and the Java client for Pulsar. https://neutron.profunktor.dev
optparse A simple but powerful Scala command line parser https://github.com/sellmerfud/optparse
oslib OS-Lib is a simple, flexible, high-performance Scala interface to common OS filesystem and subprocess APIs https://github.com/com-lihaoyi/os-lib
phantom Schema safe, type-safe, reactive Scala driver for Cassandra/Datastax Enterprise https://github.com/outworkers/phantom
play The High Velocity Web Framework For Java and Scala https://www.playframework.com
PureConfig A boilerplate-free library for loading configuration files https://pureconfig.github.io
quicklens Modify deeply nested fields in case classes using developer-friendly syntax https://github.com/softwaremill/quicklens
Quill Free/Libre Compile-time Language Integrated Queries for Scala https://getquill.io
requests-scala A Scala port of the popular Python Requests HTTP client: flexible, intuitive, and straightforward to use. https://github.com/com-lihaoyi/requests-scala
retry because you should never give up, at least not on the first try https://github.com/softwaremill/retry
rho A self documenting DSL built on http4s https://github.com/http4s/rho
rng Pure-functional random value generation https://github.com/NICTA/rng
Sangria Scala GraphQL implementation https://sangria-graphql.github.io
scaffeine Thin Scala wrapper for Caffeine (ben-manes/caffeine) https://github.com/blemale/scaffeine
Scala Colog Cross-platform pure functional logging library for Scala. Integrates with well known JVM logging frameworks and can also be used standalone in ScalaJS or Scala Native. https://www.alonsodomin.me/scala-colog/docs/overview
Scala on Android Write Android apps in Scala! https://scala-android.org
scala-parser-combinators simple combinator-based parsing for Scala. formerly part of the Scala standard library, now a separate community-maintained module https://github.com/scala/scala-parser-combinators
ScalaCheck ScalaCheck is a library written in Scala and used for automated property-based testing of Scala or Java programs. https://scalacheck.org
scalactic Scalactic is a small library of utilities related to quality and functional programming that can help you keep code clear and correct. https://www.scalactic.org
scalaj-http Simple scala wrapper for HttpURLConnection. OAuth included. https://github.com/scalaj/scalaj-http
scalatags ScalaTags is a small, fast XML/HTML/CSS construction library for Scala https://com-lihaoyi.github.io/scalatags
scalatest ScalaTest is designed to increase your team's productivity through simple, clear tests and executable specifications that improve both code and communication. https://www.scalatest.org
scalaxb scalaxb is an XML data-binding tool for Scala that supports W3C XML Schema (xsd) and Web Services Description Language (wsdl) as the input file. https://scalaxb.org/
scalaz An extension to the core scala library. (Functional programming, like Cats.) https://scalaz.github.io/scalaz
scallop a simple Scala CLI parsing library https://github.com/scallop/scallop
scodec Scala combinator library for working with binary data https://scodec.org
scopt command line options parsing for Scala https://github.com/scopt/scopt
shapeless Generic programming for Scala https://github.com/milessabin/shapeless
singleton-ops Operations for primitive and String singleton types https://github.com/fthomas/singleton-ops
Slick Functional Relational Mapping for Scala https://scala-slick.org
Spire Powerful new number types and numeric abstractions for Scala. https://github.com/typelevel/spire
Squants The Scala API for Quantities, Units of Measure and Dimensional Analysis https://www.squants.com
sttp The Scala HTTP client you always wanted! https://sttp.softwaremill.com
tapir Typed API descriptions https://tapir.softwaremill.com
Twirl Twirl is Play's default template engine https://github.com/playframework/twirl
TwitterServer TwitterServer is a library defining a template from which servers at Twitter are built. https://twitter.github.io/twitter-server
unfiltered Unfiltered is a toolkit for servicing HTTP requests in Scala. https://unfiltered.ws
uPickle uPickle (pronounced micro-pickle) is a lightweight JSON and binary (MessagePack) serialization library for Scala. https://com-lihaoyi.github.io/upickle
utest A simple testing framework for Scala https://github.com/com-lihaoyi/utest
zio Type-safe, composable asynchronous and concurrent programming for Scala https://zio.dev

Tools

Name Description URL
ammonite Ammonite lets you use the Scala language for scripting purposes: in the REPL, as scripts, as a library to use in existing projects, or as a standalone systems shell. https://ammonite.io
Bazel Build and test software of any size, quickly and reliably https://bazel.build
Bloop Build and test Scala code of any size quickly, from any editor, from any build tool https://scalacenter.github.io/bloop
cbt CBT - fun, fast, intuitive, compositional, statically checked builds written in Scala https://github.com/cvogt/cbt
coursier Pure Scala artifact fetching https://get-coursier.io
Fury Fury is a fledgling open-source build tool for Scala, with unique features for the ongoing maintenance of builds within a continually-evolving ecosystem. https://github.com/propensive/fury
giter8 a command line tool to apply templates defined on GitHub https://www.foundweekends.org/giter8
JitPack Publish your JVM and Android libraries https://jitpack.io
mdoc Typechecked markdown documentation for Scala https://scalameta.org/mdoc
Metals Scala language server with rich IDE features https://scalameta.org/metals
mill Your shiny new Java/Scala build tool! https://com-lihaoyi.github.io/mill/
Pants Pants is a build system designed for codebases that: (1) Are large and/or growing rapidly. (2) Consist of many subprojects that share a significant amount of code. (3) Have complex dependencies on third-party libraries. (4) Use a variety of languages, code generators and frameworks. https://v1.pantsbuild.org
sbt-assembly Deploy fat JARs. Restart processes. https://github.com/sbt/sbt-assembly
sbt-buildinfo I know this because build.sbt knows this. https://github.com/sbt/sbt-buildinfo
sbt-dependency-graph sbt plugin to create a dependency graph for your project https://github.com/sbt/sbt-dependency-graph
sbt-microsites An sbt plugin to create awesome microsites for your project https://47degrees.github.io/sbt-microsites
sbt-scoverage sbt plugin for scoverage https://github.com/scoverage/sbt-scoverage
Scala Clippy Better compiler errors and suggestions https://scala-clippy.org/
scala-steward A bot that helps you keep your Scala projects up-to-date https://github.com/scala-steward-org/scala-steward
Scaladex The Scala Library Index https://index.scala-lang.org
ScalaFiddle ScalaFiddle is an online playground for creating, sharing and embedding Scala fiddles (little Scala programs that run directly in your browser). https://scalafiddle.io
scalafmt Code formatter for Scala https://scalameta.org/scalafmt
scalariform Scalariform is a code formatter for Scala 2.8+. https://scala-ide.org/scalariform
scastie Scastie is an interactive playground for Scala. https://scastie.scala-lang.org
Seed Seed is a user-friendly, fast and flexible build tool for Scala projects. https://tindzk.github.io/seed
splain better implicit errors for scala https://github.com/tek/splain
TwoTails A Scala compiler plugin for mutual tail recursion https://github.com/wheaties/TwoTails
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment