How to contribute

Awesome Scala

A curated list of awesome Scala frameworks, libraries and tools.

Asynchronous, Concurrent and Distributed Programming

Image for: Asynchronous, Concurrent and Distributed Programming

Big Data

Image for: Big Data

Computer Science

Image for: Computer Science

Algorithms and Data Structures

  1. twitter / cassovary

    1049

    Cassovary is a simple big graph processing library for the JVM

  2. scala-graph / scala-graph

    574

    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.

  3. typelevel / cats-collections

    560

    Data structures for pure functional programming in Scala

  4. non / debox

    267

    Fast, deboxed, specialized data structures for Scala

Caching

  1. cb372 / scalacache

    770

    Simple caching in Scala

  2. blemale / scaffeine

    265

    Thin Scala wrapper for Caffeine (https://github.com/ben-manes/caffeine)

  3. zio / zio-cache

    85

    A ZIO native cache with a simple and compositional interface

  4. jcouyang / jujiu

    58

    Functional Scala Cache

Code Generation

  1. sbt / sbt-buildinfo

    554

    I know this because build.sbt knows this.

  2. disneystreaming / smithy4s

    377

    https://disneystreaming.github.io/smithy4s/

  3. thesamet / sbt-protoc

    169

    SBT plugin for generating code from Protocol Buffer using protoc

  4. sbt / sbt-boilerplate

    109

    sbt plugin for generating scala.Tuple/Function related boilerplate code

Compilers

  1. scala / scala

    14383

    Scala 2 compiler and standard library. Scala 2 bugs at https://github.com/scala/bug; Scala 3 at https://github.com/scala/scala3

  2. scala / scala3

    6028

    The Scala 3 compiler, also known as Dotty.

  3. scala-js / scala-js

    4644

    Scala.js, the Scala to JavaScript compiler

  4. scala-native / scala-native

    4574

    Your favorite language gets closer to bare metal.

Dependency Injection

  1. softwaremill / macwire

    1295

    Zero-cost, compile-time, type-safe dependency injection library.

  2. dickwall / subcut

    386

    Scala Uniquely Bound Classes Under Traits

  3. codingwell / scala-guice

    340

    Scala extensions for Google Guice

  4. scaldi / scaldi

    289

    Lightweight Scala Dependency Injection Library

Functional Programming and Category Theory

  1. typelevel / cats

    5322

    Lightweight, modular, and extensible library for functional programming.

  2. scalaz / scalaz

    4671

    Principled Functional Programming in Scala

  3. softwaremill / quicklens

    838

    Modify deeply nested case class fields

  4. precog / matryoshka

    815

    Generalized recursion schemes and traversals for Scala.

Logic Programming and Type Constraints

  1. fthomas / refined

    1721

    Refinement types for Scala

  2. iltotore / iron

    516

    Strong type constraints for Scala

  3. epfl-lara / stainless

    375

    Verification framework and tool for higher-order Scala programs

  4. vivri / adjective

    91

    Programming is an exercise in linguistics; spice-up Scala types with Adjective.

Miscellaneous Utils

  1. twitter / util

    2716

    Wonderful reusable code from Twitter

  2. optics-dev / monocle

    1675

    Optics library for Scala

  3. 7mind / izumi

    624

    Productivity-oriented collection of lightweight fancy stuff for Scala toolchain

  4. wvlet / airframe

    643

    Essential Building Blocks for Scala

Parsing

  1. com-lihaoyi / fastparse

    1109

    Writing Fast Parsers Fast in Scala

  2. scala / scala-parser-combinators

    667

    simple combinator-based parsing for Scala. formerly part of the Scala standard library, now a separate community-maintained module

  3. tpolecat / atto

    358

    friendly little parsers

  4. sirthias / parboiled

    1297

    Elegant parsing in Java and Scala - lightweight, easy-to-use, powerful.

Programming Language Interfaces

  1. scalablytyped / converter

    231

    Typescript to Scala.js converter

  2. scala-native / scala-native-bindgen

    34

    Scala Native Binding Generator

Scala Language Extensions

  1. milessabin / shapeless

    3399

    Generic programming for Scala

  2. scalalandio / chimney

    1217

    Scala library for boilerplate-free, type-safe data transformations

  3. lloydmeta / enumeratum

    1205

    A type-safe, reflection-free, powerful enumeration implementation for Scala with exhaustive pattern match warnings and helpful integrations.

  4. typelevel / simulacrum

    934

    First class syntax support for type classes in Scala

Configuration, Logging, Testing and Monitoring

Image for: Configuration, Logging, Testing and Monitoring

Command Line Parsing

  1. scopt / scopt

    1439

    command line options parsing for Scala

  2. bkirwi / decline

    658

    A composable command-line parser for Scala.

  3. alexarchambault / case-app

    302

    Type-level & seamless command-line argument parsing for Scala

  4. com-lihaoyi / mainargs

    198

    A small, convenient, dependency-free library for command-line argument parsing in Scala

Configuration and Environment

  1. lightbend / config

    6227

    configuration library for JVM languages using HOCON files

  2. pureconfig / pureconfig

    1511

    A boilerplate-free library for loading configuration files

  3. vlovgr / ciris

    405

    Functional Configurations for Scala

  4. zalando / grafter

    237

    Grafter is a library to configure and wire Scala applications

Logging

  1. lightbend-labs / scala-logging

    918

    Convenient and performant logging library for Scala wrapping SLF4J.

  2. outr / scribe

    529

    The fastest logging library in the world. Built from scratch in Scala and programmatically configurable.

  3. lego / woof

    435

    A pure Scala 3 logging library with no reflection

  4. typelevel / log4cats

    409

    Logging Tools For Interaction with cats-effect

Performance and Monitoring

  1. kamon-io / kamon

    1418

    Distributed Tracing, Metrics and Context Propagation for applications running on the JVM

  2. sbt / sbt-jmh

    788

    "Trust no one, bench everything." - sbt plugin for JMH (Java Microbenchmark Harness)

  3. lucacanali / sparkmeasure

    761

    This is the development repository for sparkMeasure, a tool and library designed for efficient analysis and troubleshooting of Apache Spark jobs. It focuses on easing the collection and examination of Spark metrics, making it a practical choice for both developers and data engineers.

  4. erikvanoosten / metrics-scala

    427

    The scala API for Dropwizard's Metrics.

Testing

  1. gatling / gatling

    6675

    Modern Load Testing as Code

  2. typelevel / scalacheck

    1948

    Property-based testing for Scala

  3. holdenk / spark-testing-base

    1534

    Base classes to use when writing tests with Spark

  4. scalatest / scalatest

    1160

    A testing tool for Scala and Java developers

Databases, Indexing and Searching

Image for: Databases, Indexing and Searching

Deployment, Virtualization and Cloud

Image for: Deployment, Virtualization and Cloud

Development Tooling

Image for: Development Tooling

Build Tools

  1. sbt / sbt

    4841

    sbt, the interactive build tool

  2. com-lihaoyi / mill

    2450

    Mill is a fast JVM build tool that supports Java, Scala, Kotlin and many other languages. 3-6x faster than Maven or Gradle for common workflows, Mill aims to make your project’s build process performant, maintainable, and flexible

  3. virtuslab / scala-cli

    603

    Scala CLI is a command-line tool to interact with the Scala language. It lets you compile, run, test, and package your Scala code (and more!)

  4. build-server-protocol / build-server-protocol

    489

    Protocol for IDEs and build tools to communicate about compile, run, test, debug and more.

Code Analysis

  1. joernio / joern

    2426

    Open-source code analysis platform for C/C++/Java/Binary/Javascript/Python/Kotlin based on code property graphs. Discord https://discord.gg/vv4MH284Hc

  2. scalameta / scalameta

    1136

    Library to read, analyze, transform and generate Scala programs

  3. scoverage / sbt-scoverage

    652

    sbt plugin for scoverage

  4. lightbend-labs / mima

    472

    A tool for catching binary incompatibility in Scala

Code Editors and Notebooks

  1. scalameta / metals

    2202

    Scala language server with rich IDE features 🚀

  2. almond-sh / almond

    1614

    A Scala kernel for Jupyter

  3. polynote / polynote

    4566

    A better notebook for Scala (and more)

  4. jetbrains / sbt-ide-settings

    67

    SBT plugin for tweaking various IDE settings

Code Formatting

  1. scalameta / scalafmt

    1465

    Code formatter for Scala

  2. sbt / sbt-scalariform

    255

    sbt plugin adding support for source code formatting using Scalariform

  3. scalameta / sbt-scalafmt

    215

    sbt plugin for Scalafmt

  4. lucidsoftware / neo-sbt-scalafmt

    148

    Scalafmt SBT plugin

Library Dependency Management

  1. coursier / coursier

    2084

    Pure Scala Artifact Fetching

  2. scala-steward-org / scala-steward

    1176

    :robot: A bot that helps you keep your projects up-to-date

  3. sbt / sbt-dependency-graph

    1249

    sbt plugin to create a dependency graph for your project

  4. rtimush / sbt-updates

    768

    sbt plugin that can check Maven and Ivy repositories for dependency updates

Linting and Refactoring

  1. wartremover / wartremover

    1100

    Flexible Scala code linting tool

  2. scalacenter / scalafix

    851

    Refactoring and linting tool for Scala

  3. scalastyle / scalastyle

    674

    scalastyle

  4. scapegoat-scala / scapegoat

    541

    Scala compiler plugin for static code analysis

Miscellaneous Tools

  1. rtyley / bfg-repo-cleaner

    11559

    Removes large or troublesome blobs like git-filter-branch does, but faster. And written in Scala

  2. foundweekends / giter8

    1747

    a command line tool to apply templates defined on GitHub

  3. spray / sbt-revolver

    859

    An SBT plugin for dangerously fast development turnaround in Scala

  4. sbt / sbt-header

    186

    sbt-header is an sbt plugin for creating file headers, e.g. copyright headers

Packaging and Publishing

  1. sbt / sbt-assembly

    1956

    Deploy über-JARs. Restart processes. (port of codahale/assembly-sbt)

  2. sbt / sbt-native-packager

    1600

    sbt Native Packager

  3. sbt / sbt-release

    652

    A release plugin for sbt

  4. xerial / sbt-pack

    497

    A sbt plugin for creating distributable Scala packages.

Printing and Debugging

  1. com-lihaoyi / sourcecode

    530

    Scala library providing "source" metadata to your program, similar to Python's __name__, C++'s __LINE__ or Ruby's __FILE__.

  2. com-lihaoyi / pprint

    238

    Pretty-printing value, types and type-signatures in Scala

  3. johnreedlol / scala-trace-debug

    115

    Macro based print debugging. Locates log statements in your IDE.

  4. adamw / scala-macro-debug

    80

    Scala macros for making debugging easier

Scripting and REPLs

  1. com-lihaoyi / ammonite

    2625

    Scala Scripting

  2. scala / toolkit

    95

    The batteries-included Scala

  3. masseguillaume / scalakata2

    98

    Interactive Playground

  4. dbdahl / rscala

    99

    The Scala interpreter is embedded in R and callbacks to R from the embedded interpreter are supported. Conversely, the R interpreter is embedded in Scala.

Static Sites and Documentation

  1. tpolecat / tut

    578

    doc/tutorial generator for scala

  2. typelevel / laika

    438

    Site and E-book Generator and Customizable Text Markup Transformer for sbt, Scala and Scala.js

  3. scalameta / mdoc

    401

    Typechecked markdown documentation for Scala

  4. lightbend / paradox

    248

    Markdown documentation

See also:

Images, Audio and Video

Image for: Images, Audio and Video

Mathematics, Finance, Data Science and Bioinformatics

Image for: Mathematics, Finance, Data Science and Bioinformatics

Bioinformatics

  1. bigdatagenomics / adam

    1025

    ADAM is a genomics analysis platform with specialized file formats built using Apache Avro, Apache Spark, and Apache Parquet. Apache 2 licensed.

  2. fulcrumgenomics / fgbio

    329

    Tools for working with genomic and high throughput sequencing data.

  3. projectglow / glow

    282

    An open-source toolkit for large-scale genomic analysis

  4. clulab / reach

    98

    Reach Biomedical Information Extraction

Cryptography and Hashing

  1. wavesplatform / waves

    1170

    ⛓️ Reference Waves Blockchain Node (client) implementation on Scala

  2. hyperledger-labs / scorex

    544

    Scorex 2.0 Core

  3. jmcardon / tsec

    350

    Type-safe general-cryptography library - https://jmcardon.github.io/tsec/

  4. input-output-hk / scrypto

    205

    Cryptographic primitives for Scala

Economy, Finance and Cryptocurrencies

  1. bitcoin-s / bitcoin-s

    366

    Bitcoin Implementation in Scala

  2. lambdista / money

    77

    Scala DSL for money-related operations

  3. snowplow / scala-forex

    46

    High-performance Scala library for performing exchange rate lookups and currency conversions

  4. openquant / yahoofinancescala

    23

    A non-blocking Yahoo Finance Scala client

Natural Language Processing

  1. johnsnowlabs / spark-nlp

    3991

    State of the Art Natural Language Processing

  2. scalanlp / chalk

    259

    Chalk is a natural language processing library.

  3. clulab / processors

    418

    Natural Language Processors

  4. knowitall / nlptools

    101

    A toolkit that wraps various natural language processing implementations behind a common interface.

Numerical and Symbolic Computing

  1. scalanlp / breeze

    3457

    Breeze is/was a numerical processing library for Scala.

  2. typelevel / spire

    1770

    Powerful new number types and numeric abstractions for Scala.

  3. vagmcs / optimus

    142

    Optimus is a mathematical programming library for Scala.

  4. cascala / galileo

    71

    Scala Math - Numerical (Matlab-like) and Symbolic (Mathematica-like) tool

Probability, Statistics and Machine Learning

  1. apache / predictionio

    12526

    PredictionIO, a machine learning server for developers and ML engineers.

  2. microsoft / synapseml

    5137

    Simple and Distributed Machine Learning

  3. salesforce / transmogrifai

    2259

    TransmogrifAI (pronounced trăns-mŏgˈrə-fī) is an AutoML library for building modular, reusable, strongly typed machine learning workflows on Apache Spark with minimal hand-tuning

  4. byzer-org / byzer-lang

    1839

    Byzer (former MLSQL): A low-code open-source programming language for data pipeline, analytics and AI.

Mobile, Desktop and Game Development

Image for: Mobile, Desktop and Game Development

Operating System, Hardware and Robotics

Image for: Operating System, Hardware and Robotics

Text, Formats and Compression

Image for: Text, Formats and Compression

Archives and Compression

  1. gekomad / scala-compress

    9

    Archivers and Compressors for Scala

  2. avast / bytecompressor

    5

    Java and Scala abstractions for some compression algorithms.

CSV

  1. tototoshi / scala-csv

    699

    CSV Reader/Writer for Scala

  2. davenverse / cormorant

    89

    A CSV Handling Library for FP.

  3. scalikejdbc / csvquery

    37

    A handy SQL runner to work with CSV files

  4. fingo / spata

    36

    Functional, stream-based CSV processor for Scala

JSON

  1. circe / circe

    2518

    Yet another JSON library for Scala

  2. json4s / json4s

    1488

    JSON library

  3. spray / spray-json

    973

    A lightweight, clean and simple JSON implementation in Scala

  4. plokhotnyuk / jsoniter-scala

    779

    Scala macros for compile-time generation of safe and ultra-fast JSON codecs + circe booster

Markdown

  1. foundweekends / pamflet

    121

    a publishing application for short texts

  2. noelwelsh / mads

    19

    Markdown String Interpolator for Scala 3

  3. scalatra / scalamd

    10

    Scala of Markdown: http://daringfireball.net/projects/markdown

  4. esamson / remder

    2

    Renders a live HTML view of a Markdown file. Bring your own editor.

Other Document Formats

  1. lihaoyi / scalatex

    290

    Programmable, Typesafe Document Generation

  2. tomtung / latex2unicode

    38

    Convert LaTeX markup to Unicode (in Scala and Java)

  3. jd557 / qrgen

    8

    Scala port of https://github.com/nayuki/QR-Code-generator

  4. jphmrst / scala-latex

    1

    Generate LaTeX/PDF output from within Scala

PDF

  1. allenai / pdffigures2

    664

    Given a scholarly PDF, extract figures, tables, captions, and section titles.

  2. allenai / science-parse

    663

    Science Parse parses scientific papers (in PDF form) and returns them in structured form.

  3. cloudify / spdf

    200

    Create PDFs from Scala using plain old HTML and CSS. Uses wkhtmltopdf on the back-end which renders HTML using Webkit.

  4. hhandoko / play2-scala-pdf

    26

    A PDF module for Play Framework 2 (Scala)

Serialization

  1. scalapb / scalapb

    1317

    Protocol buffer compiler for Scala.

  2. scala / pickling

    832

    Fast, customizable, boilerplate-free pickling support for Scala

  3. scodec / scodec

    814

    Scala combinator library for working with binary data

  4. sksamuel / avro4s

    723

    Avro schema generation and serialization / deserialization for Scala

Text Manipulation

  1. rockymadden / stringmetric

    485

    :dart: String metrics and phonetic algorithms for Scala (e.g. Dice/Sorensen, Hamming, Jaccard, Jaro, Jaro-Winkler, Levenshtein, Metaphone, N-Gram, NYSIIS, Overlap, Ratcliff/Obershelp, Refined NYSIIS, Refined Soundex, Soundex, Weighted Levenshtein).

  2. com-lihaoyi / fansi

    231

    Scala/Scala.js library for manipulating Fancy Ansi colored strings

  3. bizzabo / diff

    177

    Visually compare Scala data structures with out of the box support for arbitrary case classes.

  4. atry / fastring

    127

    Extremely fast string formatting

YAML

  1. circe / circe-yaml

    143

    YAML parser for circe using SnakeYAML

  2. jcazevedo / moultingyaml

    99

    Scala wrapper for SnakeYAML

  3. virtuslab / scala-yaml

    96
  4. jodersky / yamlesque

    6

    Reads like yaml, writes like yaml; it must be yaml!

See also:

Time, Positions and Units of Measurement

Image for: Time, Positions and Units of Measurement

Web Development

Image for: Web Development

Asset Management and Bundlers

  1. sbt / sbt-web

    369

    Library for building sbt plugins for the web

  2. scalacenter / scalajs-bundler

    238
  3. vmunier / sbt-web-scalajs

    195

    SBT plugin to use Scala.js along with any sbt-web server.

  4. irundaia / sbt-sassify

    68

    sbt-web plugin for Sass files

Authentication and Permissions

  1. jaliss / securesocial

    1185

    A module that provides OAuth, OAuth2 and OpenID authentication for Play Framework applications

  2. mohiva / play-silhouette

    814

    Silhouette is an authentication library for Play Framework applications that supports several authentication methods, including OAuth1, OAuth2, OpenID, CAS, 2FA, TOTP, Credentials, Basic Authentication or custom authentication schemes.

  3. nulab / scala-oauth2-provider

    536

    OAuth 2.0 server-side implementation written in Scala

  4. softwaremill / akka-http-session

    440

    Web & mobile client-side akka-http sessions, with optional JWT support

Emailing

  1. dmurvihill / courier

    221

    send electronic mail with scala

  2. playframework / play-mailer

    250

    Play mailer plugin

  3. spinoco / fs2-mail

    44

    asynchronous library for sending and receiving mail via fs2._

  4. eikek / emil

    41

    Emil is a library for dealing with E-Mail in Scala.

Forms and Validation

  1. wix-incubator / accord

    529

    Accord: A sane validation library for Scala

  2. jto / validation

    192

    validation api extracted from play

  3. krzemin / octopus

    150

    Scala library for boilerplate-free validation

  4. typelevel / literally

    112

    Compile time validation of literal values built from strings

HTTP Servers and Clients

  1. playframework / playframework

    12580

    The Community Maintained High Velocity Web Framework For Java and Scala.

  2. scalatra / scalatra

    2651

    Tiny Scala high-performance, async web framework, inspired by Sinatra

  3. http4s / http4s

    2580

    A minimal, idiomatic Scala interface for HTTP

  4. finagle / finch

    1605

    Scala combinator library for building Finagle HTTP services

Internationalization

  1. makkarpov / scalingua

    53

    A simple gettext-like internationalization (aka i18n) library for Scala and Play Framework

  2. alaz / scala-i18n

    43

    Play-like internationalized messages for any Scala

  3. xitrum-framework / scaposer

    38

    GNU Gettext .po file loader for Scala

  4. taig / babel

    35

    Internationalization (i18n) for Scala applications

Semantic Web

  1. banana-rdf / banana-rdf

    296

    Banana RDF

  2. phenoscape / scowl

    56

    A Scala DSL for programming with the OWL API.

Templating

  1. scalate / scalate

    607

    Scalate is a Scala based template engine which supports HAML, Mustache and JSP, Erb and Velocity style syntaxes.

  2. playframework / twirl

    557

    Twirl is Play's default template engine

  3. mwunsch / handlebars.scala

    111

    A Scala implementation of the Handlebars templating language (a superset of Mustache).

  4. sake92 / hepek

    110

    Typesafe HTML templates and static site generator in pure Scala

Third-Party APIs

  1. bot4s / telegram

    423

    Telegram Bot API Wrapper for Scala

  2. danielasfregola / twitter4s

    256

    An asynchronous non-blocking Scala client for both the Twitter Rest and Streaming API

  3. 47degrees / github4s

    231

    A GitHub API wrapper written in Scala

  4. slack-scala-client / slack-scala-client

    188

    A scala library for interacting with the slack api and real time messaging interface

URLs and Routing

  1. raquo / waypoint

    96

    Efficient router for Laminar UI Library

  2. sparsetech / trail

    82

    Routing library for the Scala platform

  3. sherpal / url-dsl

    37

    Tiny dsl library for path et parameters of urls

  4. tulz-app / frontroute

    37

    front-end router library for single-page applications built with Scala.js, with an API inspired by Akka HTTP

Web Frontend

  1. japgolly / scalajs-react

    1652

    Facebook's React on Scala.JS

  2. thoughtworksinc / binding.scala

    1584

    Reactive data-binding for Scala

  3. raquo / laminar

    797

    Simple, expressive, and safe UI library for Scala.js

  4. shadaj / slinky

    664

    Write Scala.js React apps just like you would in ES6

XML/HTML and DOM

  1. com-lihaoyi / scalatags

    765

    ScalaTags is a small XML/HTML construction library for Scala.

  2. ruippeixotog / scala-scraper

    725

    A Scala library for scraping content from HTML pages

  3. eed3si9n / scalaxb

    341

    scalaxb is an XML data binding tool for Scala.

  4. scala-js / scala-js-dom

    323

    Statically typed DOM API for Scala.js

See also: