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.
- Learning Scala
- Projects
- Android
- Artificial Intelligence
- Authentication
- Authorization
- Big Data
- Cryptography
- CSV
- Data Binding and Validation
- Database
- DevOps
- Distributed Systems
- Extensions
- Functional Reactive Programming
- Geospatial
- Graphical User Interfaces
- HTTP
- i18n
- Image processing and image analysis
- JavaScript
- JSON
- Markdown
- Metrics and Monitoring
- Misc
- Modularization and Dependency Injection
- Parsing
- Reactive Web Frameworks
- Sbt plugins
- Science and Data Analysis
- Scheduling
- Semantic Web
- Serialization
- Templating
- Testing
- Tools
- Web Frameworks
- XML / HTML
- YAML
- Resources
- Contributing
- 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
- 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.
- 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.
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.
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
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
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.
- 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.
- µPickle - A lightweight serialization library for Scala that works in ScalaJS, allowing transfer of structured data between the JVM and JavaScript.
- 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.
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
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.
- Chromaprint.scala ★ 31 - A Scala implementation of the Chromaprint/AcoustID audio fingerprinting algorithm.
- ScalaCollider ★ 121 ⧗ 5 - Sound synthesis and signal processing client for SuperCollider.
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.
- Vert.x - A polyglot reactive application platform for the JVM which aims to be an alternative to node.js. Its concurrency model resembles actors. It supports Scala, Clojure, Java, Javascript, Ruby, Groovy and Python.
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.
Scala extensions.
- 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
#if
in C/C++. - 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.
- 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 ★ 469 - 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
Reader[T]
suppport. - 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.
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
- sbt-api-mappings ★ 38 ⧗ 67 - A Sbt plugin that resolves external API links to common Scala libraries.
- 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-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-groll ★ 87 ⧗ 10 - sbt plugin to roll the Git history.
- sbt-haxe ★ 9 ⧗ 274 - A Sbt plugin to compile Haxe sources.
- sbt-ide-settings ★ 32 ⧗ 27 - SBT plugin for tweaking various IDE settings
- 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-revolver ★ 519 ⧗ 0 - Fork & Stop processes from sbt.
- sbt-robovm ★ 107 ⧗ 17 - An sbt plugin for iOS development in Scala
- sbt-scala-js-map ★ 12 ⧗ 2 - A sbt plugin that configures source mapping for Scala.js projects hosted on Github
- sbt-sublime ★ 145 ⧗ 38 - Create Sublime Text projects with library dependencies sources
- 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
object
to file!). - 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 and HTML generation and processing
- scala-scraper ★ 316 ⧗ 1 - A library for scraping content from HTML pages.
- 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
- http://aperiodic.net/phil/scala/s-99/
- http://appliedscala.com/
- http://blog.higher-order.com/
- http://blog.tmorris.net/tags/Scala/index.html
- http://danielwestheide.com/scala/neophytes.html
- http://debasishg.blogspot.com/
- http://degoes.net/articles/
- http://eed3si9n.com/category/tags/scala
- http://ktoso.github.io/scala-types-of-types/
- http://scalacookbook.com/
- http://scalaprof.blogspot.com/
- http://torre.me.uk/docs/scala/
- http://www.lihaoyi.com/
- http://www.rabbitonweb.com/
- http://www.warski.org/blog/
- https://alvinalexander.com/fpbook
- https://blog.bruchez.name/search/label/scala
- https://github.com/lemastero/scala_typeclassopedia
- https://janzhou.org/scala/
- https://kubuszok.com/tags/#scala
- https://manuel.bernhardt.io/blog/
- https://naildrivin5.com/scalatour/
- https://pchiusano.github.io/
- https://www.beyondthelines.net/
- Functional Works / Learn - Quality resources maintained by functional works
- http://allaboutscala.com/
- http://enear.github.io/
- https://blog.knoldus.com/tag/scala/
- https://blog.scalac.io/tags/Scala/
- https://blog.softwaremill.com/tagged/scala
- https://medium.com/disney-streaming/tagged/thisweekinscala
- https://www.codacy.com/blog/
- 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
JavaScript generation and interop libraries.
- scala-js-fiddle (repo) - Browser-based Scala.js playground
- Scala.js (repo) - Scala to JavaScript compiler
- 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
- 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
- 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.