Scala libraries

Scala libraries

Whenever I come I across a Scala library I take a note of it here. This collection is neither complete nor have I used all of these libraries. It is mainly used as a point of reference if I want to find some functionality implemented in a Scala library.

Akka

hseeberger/akka-sse Server Sent Events for Akka HTTP

ktoso/akka-raft toy project implementing RAFT on top of Akka Cluster (not prod ready)

strongtyped/fun-cqrs small library for building CQRS application using Scala in combination with Akka. (fun-cqrs-devoxx-demo )

paypal/squbs Akka/Spray for Large-Scale Production Deployments http://paypal.github.io/squbs

nokia/akka-typed-persistence This library implements actor persistence for Akka Typed with event sourcing.

scalapenos/stamina serialization toolkit written specifically for use with Akka Persistence.

krasserm/streamz A combinator library for integrating Functional Streams for Scala (FS), Akka Streams and Apache Camel

Android

macroid modular functional UI language for Android

Better errors

tek/splain better implicit errors for scala

djx314/ohNoMyCirce Friendly compile error messages for shapeless’s Generic, circe’s Encoder & Decoder and slick’s case class mapping.

softwaremill/scala-clippy : Good advice for Scala compiler errors

Blog

szeiger/ornate tool for building multi-page HTML sites from Markdown sources

Cache

scredis non-blocking, ultra-fast Scala Redis client built on top of Akka IO.

Koboshi resilient caching of any configuration/resources from an unreliable source

caffeine high-performance Java 8 based caching library providing a near optimal hit rate.

scalacache#caffeine facade for the most popular cache implementations, with a simple, idiomatic Scala API.

laserdisc-io/laserdisc A(nother) Redis Client

Collections

non/chain wrapper for fast concatenation/iteration.

Compiler plugins

kind-projector Compiler plugin for making type lambdas (type projections) easier to write

TwoTails Scala compiler plugin for mutual tail recursion

sbt-dotty plugin to build your application using dotty with Sbt support

miniboxing/ildl-plugin The ildl-plugin is a meta-programming technique aimed at allowing safe, custom transformations across library boundaries.

ghik/silencer Scala compiler plugin for annotation-based warning suppression

Config

ficus Scala-friendly companion to Typesafe config

pureconfig boilerplate-free library for loading configuration files

SHocon simple pure Scala implementation of the HOCON specification

ccadllc/cedi-config Provides a safe API for parsing settings objects out of Typesafe Config.

Converters

Verizon/delorean correct and stable conversions between Task and Future

Databases

flyway/flyway Flyway by Boxfuse • Database Migrations Made Easy. https://flywaydb.org

tpolecat/doobie principled database access for scala

Dynamo

scanamo/scanamo Simpler DynamoDB access for Scala https://www.scanamo.org

Mongo

julienrf/reactivemongo-derived-codecs Compared to the ReactiveMongo’s macros, this project brings support for sealed traits ,recursive types

Kafka

vectos/scala-kafka Kafka driver written in pure Scala.

cakesolutions/scala-kafka-client thin Scala wrapper over the official Apache Kafka Java Driver

Postgres

finagle/roc A Modern Finagle-Postgresql Client http://finagle.github.io/roc/docs/

Slick

slick-pg Slick extensions for PostgreSQL

slickless Shapeless HList support for Slick.

slickdroid android backend for Slick

active-slick CRUD operations for Slick 3.x projects

unicorn small Slick library for type-safe id handling

Graph

twitter/cassovary simple big graph processing library for the JVM

Data science

bloom-filter-scala an efficient bloom filter for Scala doc

neuroflow lightweight library to construct, sketch, train and evaluate Artificial Neural Networks

ThoughtWorksInc/DeepLearning.scala A DSL for creating complex neural networks

stripe/rainier Bayesian inference in Scala.

Verizon/quiver A reasonable library for modeling multi-graphs in Scala http://verizon.github.io/quiver/

Datetime

vpavkin/dtc Provides type classes for datetime values. Works both on JVM & ScalaJS. https://vpavkin.github.io/dtc/api

Dependency Injection

zalando/grafter a library to configure and wire Scala applications

Functional Programming

typelevel/cats Lightweight, modular, and extensible library for functional programming. http://typelevel.org/cats/

hamsters mini Scala utility library that supports Validation, OK/KO Monads, Monad transformers, HLists, Union types

