Scala

repo: lauris/awesome-scala
category: Programming Languages related: Apache Spark · Haskell · Elixir · Erlang


Awesome Scala Awesome

A community driven list of useful Scala libraries, frameworks and software. This is not a catalog of all the libraries, just a starting point for your explorations. Inspired by awesome-python. Other amazingly awesome lists can be found in the awesome-awesomeness list.

Also awesome is Scaladex, the searchable, tagged, and centralized index of Scala libraries.

Projects with over 500 stargazers are in bold.

Contributing

Your contributions are always welcome! Please submit a pull request or create an issue to add a new framework, library or software to the list. Do not submit a project that hasn’t been updated in the past 6 months or is not awesome.

Don't modify README.md in your pull request. It is automatically generated. Modify template.md instead.

Table of Contents

Archive and Compression

Name Description GitHub Activity

Artificial Intelligence

Name Description GitHub Activity

Database

Database access libraries in Scala.

Name Description GitHub Activity
akka-persistence-gcp-datastore akka-persistence-gcp-datastore is a journal and snapshot store plugin for akka-persistence using google cloud firestore in datastore mode.
anorm The Anorm database library
clickhouse-scala-client Clickhouse Scala Client with Reactive Streams support
couchbase-jvm-clients The Couchbase Monorepo for JVM Clients: Java, Scala, io-core…
doobie Functional JDBC layer for Scala.
elastic4s 🔍 Elasticsearch Scala Client - Reactive, Non Blocking, Type Safe, HTTP Client
etcd4s Scala etcd client implementing V3 APIs
laserdisc A Future-free Fs2 native pure FP Redis client
mysql-binlog-stream None
neotypes Scala lightweight, type-safe, asynchronous driver for neo4j
pulsar4s Idiomatic, typesafe, and reactive Scala client for Apache Pulsar
zio-quill Compile-time Language Integrated Queries for Scala
ReactiveMongo :leaves: Non-blocking, Reactive MongoDB Driver for Scala
rediscala Non-blocking, Reactive Redis driver for Scala (with Sentinel support)
relate Performant database access in Scala
sangria Scala GraphQL implementation
scala-forklift Type-safe data migration tool for Slick, Git and beyond.
scalarelational Type-Safe framework for defining, modifying, and querying SQL databases
scalikejdbc A tidy SQL-based DB access library for Scala developers. This library naturally wraps JDBC APIs and provides you easy-to-use APIs.
scanamo Simpler DynamoDB access for Scala
slick Slick (Scala Language Integrated Connection Kit) is a modern database query and access library for Scala
slick-pg Slick extensions for PostgreSQL
squery Simple SQL queries in Scala 3
squeryl A Scala DSL for talking with databases with minimum verbosity and maximum type safety
molecule Molecule translates custom Scala code to database queries for multiple databases.
zio-redis A ZIO-based redis client
skunk A data access library for Scala + Postgres.
kvs Highly available distributed strong eventual consistent and sequentially consistent storage with feeds, sorting and search

Messaging

Name Description GitHub Activity

Graphical User Interfaces

Libraries for creation of graphical user interfaces

Name Description GitHub Activity
scalafx ScalaFX simplifies creation of JavaFX-based user interfaces in Scala

Web Frameworks

Scala frameworks for web development.

Name Description GitHub Activity
analogweb-scala Tiny High Performance HTTP Server for Scala
cask Cask: a Scala HTTP micro-framework. Cask makes it easy to set up a website, backend server, or REST API using Scala
finatra Fast, testable, Scala services built on TwitterServer and Finagle
framework Lift Framework
playframework The Community Maintained High Velocity Web Framework For Java and Scala.
scalajs-react Facebook's React on Scala.JS
scalatra Tiny Scala high-performance, async web framework, inspired by Sinatra
sharaf Minimalistic Scala 3 web framework
unfiltered A toolkit for servicing HTTP requests in Scala
youi Next generation user interface and application development in Scala and Scala.js for web, mobile, and desktop.

Reactive Web Frameworks

Scala libraries for Reactive Web development

Name Description GitHub Activity
Binding.scala Reactive data-binding for Scala
udash-core Scala framework for building beautiful and maintainable web applications.
vertx-lang-scala Vert.x for Scala

Data Binding and Validation

Scala libraries for data binding and validation

Name Description GitHub Activity
dupin Minimal, idiomatic, customizable validation Scala library.
octopus Scala library for boilerplate-free validation

i18n

Scala libraries for i18n.

Name Description GitHub Activity
scaposer GNU Gettext .po file loader for Scala

Authentication

Libraries for implementing authentications schemes.

Name Description GitHub Activity
play-googleauth Simple play module for authenticating against Google
play-pac4j Security library for Play framework 2 in Java and Scala: OAuth, CAS, SAML, OpenID Connect, LDAP, JWT...
scala-oauth2-provider OAuth 2.0 server-side implementation written in Scala

Cryptography

Cryptography and Encryption Libraries.

Name Description GitHub Activity
scrypto Cryptographic primitives for Scala
jose Extensible JOSE library for Scala

Testing

Libraries for code testing.

Name Description GitHub Activity
bencher 🐰 Bencher - Continuous Benchmarking
cornichon Testing tool in Scala for HTTP JSON API
gatling Modern Load Testing as Code
minitest The super light testing library for Scala and Scala.js
mockito-scala Mockito for Scala language
munit Scala testing library with actionable errors and extensible APIs
scalacheck Property-based testing for Scala
ScalaMock Native Scala mocking framework
scalaprops property based testing library for Scala
scalatest A testing tool for Scala and Java developers
specs2 Software Specifications for Scala
stryker4s Mutation testing for Scala
weaver-test A test framework that runs everything in parallel.
testcontainers-scala Docker containers for testing in scala
utest A simple testing framework for Scala

JSON

Libraries for work with json.

Name Description GitHub Activity
argonaut Purely functional JSON parser and library in scala.
borer Efficient CBOR and JSON (de)serialization in Scala
circe Yet another JSON library for Scala
diffson A scala diff/patch library for Json
jackson-module-scala Add-on module for Jackson (https://github.com/FasterXML/jackson) to support Scala-specific datatypes
jawn Jawn is for parsing jay-sawn (JSON)
json4s JSON library
jsoniter-scala Scala macros for compile-time generation of safe and ultra-fast JSON codecs + circe booster
ninny-json JSON typeclasses that know the difference between null and absent fields
play-json The Play JSON library
ScalaJack Fast JSON parser/generator for Scala
spray-json A lightweight, clean and simple JSON implementation in Scala
tupson Stupid simple Scala 3 library for writing and reading JSON
zio-json Fast, secure JSON library with tight ZIO integration.

YAML

Libraries for work with YAML.

Name Description GitHub Activity

CSV

Libraries for work with CSV.

Name Description GitHub Activity
kantan.csv CSV handling library for Scala
scala-csv CSV Reader/Writer for Scala
spata Functional, stream-based CSV processor for Scala

Serialization

Libraries for serializing and deserializing data for storage or transport.

Name Description GitHub Activity
borer Efficient CBOR and JSON (de)serialization in Scala
avro4s Avro schema generation and serialization / deserialization for Scala
chill Scala extensions for the Kryo serialization library
ScalaPB Protocol buffer compiler for Scala.
scodec Scala combinator library for working with binary data
scrooge A Thrift parser/generator
upickle uPickle: a simple, fast, dependency-free JSON & Binary (MessagePack) serialization library for Scala
proto Lightweight and fast serialization library for Scala 2/3 based on Protocol Buffers with macros

Science and Data Analysis

Libraries for scientific computing, data analysis and numerical processing.

Name Description GitHub Activity
algebird Abstract Algebra for Scala
ipex-llm Accelerate local LLM inference and finetuning (LLaMA, Mistral, ChatGLM, Qwen, Baichuan, Mixtral, Gemma, Phi, MiniCPM, etc.) on Intel XPU (e.g., local PC with iGPU and NPU, discrete GPU such as Arc, Flex and Max); seamlessly integrate with llama.cpp, Ollama, HuggingFace, LangChain, LlamaIndex, GraphRAG, DeepSpeed, vLLM, FastChat, Axolotl, etc.
breeze Breeze is/was a numerical processing library for Scala.
doddle-model :cake: doddle-model: machine learning in Scala.
libra A dimensional analysis library based on dependent types
LoMRF LoMRF is an open-source implementation of Markov Logic Networks
mgo Purely functional genetic algorithms for multi-objective optimisation
MLLib Machine Learning framework for Spark
numsca numsca is numpy for scala
onnx-scala An ONNX (Open Neural Network eXchange) API and backend for typeful, functional deep learning and classical machine learning in Scala 3
openmole Workflow engine for exploration of simulation models using high throughput computing
Optimus Optimus is a mathematical programming library for Scala.
OscaR a Scala toolkit for solving Operations Research problems
rings Rings: efficient JVM library for polynomial rings
smile Statistical Machine Intelligence & Learning Engine
spire Powerful new number types and numeric abstractions for Scala.
squants The Scala API for Quantities, Units of Measure and Dimensional Analysis
zeppelin Web-based notebook that enables data-driven, interactive data analytics and collaborative documents with SQL, Scala and more.
spark-nlp State of the Art Natural Language Processing
VecMatLib Open source Scala library that provides data structures for vectors and matrices

Big Data

Name Description GitHub Activity
flink Apache Flink
gridscale Scala library for accessing various file, batch systems, job schedulers and grid middlewares.
kafka Mirror of Apache Kafka
alpakka-kafka Alpakka Kafka connector - Alpakka is a Reactive Enterprise Integration library for Java and Scala, based on Reactive Streams and Akka.
scio A Scala API for Apache Beam and Google Cloud Dataflow.
Scrunch A Scala wrapper for Apache Crunch which provides a framework for writing, testing, and running MapReduce pipelines.
spark Apache Spark - A unified analytics engine for large-scale data processing
gallia-core A schema-aware Scala library for data transformation
nussknacker Low-code tool for automating actions on real time data Stream processing for the users.

Command Line Interfaces

Libraries for creation of command line interfaces

Name Description GitHub Activity
decline A composable command-line parser for Scala.
mainargs A small, convenient, dependency-free library for command-line argument parsing in Scala
scallop a simple Scala CLI parsing library
scopt command line options parsing for Scala

Image processing and image analysis

2D and 3D image processing and image analysis

Name Description GitHub Activity
scalismo Scalable Image Analysis and Shape Modelling
scrimage JVM - Java, Kotlin, Scala image processing library

Sound processing and music

Name Description GitHub Activity

Functional Reactive Programming

Event streams, signals, observables, etc.

Name Description GitHub Activity
fs2 Compositional, streaming I/O library for Scala
iteratee Iteratees for Cats
monix Asynchronous, Reactive Programming for Scala and Scala.js.
REScala REScala - distributed and reactive programming embedded in OO and FP programs.
zio ZIO — A type-safe, composable library for async and concurrent programming in Scala
vertx-lang-scala Vert.x for Scala

Modularization and Dependency Injection

Modularization of applications, dependency injection, etc.

Name Description GitHub Activity
airframe Essential Building Blocks for Scala
izumi Productivity-oriented collection of lightweight fancy stuff for Scala toolchain
macwire Zero-cost, compile-time, type-safe dependency injection library.
scaldi Lightweight Scala Dependency Injection Library
jam Incredibly simple DI Scala library.

Distributed Systems

Libraries and frameworks for writing distributed applications.

Name Description GitHub Activity
akka Build highly concurrent, distributed, and resilient message-driven applications on the JVM
annette Platform to build distributed, scalable, enterprise-wide business applications
finagle A fault tolerant, protocol-agnostic RPC system
poppet Minimal, type-safe RPC Scala library.
automorph RPC client and server library for Scala

Extensions

Scala extensions.

Name Description GitHub Activity
Ammonite Scala Scripting
better-files Simple, safe and intuitive Scala I/O
blindsight Blindsight is a Scala logging API with DSL based structured logging, fluent logging, semantic logging, flow logging, and context aware logging.
cats Lightweight, modular, and extensible library for functional programming.
chimney Scala library for boilerplate-free, type-safe data transformations
chronoscala A JSR-310 port of nscala_time
Dsl.scala A framework to create embedded Domain-Specific Languages in Scala
each A macro library that converts native imperative syntax to scalaz's monadic expressions
eff Eff monad for cats - https://atnos-org.github.io/eff
enableIf.scala A library that toggles Scala code at compile-time, like #if in C/C++
enumeratum A type-safe, reflection-free, powerful enumeration implementation for Scala with exhaustive pattern match warnings and helpful integrations.
log4s High-performance SLF4J wrapper for Scala.
izumi Productivity-oriented collection of lightweight fancy stuff for Scala toolchain
Monocle Optics library for Scala
nscala-time A new Scala wrapper for Joda Time based on scala-time
quicklens Modify deeply nested case class fields
refined Refinement types for Scala
scala-async An asynchronous programming facility for Scala
scala-graph Graph for Scala is intended to provide basic graph functionality seamlessly fitting into the Scala Collection Library. Like the well known members of scala.collection, Graph for Scala is an in-memory graph library aiming at editing and traversing graphs, finding cycles etc. in a user-friendly way.
scala-logging Convenient and performant logging library for Scala wrapping SLF4J.
scalameta Library to read, analyze, transform and generate Scala programs
scalaz Principled Functional Programming in Scala
scribe The fastest logging library in the world. Built from scratch in Scala and programmatically configurable.
shapeless Generic programming for Scala
simulacrum First class syntax support for type classes in Scala
squid Squid – type-safe metaprogramming and compilation framework for Scala
tinylog tinylog is a lightweight logging framework for Java, Kotlin, Scala, and Android
util Wonderful reusable code from Twitter

Misc

Projects that don't fit into any specific category.

Name Description GitHub Activity
Ammonite Scala Scripting
bootzooka Simple project to quickly start developing a Scala-based microservice or web application, without the need to write login, user registration etc.
eclair A scala implementation of the Lightning Network.
fansi Scala/Scala.js library for manipulating Fancy Ansi colored strings
fs2-aws fs2 utilities to interact with AWS
mailgun4s Mailgun API implementation in Scala
managerial A zero-dependency Scala library for managing resources monadically
media4s Scala command-line wrapper around ffmpeg, ffprobe, ImageMagick, and other tools relating to media.
play-swagger Swagger spec generator for play framework
PPrint Pretty-printing value, types and type-signatures in Scala
pureconfig A boilerplate-free library for loading configuration files
service-chassis A scala chassis to get your applications and services bootstrapped quickly
spliff Efficient diffing in Scala
scountries Scala library that provides an enumeration of ISO 3166 codes for countries, along with their subdivisions.
scurl-detector Scala library that detects and extracts URLs from text.
aptus-core A utility library aiming to simplify the Scala coding experience.

Android

Scala libraries and wrappers for Android development.

Name Description GitHub Activity
scaloid Scaloid makes your Android code easy to understand and maintain.

HTTP

Scala libraries and wrappers for HTTP clients.

Name Description GitHub Activity
akka-http The Streaming-first HTTP server/module of Akka
reboot Scala wrapper for the Java AsyncHttpClient.
finch Scala combinator library for building Finagle HTTP services
http4s A minimal, idiomatic Scala interface for HTTP
lolhttp An HTTP Server and Client library for Scala.
requests-scala A Scala port of the popular Python Requests HTTP client: flexible, intuitive, and straightforward to use.
scalaxb scalaxb is an XML data binding tool for Scala.
sttp The Scala HTTP client you always wanted!
tapir Rapid development of self-documenting APIs
endpoints4s Describe HTTP endpoints in Scala and derive clients, servers, and documentation
frontier A lightweight HTTP/WebSocket server built with ZIO

Semantic Web

Scala libraries for interactions with the Web of Data, and other RDF tools.

Name Description GitHub Activity
scowl A Scala DSL for programming with the OWL API.

Metrics and Monitoring

Scala libraries for gathering metrics and monitoring applications.

Name Description GitHub Activity
metrics-scala The scala API for Dropwizard's Metrics.

Parsing

Scala libraries for creating parsers.

Name Description GitHub Activity
atto friendly little parsers
fastparse Writing Fast Parsers Fast in Scala
parboiled2 A macro-based PEG parser generator for Scala 2.10+
scala-parser-combinators simple combinator-based parsing for Scala. formerly part of the Scala standard library, now a separate community-maintained module
cats-parse A parsing library for the cats ecosystem

Sbt plugins

Sbt plugins to make your life easier.

Name Description GitHub Activity
better-monadic-for Desugaring scala for without implicit withFilters
coursier Pure Scala Artifact Fetching
mdoc Typechecked markdown documentation for Scala
sbt-api-mappings An Sbt plugin that fills apiMappings for common Scala libraries.
sbt-assembly Deploy über-JARs. Restart processes. (port of codahale/assembly-sbt)
sbt-buildinfo I know this because build.sbt knows this.
sbt-ci-release sbt plugin to automate Sonatype releases from GitHub Actions
sbt-dependency-check SBT Plugin for OWASP DependencyCheck. Monitor your dependencies and report if there are any publicly known vulnerabilities (e.g. CVEs). :rainbow:
sbt-docker Create Docker images directly from sbt
sbt-doctest Doctest for scala
sbt-ghpages git, site and ghpages support for sbt projects.
sbt-header sbt-header is an sbt plugin for creating file headers, e.g. copyright headers
sbt-hepek Sbt plugin for rendering Scala objects to files. And more!
sbt-ide-settings SBT plugin for tweaking various IDE settings
sbt-jmh "Trust no one, bench everything." - sbt plugin for JMH (Java Microbenchmark Harness)

truncated — full list on GitHub

[[curator]]
I'm the Curator. I can help you navigate, organize, and curate this wiki. What would you like to do?