Awesome Scala ¶
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.
- CIlib ★ 82 - Typesafe, purely functional Computational Intelligence.
- CIlib-tutorial ★ 2 - A tutorial book for cilib.
Database access libraries in Scala.
- Anorm ★ 135 - Simple SQL data access.
- Casbah (repo) - Officially supported Scala driver for MongoDB
- Clickhouse-scala-client - Reactive client for Clickhouse
- CouchDB-Scala ★ 59 ⧗ 21 - Purely functional Scala client for CouchDB
- doobie ★ 812 ⧗ 0 - Pure functional JDBC layer for Scala.
- Elastic4s ★ 1049 ⧗ 0 - A scala DSL / reactive client for Elasticsearch
- Finagle ★ 42 ⧗ 71 - PostgreSQL protocol support for Finagle
- laserdisc ★ 37 - A Future-free, fs2 native pure FP Redis client
- longevity ★ 78 ⧗ 21 - A Persistence Framework for Scala and NoSQL with a Domain Driven Design Orientation
- lucene4s ★ 3 ⧗ 56 - Light-weight convenience wrapper around Lucene to simplify complex tasks and add Scala sugar.
- MapperDao ★ 12 ⧗ 36 - An ORM library for oracle, mysql, mssql, and postgresql
- Memcontinuationed ★ 51 ⧗ 245 - Memcached client for Scala.
- Morpheus ★ 104 ⧗ 0 - Reactive type safe Scala Driver for MySQL/Postgres.
- neo4akka ★ 6 ⧗ 117 - Neo4j Scala client using Akka HTTP with compile-time query interpolation, case class support, true non-blocking IO, and much more.
- neotypes ★ 22 ⧗ 2 - Pure functional driver for neo4j.
- Phantom ★ 903 ⧗ 5 - Reactive typed Scala driver for Apache Cassandra.
- PostgreSQL and MySQL async ★ 983 ⧗ 0 - Async database drivers to talk to PostgreSQL and MySQL in Scala.
- Pulsar4s ★ 15 - Scala client for Apache Pulsar.
- Quill ★ 865 ⧗ 0 - Compile-time Language Integrated Query for Scala
- ReactiveCouchbase - Reactive Scala Driver for Couchbase. Also includes a Play plug-in. An official plug-in is also in development.
- ReactiveMongo ★ 704 ⧗ 8 - Reactive Scala Driver for MongoDB.
- rediscala ★ 642 ⧗ 0 - Non-blocking, Reactive Redis driver for Scala (with Sentinel support)
- Relate ★ 110 ⧗ 7 - Lightweight, blazing-fast database access layer for Scala that abstracts the idiosyncricies of the JDBC while keeping complete control over the SQL.
- Salat ★ 490 ⧗ 9 - ORM for MongoDB. A related Play-plugin is also available.
- Scala ActiveRecord ★ 297 ⧗ 3 - ORM library for scala, inspired by ActiveRecord of Ruby on Rails.
- Scala-Forklift ★ 91 ⧗ 1 - Type-safe database migration for Slick, Git, etc.
- scala-redis ★ 739 ⧗ 1 - A Scala library for connecting to a redis server, with clustering support
- scala-sql ★ 14 ⧗ 34 - Yet another SQL-based DB access library for scala language
- ScalaRelational ★ 51 ⧗ 1 - Type-Safe framework for defining, modifying, and querying SQL databases.
- ScalikeJDBC ★ 746 ⧗ 1 - A tidy SQL-based DB access library for Scala developers.
- Scanamo ★ 92 ⧗ 1 - A library to make using DynamoDB with Scala simpler and less error-prone.
- scredis ★ 149 ⧗ 29 - Non-blocking Redis client built on top of Akka IO (used by Livestream)
- Shade ★ 82 ⧗ 32 - Memcached client for Scala, based on Spymemcached
- Slick ★ 1795 ⧗ 0 - Modern database query and access library for Scala.
- Slick-pg ★ 714 - Slick extensions for PostgreSQL.
- Sorm ★ 239 ⧗ 2 - A functional boilerplate-free Scala ORM.
- Squeryl ★ 484 ⧗ 1 - A Scala DSL for talking with databases with minimum verbosity and maximum type safety.
- Sangria - Scala GraphQL Implementation
- Scruid ★ 48 - Scruid (Scala+Druid) is an open source library that allows you to compose Druid queries easily in Scala.
- Tepkin ★ 86 ⧗ 251 - Reactive MongoDB Driver for Scala built on top of Akka IO and Akka Streams.
- Op-Rabbit ★ 153 ⧗ 2 - High-level messaging library for Akka and Op-Rabbit.
Graphical User Interfaces¶
Libraries for creation of graphical user interfaces
- ScalaFX - Scala DSL for creating Graphical User Interfaces that sits on top of JavaFX.
Scala frameworks for web development.
- Analogweb - Tiny, simple, and pluggable web framework in Scala.
- Chaos ★ 220 ⧗ 27 - A lightweight framework for writing REST services in Scala.
- Colossus ★ 811 ⧗ 70 - lightweight framework for building high-performance applications in Scala that require non-blocking network I/O.
- Finatra ★ 1558 ⧗ 0 - A sinatra-inspired web framework for scala, running on top of Finagle.
- Lift ★ 1069 ⧗ 0 - Secure and powerful full stack web framework (discussion).
- peregine ★ 11 ⧗ 40 - A simple and async lightweight Scala web framework.
- Play ★ 9229 ⧗ 0 - Makes it easy to build scalable, fast and real-time web applications with Java & Scala.
- Play Pagelets ★ 47 ⧗ 11 - A Module for the Play Framework to build resilient and modular Play applications in an elegant and concise manner.
- Reactive ★ 194 ⧗ 6 - FRP and web abstractions, which can be plugged into any web framework (currently only has bindings for Lift).
- scalajs-react ★ 1135 ⧗ 0 - Facebook's React on Scala.JS.
- Scalatra ★ 2146 ⧗ 0 - Tiny Scala high-performance, async web framework, inspired by Sinatra.
- Skinny Framework ★ 621 ⧗ 1 - A full-stack web app framework upon Scalatra for rapid Development in Scala.
- suzaku - Suzaku web UI framework for Scala
- Unfiltered ★ 673 ⧗ 6 - A modular set of unopinionated primitives for servicing HTTP and WebSocket requests in Scala.
- Xitrum - An async and clustered Scala web framework and HTTP(S) server fusion on top of Netty, Akka, and Hazelcast.
- youi ★ 81 ⧗ 12 - Next generation user interface framework and server engine for Scala and Scala.js.
Reactive Web Frameworks¶
Scala libraries for Reactive Web development
- Binding.scala ★ 935 ⧗ 0 - A reactive web framework. It enables you use native XML literal syntax to create reactive DOM nodes, which are able to automatically change whenever the data source changes.
- Korolev - Modern single-page applications running on the server side
- Udash - a web framework based on Scala.js with support for property bindings, frontend routing, i18n and much more. It also provides strongly typed client<->server RPC system based on WebSockets.
- Vert.x Web - Toolkit to build Reactive web applications..
- Widok - Reactive web framework for the JVM and Scala.js
Data Binding and Validation¶
Scala libraries for data binding and validation
- Accord ★ 379 ⧗ 0 - A sane validation library for Scala
- form-binder ★ 17 ⧗ 29 - A micro data binding and validating framework, very easy to use and hack
- Monkeytail ★ 55 - A set of validation macros and helpers for cats.Validated
- Octopus ★ 15 - Scala library for boilerplate-free validation
- Dupin ★ 7 - Minimal, idiomatic, customizable validation for Scala.
Scala libraries for i18n.
- scala-xgettext ★ 19 ⧗ 99 - A compiler plugin that acts like GNU xgettext command to extract i18n strings in Scala source code files to Gettext .po file.
- Scaposer ★ 30 ⧗ 99 - GNU Gettext .po file loader for Scala.
Libraries for implementing authentications schemes.
- akka-http-session ★ 268 ⧗ 11 - Web&mobile client-side sessions for akka-http based applications, with optional JWT support
- AWS Request Signer ★ 4 ⧗ 43 - Helper to evaluate the signing headers for HTTP requests to Amazon Web Services.
- OAuth2-mock-play ★ 16 ⧗ 23 - Implementation of an OAuth2 server designed for mocking/testing and configurable by environment variables (by use of the Typesafe config).
- Play Google Auth Module ★ 17 ⧗ 76 - A very simple implementation of Google OpenID Connect authentication for Play 2 applications.
- play-pac4j ★ 255 ⧗ 0 - Security library managing authentication (CAS, OAuth, OpenID, SAML, LDAP, SQL, JWT...), authorizations and logout for Play 2.x in Java and Scala.
- play-silhouette ★ 600 ⧗ 1 - Authentication library for Play Framework applications that supports several authentication methods, including OAuth1, OAuth2, OpenID, Credentials or custom authentication schemes.
- play2-auth ★ 617 ⧗ 4 - Play2.x Authentication and Authorization module.
- scala-oauth2-provider ★ 419 ⧗ 7 - OAuth 2.0 server-side implementation written in Scala.
- SecureSocial ★ 1210 ⧗ 1 - A module that provides OAuth, OAuth2 and OpenID authentication for Play Framework applications.
Libraries for implementing authorization strategies.
- deadbolt-2 ★ 467 ⧗ 3 - A Play 2.x module supporting role-based and proprietary authorization; idiomatic APIs for Scala and Java APIs are provided.
Cryptography and Encryption Libraries.
- Scrypto ★ 50 ⧗ 4 - All-purpose cryptographic framework.
- TSec ★ 27 ⧗ 0 - Type-safe, functional, general-cryptography library
Libraries for code testing.
- cornichon ★ 109 ⧗ 3 - Scala DSL for testing HTTP JSON API.
- Gatling - Async Scala-Akka-Netty based Stress Tool.
- Minitest - A testing framework with a focus on simplicity.
- Mockito Scala ★ 99 - Mockito for Scala, with improved syntax and many extra features on top of the Java version
- ScalaCheck ★ 1196 ⧗ 6 - Property-based testing for Scala.
- ScalaMeter - Performance & memory footprint measuring, regression testing.
- ScalaMock - Scala native mocking framework
- scalaprops ★ 171 ⧗ 5 - Another property based testing library for Scala
- ScalaTest ★ 532 ⧗ 5 - A testing tool for Scala and Java developers.
- Scalive ★ 187 ⧗ 20 - Connect a Scala REPL to running JVM processes without any prior setup; this library is used for inspecting systems in production mode.
- Specs2 ★ 570 ⧗ 1 - Software Specifications for Scala.
- Stryker4s ★ 21 - Test your tests with mutation testing.
- µTest ★ 197 ⧗ 0 - A tiny, portable testing library for Scala.
- testcontainers-scala ★ 52 ⧗ 2 - Docker containers for testing in Scala.
Libraries for work with json.
- argonaut - Purely Functional JSON in Scala.
- circe ★ 824 ⧗ 2 - JSON library based on Argonaut, depends on Cats
- diffson ★ 94 ⧗ 14 - A scala diff/patch library for Json
- jackson-module-scala ★ 313 ⧗ 8 - Add-on module for Jackson to support Scala-specific datatypes.
- jawn ★ 252 ⧗ 4 - Fast json parser (According to them, competetive with java gson/jackson speed).
- json4s ★ 877 ⧗ 0 - Project aims to provide a single AST to be used by other scala json libraries.
- jsoniter-scala ★ 47 ⧗ 7 - Scala macros for compile-time generation of ultra-fast JSON codecs.
- persist-json ★ 9 ⧗ 49 - Fast json parser.
- play-json ★ 39 ⧗ 7 - Flexible and powerful JSON manipulation, validation and serialization, with no reflection at runtime.
- Pushka ★ 75 ⧗ 21 - Scala JSON serialization library with annotations.
- qbproject - Scala Libs around JSON and API development for Play Framework.
- rapture-json - Clean, intuitive, unintrusive, boilerplate-free Scala API
- scala-jsonapi ★ 95 ⧗ 240 - Support library for integrating the JSON API spec with Scala and Spray JSON, Play! JSON or Circe.
- scalajack ★ 81 ⧗ 35 - Fast 'n easy JSON serialization with optional MongoDB support. Uses Jackson under the hood.
- spray-json ★ 606 ⧗ 2 - Lightweight, clean and efficient JSON implementation in Scala.
- sbt-json - sbt plugin that generates Scala case classes for easy, statically typed and implicit access of JSON documents
- uJson - fast, flexible and intuitive JSON for Scala
Libraries for work with YAML.
- MoultingYAML ★ 43 ⧗ 2 - Type-class based YAML serialization and deserialization on top of SnakeYAML.
Libraries for work with CSV.
- fm-flatfile ★ 1 ⧗ 1 - Very flexible, Flat File (CSV, TSV, Excel, etc) Reader for Scala.
- kantan.csv ★ 143 ⧗ 24 - CSV handling library for Scala with multiple backends.
- Scala-CSV ★ 365 ⧗ 1 - CSV Reader/Writer for Scala.
Libraries for serializing and deserializing data for storage or transport.
- avro-codegen ★ 24 ⧗ 23 - Code generation from avro schemas to serialize/deserialize avro messages, no runtime reflection.
- Avro4s ★ 473 - Avro schema generation and serialization / deserialization for Scala.
- Chill ★ 378 ⧗ 4 - Extensions for the Kryo serialization library to ease configuration in systems like Hadoop and Storm.
- msgpack ★ 75 ⧗ 57 - A efficient binary serialization library.
- Pickling ★ 808 ⧗ 0 - Fast, customizable, boilerplate-free pickling support.
- ScalaBuff ★ 218 ⧗ 1 - a Scala Protocol Buffers (protobuf) compiler
- ScalaPB ★ 705 ⧗ 51 - Protocol Buffers and gRPC support for Scala
- scodec ★ 474 ⧗ 10 - A combinator library for working with binary data.
- Scrooge - An Apache Thrift code generator for Scala.
- validation ★ 177 ⧗ 3 - Advanced validation & serialization for JSON, HTML form data, etc, with no reflection at runtime.
Science and Data Analysis¶
Libraries for scientific computing, data analysis and numerical processing.
- Algebird ★ 1478 ⧗ 0 - Abstract Algebra for Scala.
- Axle ★ 51 ⧗ 9 - A Spire-based DSL for scientific cloud computing.
- BigDL ★ 1662 ⧗ 0 - BigDL is a distributed deep learning library for Apache Spark.
- Breeze ★ 2028 ⧗ 0 - Breeze is a numerical processing library for Scala.
- Chalk ★ 231 ⧗ 6 - Chalk is a natural language processing library.
- Clustering4Ever ★ 50 Scala and Spark API to benchmark and analyse clustering algorithms on any vectorization you can generate
- doddle-model - An in-memory machine learning library built on top of Breeze. It provides immutable objects and exposes its functionality through a scikit-learn-like API.
- FACTORIE ★ 486 ⧗ 7 - A toolkit for deployable probabilistic modeling, implemented as a software library in Scala.
- Figaro ★ 461 ⧗ 0 - Figaro is a probabilistic programming language that supports development of very rich probabilistic models.
- Libra ★ 142 - 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.
- LoMRF ★ 55 - An open-source implementation of Markov Logic Networks in Scala
- MGO ★ 37 ⧗ 55 - Modular multi-objective evolutionary algorithm optimization library enforcing immutability.
- MLLib - Machine Learning framework for Spark
- ND4S ★ 201 ⧗ 0 - N-Dimensional arrays and linear algebra for Scala with an API similar to Numpy. ND4S is a scala wrapper around ND4J.
- Numsca ★ 8 ⧗ 0 - Numsca is Numpy for Scala.
- OpenMOLE ★ 65 ⧗ 5 - OpenMOLE (Open MOdeL Experiment) is a workflow engine designed to leverage the computing power of distributed execution environments for naturally parallel processes.
- Optimus * 96 Optimus is a library for Linear and Quadratic mathematical optimization written in Scala programming language.
- OscaR - a Scala toolkit for solving Operations Research problems
- Persist-Units ★ 9 ⧗ 40 - Type check units of measure in Scala.
- PredictionIO ★ 10105 ⧗ 0 - machine learning server for developers and data scientists. Built on Apache Spark, HBase and Spray
- Rings ★ 3 ⧗ 0 - An efficient library for polynomial rings. Commutative algebra, polynomial GCDs, polynomial factorization and other sci things at a really high speed.
- Saddle ★ 428 ⧗ 2 - A minimalist port of Pandas to Scala
- Smile - Statistical Machine Intelligence and Learning Engine. Smile is a fast and comprehensive machine learning system.
- Spark Notebook ★ 1896 ⧗ 0 - Scalable and stable Scala and Spark focused notebook bridging the gap between JVM and Data Scientists (incl. extendable, typesafe and reactive charts).
- Spire ★ 1152 ⧗ 3 - Powerful new number types and numeric abstractions for Scala.
- Squants ★ 388 ⧗ 1 - The Scala API for Quantities, Units of Measure and Dimensional Analysis.
- SwiftLearner ★ 20 ⧗ 5 - Simply written algorithms to help study Machine Learning or write your own implementations.
- Tensorflow_scala - TensorFlow API for the Scala Programming Language
- Tyche ★ 89 ⧗ 17 - Probability distributions, stochastic & Markov processes, lattice walks, simple random sampling. A simple yet robust Scala library.
- Zeppelin - Scala and Spark Notebook (like IPython Notebook)
- BIDMach ★ 745 ⧗ 0 - CPU and GPU machine learning library, using JNI for GPU computation.
- Flink ★ 2414 ⧗ 0 - Processing framework with powerful stream- and batch-processing capabilities.
- Gearpump ★ 619 ⧗ 5 - Lightweight real-time big data streaming engine
- GridScale ★ 15 ⧗ 5 - A Scala API for computing clusters and grids.
- Kafka ★ 5035 ⧗ 0 - Kafka is a message broker project and aims to provide a unified, high-throughput, low-latency platform for handling real-time data feeds.
- Reactive-kafka ★ 753 ⧗ 0 - Reactive Streams API for Apache Kafka.
- Scalding ★ 2783 ⧗ 2 - A Scala binding for the Cascading abstraction of Hadoop MapReduce.
- Schemer - Schema registry for CSV, TSV, JSON, AVRO and Parquet schema. Supports schema inference and GraphQL API.
- Scio - A Scala API for Apache Beam and Google Cloud Dataflow - None
- Scrunch - A Scala wrapper for Apache Crunch which provides a framework for writing, testing, and running MapReduce pipelines.
- Spark - Lightning fast cluster computing — up to 100x faster than Hadoop for iterative algorithms (memory caching) and up to 10x faster than Hadoop for single-pass MapReduce jobs. Compatible with YARN-enabled Hadoop clusters, can run on Mesos and in stand-alone mode as well.
- spark-deployer ★ 69 ⧗ 29 - A sbt plugin which helps deploying Apache Spark stand-alone cluster and submitting job on cloud system like AWS EC2.
- Sparkta ★ 320 ⧗ 1 - Real Time Aggregation based on Spark Streaming.
- Sparkplug ★ 4 ⧗ 1 - Spark package to "plug" holes in data using SQL based rules
- Summingbird ★ 1841 ⧗ 1 - An implementation of the “lambda architecture” as a software abstraction — a single API for Hadoop and Storm.
- Vegas - The missing MatPlotLib for Scala + Spark
Image processing and image analysis¶
2D and 3D image processing and image analysis
- scala-phash ★ 11 ⧗ 2 - Image comparison by hash codes
- scalismo ★ 45 ⧗ 9 - Shape modelling and model-based image analysis.
- scrimage ★ 654 ⧗ 97 - Image io, resize, manipulation and thumbnails.
Sound processing and music¶
- Chromaprint.scala ★ 31 - A Scala implementation of the Chromaprint/AcoustID audio fingerprinting algorithm.
- ScalaCollider ★ 121 ⧗ 5 - Sound synthesis and signal processing client for SuperCollider.
Functional Reactive Programming¶
Event streams, signals, observables, etc.
- fs2 ★ 1323 ⧗ 340 - Compositional, streaming I/O library for Scala
- Iteratee ★ 158 - Iteratees for cats
- Monix ★ 1432 ⧗ 164 - Extensions to Scala’s standard library for multi-threading primitives and functional reactive programming. Scala.js compatible.
- Reactive Collections ★ 2 ⧗ 165 - A library that incorporates event streams and signals with specialized collections called reactive containers, and expresses concurrency using isolates and channels.
- RxScala ★ 824 ⧗ 0 - Reactive Extensions for Scala – a library for composing asynchronous and event-based programs using observable sequences
- REScala - REScala is a library for functional reactive programming on the JVM and the Web. It provides a rich API for event stream transformations and signal composition with managed consistent up-to-date state and minimal syntactic overhead.
- Reactor-Scala-Extensions - Scala extensions for Project Reactor
- scala.frp ★ 22 ⧗ 101 - Functional Reactive Programming for Scala (event streams).
- Scala.Rx ★ 898 ⧗ 4 - An experimental library for Functional Reactive Programming in Scala (reactive variables). Scala.js compatible.
- Scalaz ZIO ★ 529 - A type-safe, composable library for asynchronous and concurrent programming in Scala
- SynapseGrid ★ 109 ⧗ 1 - an FRP framework for constructing reactive real-time immutable data flow systems. It implements an original way of running and organizing event-driven systems based on Petri nets. The topology can be viewed as a .dot graph. The library is compatible with Akka and can seamlessly communicate with other actors.
Modularization and Dependency Injection¶
Modularization of applications, dependency injection, etc.
- Airframe ★ 25 ⧗ 13 - Dependency injection library tailored to Scala.
- Cableguy ★ 1 ⧗ 269 - Macro based compile time Dependency Injection library.
- DIStage ★ 75 ⧗ 0 - Staged Dependency Injection with higher-kinded polymorphism and cats/zio support.
- Grafter ★ 148 ⧗ 0 - Grafter is a library to configure and wire Scala applications.
- MacWire ★ 661 ⧗ 0 - Scala Macro to generate wiring code for class instantiation. DI container replacement.
- Scala-Guice ★ 211 ⧗ 10 - Scala extensions for Google Guice
- Scaldi ★ 252 ⧗ 1 - Lightweight Scala Dependency Injection Library.
- Sclasner ★ 9 ⧗ 130 - Scala classpath scanner.
- SubCut ★ 403 ⧗ 9 - Scala Uniquely Bound Classes Under Traits.
Libraries and frameworks for writing distributed applications.
- Akka - A toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications.
- Akka-tracing ★ 252 ⧗ 2 - A distributed tracing extension for Akka. Provides integration with Play framework, Spray and Akka HTTP.
- autobreaker ★ 6 ⧗ 93 - Automatically wrap classes that return Futures with a Circuit Breaker.
- Clump - A library for expressive and efficient service composition
- CurioDB ★ 459 ⧗ 4 - Distributed & Persistent Redis Clone built with Scala & Akka.
- Finagle - An extensible, protocol-agnostic RPC system designed for high performance and concurrency.
- Glokka ★ 46 ⧗ 148 - Library to register and lookup actors by names in an Akka cluster.
- Lagom - Framework for creating microservice-based systems.
- Reactors - Foundational framework for distributed computing that fuses functional reactive programming and traditional actors.
- Parapet - A purely functional library to build distributed and event-driven systems
- Ammonite-Ops - Safe, easy, filesystem operations in Scala as convenient as in the Bash shell.
- better-files ★ 824 ⧗ 0 - Simple, safe and intuitive Scala I/O. better-files is a dependency-free pragmatic thin Scala wrapper around Java NIO.
- Cassovary ★ 881 ⧗ 0 - A Scala library that is designed from the ground up for space efficiency, handling graphs with billions of nodes and edges.
- cats ★ 1697 ⧗ 0 - Lightweight, modular, and extensible library for functional programming.
- Chimney ★ 92 ⧗ 5 - Scala library for boilerplate-free data transformations.
- chronoscala ★ 38 ⧗ 0 - Scala wrapper for Java Date/Time API.
- Dsl.scala - A framework to create embedded Domain-Specific Languages in Scala, along with some built-in DSLs, including async/await, generators, delimited continuations, asynchronous collection comprehension, RAII, monadic !-notation for cats and scala, etc.
- Each ★ 146 ⧗ 0 - A macro library that converts native imperative syntax to Scalaz's monadic expressions.
- Eff ★ 220 ⧗ 6 - Extensible effects are an alternative to monad transformers for computing with effects in a functional way.
- enableIf.scala ★ 40 ⧗ 25 - A library that switches Scala code at compile-time, like
- Enumeratum ★ 374 ⧗ 0 - A macro to replace Scala enumerations with a sealed family of case objects. This allows additional checks for the compiler, e.g. for missing cases in a match statement. Has additinal support for Json libraries and the Play framework.
- Freasy-Monad ★ 90 ⧗ 14 - Easy way to create Free Monad for Cats and Scalaz using Scala macros with first-class Intellij support.
- Freedsl ★ 25 ⧗ 5 - A library to implement composable side effects, weaving typeclasses on a wrapping type and the free monad.
- Freestyle ★ 430 ⧗ 0 - A cohesive & pragmatic framework of FP centric Scala libraries.
- Hamsters ★ 216 ⧗ 0 - A mini Scala utility library. Compatible with functional programming beginners. Featuring validation, monad transformers, HLists, Union types.
- idid ★ 4 ⧗ 43 - A library to define common interfaces for different Id types.
- Lamma ★ 70 ⧗ 8 - A Scala date library for date and schedule generation.
- LArray ★ 225 ⧗ 25 - Large off-heap arrays (> 2GB) and mmap files.
- Log4s - Fast, Scala-friendly logging bindings on top of SLF4J. Uses macros for extreme performance.
- LogStage ★ 75 ⧗ 0 - Zero-effort structural logger for Scala with [SLF4J] integration.
- Scala-Logging ★ 707 - Convenient and performant logging library for Scala wrapping SLF4J.
- Monocle ★ 757 ⧗ 0 - An Optics/Lens library for purely functional manipulation of immutable objects.
- n-scala ★ 662 ⧗ 3 - Scala wrapper for Joda Time.
- Persist-Logging ★ 33 ⧗ 48 - Comprehensive logging library for Scala.
- Quicklens ★ 245 ⧗ 0 - modify deeply nested case class fields with an elegant API
- Rapture (repo) - a collection of libraries for common, everyday programming tasks (I/O, JSON, i18n, etc.)
- Records for Scala ★ 125 ⧗ 55 - Labeled records for Scala based on structural refinement types and macros.
- refined ★ 447 ⧗ 3 - Simple refinement types with compile- and runtime checking
- Resolvable ★ 0 ⧗ 94 - A library to optimize fetching immutable data structures from several endpoints in several formats.
- Squid ★ 88 ⧗ 9 - Type-safe metaprogramming framework with typed, hygienic quasiquotes.
- Scala Async ★ 778 ⧗ 0 - An asynchronous programming facility for Scala.
- Scala Graph - A Scala library with basic graph functionality that seamlessly fits into the Scala standard collections library.
- scala.meta - A clean-room implementation of a metaprogramming toolkit for Scala.
- Scalactic - Small library of utilities related to quality that helps keeping code clear and correct.
- Scalaz ★ 3045 ⧗ 0 - An extension to the core Scala library for functional programming.
- scribe ★ 36 ⧗ 3 - Practical logging framework that doesn't depend on any other logging framework and can be completely configured programmatically.
- Shapeless ★ 2002 ⧗ 0 - A type class and dependent type based generic programming library for Scala.
- Simulacrum ★ 484 ⧗ 2 - First class syntax support for type classes in Scala.
- Stateless Future ★ 165 ⧗ 35 - Asynchronous programming in fully featured Scala syntax.
- tinylog ★ 198 ⧗ 0 - Lightweight logging framework with native logging API for Scala.
- Twitter Util ★ 1809 ⧗ 1 - General-purpose Scala libraries, including a future implementation and other concurrency tools.
- wvlet-log ★ 43 ⧗ 13 - A library for enhancing your application logs with colors and source code locations.
Projects that don't fit into any specific category.
- Agora - Library of vote-counting algorithms for elections.
- Ammonite-REPL - An improved Scala REPL: syntax highlighting, output formatting, multi-line input, and more.
- aws4s - Non-blocking AWS SDK for Scala exposing strongly-typed APIs built on top of http4s, fs2 and cats.
- BootZooka ★ 331 ⧗ 5 - Simple project to quickly start developing a web application using AngularJS and Akka HTTP, without the need to write login, user registration etc.
- Eclair ★ 804 - ACINQ's Lightning Network implementation written in Scala. Lightning Network is a second layer protocol built on top of bitcoin to address scalability, privacy, confirmation time and many other issues.
- Fansi ★ 96 ⧗ 15 - Scala/Scala.js library for manipulating Fancy Ansi colored strings
- GoogleApiScala ★ 5 ⧗ 3 - A simple scala library offering control of Google Drive, Calendar, and the Admin SDK.
- Google4s ★ 7 ⧗ 3 - Lean, functional library for Google Cloud Services in Scala (KMS, Cloud Storage, PubSub)
- mailgun4s ★ 7 ⧗ 4 - Scala wrapper around the Mailgun API
- media4s ★ 5 ⧗ 3 - Scala command-line wrapper around ffmpeg, ffprobe, ImageMagick, and other tools relating to media.
- Miniboxing - A Scala compiler plugin that improves program performance -- see the project web site - Less boxes
- Openquant ★ 73 ⧗ 0 - A Scala open source quantitative trading platform
- Ostinato ★ 27 ⧗ 7 - A chess library that runs on the server (Scala) and on the browser (ScalaJS)
- pdf4s ★ 3 ⧗ 3 - Simplified wrapper to create PDFs in Scala.
- Play Swagger ★ 174 ⧗ 3 - Automatically create Swagger documentation for your Play REST API
- powerscala ★ 11 ⧗ 80 - Powerful framework providing many useful utilities and features on top of the Scala language.
- pprint - Pretty-printer for Scala values and types for easier reading and debugging
- PureConfig ★ 759 ⧗ 2 - A boilerplate-free Scala library for loading configuration files.
- REPLesent ★ 319 ⧗ 5 - A presentation tool built inside the Scala REPL. Runs code straight from your slides with a single keystroke.
- scala-debugger ★ 52 ⧗ 18 - Scala libraries and tooling utilizing the Java Debugger Interface.
- scala-ssh ★ 186 ⧗ 6 - Remote shell access via SSH for your Scala applications
- Scalan ★ 81 ⧗ 67 - A framework for development of domain-specific compilers in Scala
- ScalaSTM - Software Transaction Memory for Scala
- Scavenger - An experimental automated theorem prover.
- service-chassis - A scala chassis to get your applications and services bootstrapped quickly.
- settler ★ 4 ⧗ 171 - Boilerplate-free typed settings generation in Scala.
- Simple Scala Config ★ 43 ⧗ 5 - Thin, idiomatic Scala wrapper around Typesafe Config with custom
- YahooFinanceScala ★ 15 ⧗ 2 - Get stock data from Yahoo Finance using Akka http.
Scala libraries and wrappers for Android development.
- Android SDK Plugin for SBT ★ 609 ⧗ 1 - An sbt plugin that adds tasks for developing Android applications.
- Gradle Android Scala Plugin ★ 318 ⧗ 20 - A gradle plugin that allows you to use Scala with Android
- Macroid ★ 511 ⧗ 3 - A modular functional UI language for Android.
- Scaloid ★ 2065 ⧗ 0 - Less painful Android development with Scala.
Scala libraries and wrappers for HTTP clients.
- Akka HTTP ★ 306 ⧗ 1 - The Streaming-first HTTP server/module of Akka.
- Dispatch ★ 366 ⧗ 6 - Library for asynchronous HTTP interaction. It provides a Scala vocabulary for Java’s async-http-client.
- Finch.io ★ 1005 ⧗ 3 - Purely Functional REST API atop of Finagle.
- Fintrospect ★ 37 ⧗ 0 - Implement fast, type-safe HTTP webservices for Finagle.
- Http4s ★ 732 ⧗ 3 - A minimal, idiomatic Scala interface for HTTP.
- jefe ★ 2 ⧗ 105 - Manages installation, updating, downloading, launching, error reporting, proxying, multi-server management, and much more for your stand-alone and web applications.
- lolhttp ★ 64 ⧗ 10 An HTTP & HTTP/2 Server and Client library for Scala.
- RösHTTP ★ 79 ⧗ 9 - A lightweight asynchronous HTTP API built with Scala.js in mind. Supports the JVM and Node.js runtimes as well as most browsers.
- scalaj-http ★ 580 ⧗ 0 - Simple scala wrapper for HttpURLConnection (including OAuth support).
- Scalaxb ★ 235 ⧗ 18 - An XML data-binding tool for Scala that supports W3C XML Schema (xsd) and Web Services Description Language (wsdl) as the input file.
- Spray - Actor-based library for http interaction.
- sttp - The Scala HTTP client you always wanted!
- Tubesocks ★ 12 ⧗ 174 - Library supporting bi-directional communication with websocket servers.
- requests-scala ★ 326 - A Scala port of the popular Python Requests HTTP client: flexible, intuitive, and straightforward to use.
Scala libraries for interactions with the Web of Data, and other RDF tools.
- Banana-RDF ★ 207 ⧗ 26 - Scala-friendly abstractions for RDF and Linked Data technologies. Supports Jena, Sesame and native Scala.
- rdfp ★ 4 ⧗ 50 - RDF stream processing framework in Scala
- Scowl ★ 16 ⧗ 36 - Scala DSL allowing a declarative approach to composing OWL expressions and axioms using the OWL API.
Metrics and Monitoring¶
Scala libraries for gathering metrics and monitoring applications.
- Kamon - Gathering metrics from applications built with Akka, Spray and Play! with support for user metrics as well.
- Metrics-Scala ★ 335 - Scala API for Dropwizard's Metrics library.
Scala libraries for creating parsers.
- atto ★ 148 ⧗ 1 - Pure functional incremental text parsing library for Scala, based on Attoparsec.
- CLIST ★ 43 ⧗ 24 - Command Line Interface Scala Toolkit
- decline ★ 101 - composable command-line parser for Scala, built on Cats
- Fast Parse ★ 467 ⧗ 1 - Fast to write, Fast running Parsers in Scala
- Parboiled2 ★ 502 ⧗ 7 - A Fast Parser Generator for Scala 2.10.3+.
- Scala Parser Combinators ★ 221 ⧗ 0 - Scala Standard Parser Combinator Library.
- Scopt ★ 678 ⧗ 0 - Simple scala command line options parsing.
Sbt plugins to make your life easier.
- better-monadic-for ★ 371 ⧗ 8 - A Scala compiler plugin to give patterns and for-comprehensions the love they deserve
- coursier ★ 847 ⧗ 0 - A Scala library to fetch dependencies from Maven / Ivy repositories
- mdoc ★ 94 ⧗ 0 - Typechecked markdown documentation for Scala https://scalameta.org/mdoc/
- sbt-api-mappings ★ 38 ⧗ 67 - A Sbt plugin that resolves external API links to common Scala libraries.
- sbt-assembly ★ 1522 - Deploy fat JARs. Restart processes.
- sbt-buildinfo ★ 274 ⧗ 1 - Generates Scala source from build definition.
- sbt-classfinder ★ 3 ⧗ 39 - Retrieves runtime information about the classes and traits in a project.
- sbt-ci-release ★ 102 ⧗ 0 - sbt plugin to automate Sonatype releases from Travis CI
- sbt-dependency-check ★ 108 ⧗ 0 - SBT Plugin for OWASP DependencyCheck. Monitor your dependencies and report if there are any publicly known vulnerabilities (e.g. CVEs).
- sbt-dependency-graph ★ 731 ⧗ 1 - Create a dependency graph for your project.
- sbt-docker ★ 422 ⧗ 3 - Create Docker images directly from sbt
- sbt-doctest ★ 148 - Plugin for sbt that generates tests from examples in ScalaDoc.
- sbt-ensime ★ 197 ⧗ 11 - Generates .ensime config files for SBT projects http://ensime.org/build_tools/sbt
- sbt-ghpages ★ 87 ⧗ 118 - git, site and ghpages support for sbt projects.
- sbt-groll ★ 87 ⧗ 10 - sbt plugin to roll the Git history.
- sbt-haxe ★ 9 ⧗ 274 - A Sbt plugin to compile Haxe sources.
- sbt-header ★ 157 ⧗ 67 - an sbt plugin for creating file headers, e.g. copyright headers
- sbt-ide-settings ★ 32 ⧗ 27 - SBT plugin for tweaking various IDE settings
- sbt-jmh ★ 627 ⧗ 66 - "Trust no one, bench everything." - sbt plugin for JMH (Java Microbenchmark Harness)
- sbt-microsites ★ 245 ⧗ 0 - An sbt plugin to create awesome microsites for your project https://47deg.github.io/sbt-microsites/
- sbt-mima-plugin ★ 247 ⧗ 0 - A tool for catching binary incompatibility in Scala
- sbt-native-packager ★ 811 ⧗ 3 - Bundle up Scala software for native packaging systems, like deb, rpm, homebrew, msi..
- sbt-pack ★ 284 ⧗ 7 - A sbt plugin for creating distributable Scala packages.
- sbt-pantarhei ★ 3 ⧗ 0 - SBT plugin to generate release notes from the pull requests and git commits in GitHub.
- sbt-pgp ★ 101 ⧗ 4 - PGP plugin for sbt
- sbt-revolver ★ 519 ⧗ 0 - Fork & Stop processes from sbt.
- sbt-release ★ 543 ⧗ 70 - A release plugin for sbt
- sbt-robovm ★ 107 ⧗ 17 - An sbt plugin for iOS development in Scala
- sbt-scalafmt ★ 37 ⧗ 6 - sbt plugin for Scalafmt https://scalameta.org/scalafmt/
- sbt-scala-js-map ★ 12 ⧗ 2 - A sbt plugin that configures source mapping for Scala.js projects hosted on Github
- sbt-scoverage ★ 470 ⧗ 68 - A plugin for SBT that integrates the scoverage code coverage library.
- sbt-site ★ 159 ⧗ 122 - Site generation for sbt https://www.scala-sbt.org/sbt-site/
- sbt-sonatype ★ 221 ⧗ 4 - A sbt plugin for publishing Scala/Java projects to the Maven central.
- sbt-sublime ★ 145 ⧗ 38 - Create Sublime Text projects with library dependencies sources
- sbt-unidoc ★ 104 ⧗ 94 - sbt plugin to create a unified API document across projects
- sbt-updates ★ 316 ⧗ 3 - Shows sbt project's dependency updates.
- sbt-versions ★ 14 ⧗ 167 - Plugin that checks for updated versions of your project's dependencies.
- sbt-view ★ 7 ⧗ 18 - View ScalaDoc/JavaDoc in browser window.
- sbteclipse ★ 632 ⧗ 0 - Create Eclipse project definitions from sbt builds.
- scala-clippy ★ 211 ⧗ 5 - Good advice and coloring for Scala compiler errors
- ScalaKata2 ★ 79 ⧗ 0 - Scala playground & Documentation tool.
- sbt-hepek ★ 5 ⧗ 0 - Make static websites in Scala code (render
- splain ★ 234 ⧗ 0 - Better implicit errors for Scala.
- tut ★ 364 ⧗ 2 - Tool for writing documentation with typechecked examples.
- xsbt-web-plugin ★ 334 ⧗ 1 - Build enterprise J2EE Web applications in Scala.
XML / HTML¶
XML and HTML generation and processing
- xs4s ★ 29 ⧗ 47 - XML Streaming for Scala for processing large (gigabytes and over) XML files.
- Laika ★ 161 - Text Markup Transformer for sbt and Scala applications, transforming Markdown and reStructuredText to HTML and PDF.
Nice books, blogs and other resources to learn Scala
Community Members' Blogs¶
- Functional Works / Learn - Quality resources maintained by functional works
- Scala Times - Weekly newsletter about scala
- A Tour of Scala - Bite-sized introductions to some of the core language concepts.
- CA Art - A small project aimed at learning Scala on intermediate level by experimenting with Cellular Automata
- Demos and Examples in Scala (Chinese) ★ 923 ⧗ 2 - repo of sample Scala library usage, written in Chinese
- Deploying Scala libraries to Sonatype for dummies ★ 23 ⧗ 25 - None
- Resources by Dr. Mark Lewis >> Website | Youtube Playlists
- Exercism - Scala Exercises - Community-driven Scala exercises.
- Essential Scala - None
- Functional Programming in Scala - Coursera Specialization (5 courses) created by Martin Odersky et al. at the EPFL (Ecole polytechnique fédérale de Lausanne).
- Functional Programming for Mortals - None
- Get Programming with Scala - Tutorial-driven introduction to Scala
- Introduction to programming with dependent types in Scala - Video Course by Dmytro Mitin
- Learn-by-doing functional programming course on Scala - Covers type classes, functors, applicatives, monads, monad transformers, free monad
- Programming Community Curated Resources for Learning Scala
- Reactive Programming with Scala and Akka - Use the concepts of reactive programming to build distributed systems running on multiple nodes
- Scala Collections Cookbook - Scala collections introduction. written in Chinese.
- Scala Exercises - Brings the popular Scala Koans to the web. Offering hundreds of solvable exercises organized into 42 categories covering the basics of the Scala language.
- Scala With Cats - Learn system architecture and design using the techniques of modern functional programming with Cats
- Scala in Depth - None
- Scala school - Scala school started as a series of lectures at Twitter to prepare experienced engineers to be productive Scala programmers.
- Scalera Blog - Blog about Scala language and its environment (howto's, good practices, tips,...). Weekly posts written in both spanish and english
- Scala for the Impatient 2nd Edition - Covers most Scala features with short and easy to understand explainations.
- The Type Astronaut's Guide to Shapeless - None
- scala-js-fiddle (repo) - Browser-based Scala.js playground
- akka-quartz-scheduler ★ 365 - Quartz Extension and utilities for cron-style scheduling in Akka.
Web templating engines.
- Beard ★ 67 ⧗ 3 - lightweight logicless templating engine inspired by Mustache
- Scalatags ★ 492 ⧗ 3 - Write html as scala code and have your IDE syntax check it.
- Scalate ★ 517 - Scala based template engine which supports HAML, Mustache and JSP, Erb and Velocity style syntaxes
- Twirl ★ 324 ⧗ 3 - The Play Scala Template Compiler
- Codacy - Automated Code Reviews for Scala
- dregrex - Regular expression engine using deterministic finite automata. It supports some Perl-style features and yet retains linear matching time.
- Fastring ★ 97 ⧗ 2 - Extremely fast string formatting
- fast-string-interpolator ★ 24 ⧗ 0 - Scala macro that generates ultra-fast string interpolators
- Gitbucket ★ 6296 ⧗ 0 - The easily installable GitHub clone powered by Scala
- Giter8 command line tool to generate files and directories from templates published on Github
- Metals ★ 953 ⧗ 206 - Scala language server with rich IDE features
- Mill - A better Scala build tool
- pos ★ 13 - Print debug tool, successor of scala-trace-debug
- Scalafix - Refactoring and linting tool
- sbt (repo) - The interactive build tool for Scala
- Scala @LibHunt - The go-to Scala Toolbox.
- scala-trace-debug ★ 111 ⧗ 14 - Multithreaded print debug tool
- Scalariform ★ 116 ⧗ 47 - Scala source code formatter
- Scalastyle ★ 463 ⧗ 1 - Scala style checker.
- Scalatex ★ 236 ⧗ 12 - Programmable, Typesafe Document Generation
- Scapegoat ★ 230 ⧗ 6 - Scala compiler plugin for static code analysis
- Scaps (repo) - A search engine for Scala libraries
- Scoverage - Scala Code Coverage tool
- Wartremover ★ 662 ⧗ 1 - Wartremover a flexible Scala code linting tool
Libraries to aid with geospatial calculations and artifacts.
- Geotrellis ★ 553 ⧗ 0 - Scalable raster toolkit for GIS processing
- osm4scala ★ 8 ⧗ 40 - OpenStreetMap PBF2 file parser
- rtree2d ★ 27 ⧗ 1 - RTree2D is a 2D immutable R-tree with STR (Sort-Tile-Recursive) packing for ultra-fast nearest and intersection queries on plane and spherical surfaces
- sfcurve ★ 20 ⧗ 1 - Space filling curves in Scala for geospatial indexing and query
DevOps related tools and libraries.
- Skuber ★ 85 ⧗ 0 - Kubernetes client in Scala
Where to discover new Scala libraries.
- CoRecursive Interviews - In-depth Interviews with software developers, often on the subject of scala libraries and functional programming.
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.