runarorama/latr Scala macro for reasonable lazy semantics (evaluation is delayed and memoized)

mouse small companion to cats. Mouse includes enrichments for Boolean, Option, String

stew/dogs data structures for pure functional programming in scala. see the completely incomplete documentation website:https://stew.github.io/dogs

travisbrown/catbird Birds and cats together http://catbird.io This project provides cats type class instances (and other useful cats-related stuff) for various Twitter Open Source Scala projects.

ThoughtWorksInc/each A macro library that converts native imperative syntax to scalaz’s monadic expressions

oleg-py/better-monadic-for Desugaring scala for without implicit withFilters

fthomas/singleton-ops Operations for primitive and String singleton types

fommil/scalaz-deriving deriving for scala data types

Free Monads

ProjectSeptemberInc/freek a freaky simple Free to combine your DSL seamlessly

aecor/liberator The goal of this library is to generate everything you need to create programs using Free monad, without boilerplate.

Lenses

quicklens modify deeply nested case class fields

Monocle Optics library for Scala http://julien-truffaut.github.io/Monocle/

jeremyrsmith/patchless Patch data type for Scala and shapeless (Technically not a lens, but sort of !)

Monad Stack

atnos-org/eff Extensible effects are an alternative to monad transformers for computing with effects in a functional way. 

Typeclasses

Defining typeclasses

mpilquist/simulacrum first class syntax support for type classes in Scala

Providing instances of typeclasses

milessabin/export-hook minimal infrastructure for type class providers to support the inclusion of derived, subclass and other orphan instances in their implicit scope.

Using typeclasses

mpilquist/local-implicits: Scala compiler plugin which provides syntax for working with locally declared implicit values

Performance typeclasses runtime (imp-machinist)

non/imp macro for summoning implicit values

typelevel/machinist spire’s macros for zero-cost operator enrichment

Combining all the above

typelevel/typeclassic integration (or merge) simulacrummachinistimpexport-hook, and possibly other projects.

In From Simulacrum to Typeclassic, Michael Pilquist explains all these libraries.

Types

estatico/scala-newtype NewTypes for Scala with no runtime overhead

non/kronecker Library for counting and enumerating things.

Json

propensive/rapture json library is the ultimate Scala JSON library. It doesn’t really do anything with JSON itself, instead, it abstracts over the following JSON libraries (which it calls backends)

MediaMath/scala-json Compile-time JSON marshaling and abstraction for Scala and Scala.js

aishfenton/Argus Builds models from JSON Schemas

fthomas/crjdt A conflict-free replicated JSON datatype (CRDT) in Scala https://fthomas.github.io/crjdt/

circe/circe Yet another JSON library for Scala https://circe.github.io/circe/

lihaoyi/upickle uPickle: a simple, fast, dependency-free JSON serialization library for Scala https://lihaoyi.github.io/upickle

Json Schema

Opetushallitus/scala-schema JSON schema generation, validation and de-serialization for Scala classes

eclipsesource/play-json-schema-validator JSON Schema Validation with Play JSON

andyglow/scala-jsonschema Scala JSON Schema

JWT

jwt-scala Scala support for JSON Web Token

Html

ScalaTags small, fast XML/HTML/CSS construction library for Scala

Scalate Scala Template Engine

beard lightweight logicless templating engine, written in Scala and inspired by Mustache

OutWatch/outwatch A purely functional and reactive UI framework based on Monix and VirtualDom http://outwatch.github.io

Http - (or api)

julienrf/endpoints Scala library to define HTTP endpoints

scalaj-http simple Scala wrapper for HttpURLConnection. OAuth included.

eed3si9n/gigahorse an HTTP client for Scala with Async Http Client undernieth.

finagle/finch Scala combinator library for building Finagle HTTP services https://gitter.im/finagle/finch

lihaoyi/requests-scala A Scala port of the popular Python Requests HTTP client: flexible, intuitive, and straightforward to use.

pheymann/typedapi Build your web API on the type level.

Internationalization

ICU International Components for Unicode

scalingua simple gettext-like internationalization (aka i18n) library for Scala

Logging

Verizon/journal fast, simple, Scala library for logging, based on SLF4J.

twitter/distributedlog. high performance replicated log service

Machine Learning

Aerosolve A machine learning package built for humans.

anskarl/LoMRF open-source implementation of Markov Logic Networks.

feiwang3311/Lantern a machine learning framework prototype

eaplatanios/tensorflow_scala TensorFlow API for the Scala Programming Language http://platanios.org/tensorflow_scala

Parsing

scopt/scopt simple scala command line options parsing

bkirwi/decline A composable command-line parser for Scala. http://monovore.com/decline/

tpolecat/atto friendly little parsers

Serialization

msgpack/msgpack-scala An implementation of MessagePack for Scala.

twitter/chill Scala extensions for the Kryo serialization library

Services

getclump/clump A library for expressive and efficient service composition

Spark

adelbertc/frameless Expressive types for Spark.

Static Analysis

findbugs4sbt static code analysis via FindBugs from within SBT

sbt-findbugs Sbt plugin for running FindBugs on Java classes

wartremover flexible Scala code linting tool

Sbt plugins

sbt-updates Sbt plugin that can check maven repositories for dependency updates

sbt-dependency-graph Sbt plugin to create a dependency graph for your project

sbt/sbt-doge Sbt plugin to aggregate tasks across subprojects and their crossScalaVersions

sbt-release release plugin for Sbt (>= 0.11.0)

sbt-tojar an Sbt plugin that enables straight-to-jar compilation of Scala files

sbt-swagger Sbt plugin for extracting Swagger & JAX-RS (jsr311) annotations from compiled classes into Swagger API models, which are then serialized to JSON for consumption with swagger-ui.

sbt-git the sbt-git plugin offers git command line features directly inside Sbt as well as allowing other plugins to make use of git.

Scalafmt opinionated code formatter for Scala

tpolecat/tut very simple documentation tool for Scala that reads Markdown files and interprets Scala code in tut sheds

Verizon/sbt-rig Common build and release steps for SBT projects

ThoughtWorksInc/implicit-dependent-type a Scala compiler plugin that resolves dependent types from implicit type classes, especially useful when working with shapeless or other type-level programming libraries.

alexarchambault/coursier Pure Scala Artifact Fetching- dependency management

Verizon/sbt-blockade Warn or ban particular dependencies in a build to prevent usage.

scalacenter/scalafix Refactoring and linting tool for Scala https://scalacenter.github.io/scalafix/

scalaz/scalazzi enforce the Scalazzi subset of Scala with scalafix

albuch/sbt-dependency-check SBT Plugin for OWASP DependencyCheck. Monitor your dependencies and report if there are any publicly known vulnerabilities (e.g. CVEs).

Skeletons

Scala Bootstrap (base / project skeleton) This is a repository intended to serve as a starting point if you want to bootstrap a project in Scala. It could be useful if you want to start from scratch a kata or a little exercise or project. 

Play 2.5 compile-time DI skeleton

lloydmeta/ctdi-play.g8 Compile-time DI Play template

CodelyTV/scala_bootstrap Scala Bootstrap (base / project skeleton)

Testing

ScalaMeter automate your performance testing today.

cornichon  an extensible Scala DSL for testing JSON HTTP APIs.

manub/scalatest-embedded-kafka library that provides an in-memory Kafka broker to run your ScalaTest specs against. It uses Kafka 0.10.0.0 and ZooKeeper 3.4.7.

other

reftree automatic object tree diagrams for immutable data

fthomas/refined library for refining types with type-level predicates which constrain the set of values described by the refined type. http://refined.timepit.eu

julienrf/enum yet another enumeration toolbox for Scala, powered by shapeless.

cvogt/cbt: CBT - fun, fast, intuitive, compositional, statically checked builds written in Scala

squants the Scala API for Quantities, Units of Measure and Dimensional Analysis

Atomic References Low-level concurrency tools for Scala with equivalents for Scala.js.

scala-rainbow simple terminal output colorizing for Scala

fetch is especially useful when querying data that has a latency cost doc

cvogt/scala-extensions Useful extensions for the Scala standard library

wookietreiber/sbt-scaliterate generates Scala source code from a *programming book* written in  Markdown.

reftree automatic object tree diagrams for immutable data

Verizon/delorean Convert Task to Future, and Future to Task

More resources

lauris/awesome-scala community driven list of useful Scala libraries, frameworks and software.

akullpp/awesome-java A curated list of awesome Java frameworks, libraries and software.