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.
Projects with over 500 stargazers are in bold.
- Awesome Scala
- Database
- Graphical User Interfaces
- Web Frameworks
- Reactive Web Frameworks
- i18n
- Authentication
- Authorization
- Cryptography
- Testing
- JSON
- YAML
- Serialization
- Science and Data Analysis
- Big Data
- Image processing and image analysis
- Functional Reactive Programming
- Modularization and Dependency Injection
- Distributed Systems
- Extensions
- Misc
- Android
- HTTP
- Semantic Web
- Metrics and Monitoring
- Parsing
- Sbt plugins
- XML / HTML
- Tools
- Learning Scala
- JavaScript
- Contributing
Database access libraries in Scala.
- Activate ★ 278 ⧗ 4 - Pluggable object persistence in Scala.
- Casbah (repo) - Officially supported Scala driver for MongoDB
- doobie ★ 327 ⧗ 1 - Pure functional JDBC layer for Scala.
- Elastic4s ★ 481 ⧗ 0 - A scala DSL / reactive client for Elasticsearch
- MapperDao ★ 7 ⧗ 88 - An ORM library for oracle, mysql, mssql, and postgresql
- Memcontinuationed ★ 46 ⧗ 13 - Memcached client for Scala.
- Morpheus ★ 6 ⧗ 39 - Reactive type safe Scala Driver for MySQL/Postgres.
- Phantom ★ 335 ⧗ 0 - Reactive type safe Scala driver for Apache Cassandra.
- PostgreSQL and MySQL async ★ 709 ⧗ 1 - Async database drivers to talk to PostgreSQL and MySQL in Scala.
- Quill - 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 ★ 615 ⧗ 1 - Reactive Scala Driver for MongoDB.
- ReactiveNeo ★ 41 ⧗ 6 - Reactive type-safe Scala driver for Neo4J.
- rediscala ★ 465 ⧗ 1 - Non-blocking, Reactive Redis driver for Scala (with Sentinel support)
- scala-redis ★ 581 ⧗ 0 - A Scala library for connecting to a redis server, with clustering support
- scredis ★ 135 ⧗ 0 - Non-blocking Redis client built on top of Akka IO (used by Livestream)
- Relate ★ 82 ⧗ 15 - Lightweight, blazing-fast database access layer for Scala that abstracts the idiosyncricies of the JDBC while keeping complete control over the SQL.
- Salat ★ 457 ⧗ 18 - ORM for MongoDB. A related Play-plugin is also available.
- Scala ActiveRecord ★ 244 ⧗ 2 - ORM library for scala, inspired by ActiveRecord of Ruby on Rails.
- ScalikeJDBC ★ 529 ⧗ 1 - A tidy SQL-based DB access library for Scala developers.
- Slick ★ 1375 ⧗ 0 - Modern database query and access library for Scala.
- Sorm ★ 190 ⧗ 14 - A functional boilerplate-free Scala ORM.
- Squeryl ★ 452 ⧗ 4 - A Scala DSL for talking with databases with minimum verbosity and maximum type safety.
- Tepkin ★ 79 ⧗ 22 - Reactive MongoDB Driver for Scala built on top of Akka IO and Akka Streams.
- Op-Rabbit - 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.
- Chaos ★ 170 ⧗ 1 - A lightweight framework for writing REST services in Scala.
- Colossus - lightweight framework for building high-performance applications in Scala that require non-blocking network I/O.
- Finatra ★ 999 ⧗ 1 - A sinatra-inspired web framework for scala, running on top of Finagle.
- Lift ★ 946 ⧗ 0 - Secure and powerful full stack web framework (discussion).
- peregine ★ 5 ⧗ 5 - A simple and async lightweight Scala web framework.
- Play ★ 7084 ⧗ 0 - Makes it easy to build scalable, fast and real-time web applications with Java & Scala.
- Reactive ★ 191 ⧗ 30 - FRP and web abstractions, which can be plugged into any web framework (currently only has bindings for Lift).
- Scalatra ★ 1799 ⧗ 0 - Tiny Scala high-performance, async web framework, inspired by Sinatra.
- Skinny Framework ★ 487 ⧗ 1 - A full-stack web app framework upon Scalatra for rapid Development in Scala.
- Socko - An embedded Scala web server powered by Netty networking and Akka processing.
- Spray ★ 2138 ⧗ 0 - A suite of scala libraries for building and consuming RESTful web services on top of Akka.
- Unfiltered ★ 613 ⧗ 0 - 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.
Scala libraries for Reactive Web development
- Binding.scala - 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.
- Widok - Reactive web framework for the JVM and Scala.js
Scala libraries for i18n.
- scala-xgettext ★ 14 ⧗ 27 - A compiler plugin that acts like GNU xgettext command to extract i18n strings in Scala source code files to Gettext .po file.
- Scaposer ★ 25 ⧗ 42 - GNU Gettext .po file loader for Scala.
Libraries for implementing authentications schemes.
- play-pac4j ★ 182 ⧗ 9 - Security library managing authentication (CAS, OAuth, OpenID, SAML, LDAP, SQL, JWT...), authorizations and logout for Play 2.x in Java and Scala.
- play-silhouette ★ 390 ⧗ 2 - Authentication library for Play Framework applications that supports several authentication methods, including OAuth1, OAuth2, OpenID, Credentials or custom authentication schemes.
- play2-auth ★ 525 ⧗ 4 - Play2.x Authentication and Authorization module.
- scala-oauth2-provider ★ 268 ⧗ 1 - OAuth 2.0 server-side implementation written in Scala.
- SecureSocial ★ 1142 ⧗ 2 - A module that provides OAuth, OAuth2 and OpenID authentication for Play Framework applications.
- akka-http-session ★ 98 ⧗ 0 - Web&mobile client-side sessions for akka-http based applications, with optional JWT support
Libraries for implementing authorization strategies.
- deadbolt-2 ★ 370 ⧗ 6 - 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 - All-purpose cryptographic framework.
Libraries for code testing.
- Gatling - Async Scala-Akka-Netty based Stress Tool.
- ScalaCheck ★ 886 ⧗ 0 - Property-based testing for Scala.
- ScalaMeter - Performance & memory footprint measuring, regression testing.
- ScalaMock - Scala native mocking framework
- scalaprops ★ 104 ⧗ 4 - Another property based testing library for Scala
- ScalaTest ★ 315 ⧗ 0 - A testing tool for Scala and Java developers.
- Scalive ★ 123 ⧗ 6 - Connect a Scala REPL to running JVM processes without any prior setup; this library is used for inspecting systems in production mode.
- Specs2 ★ 480 ⧗ 3 - Software Specifications for Scala.
- µTest ★ 128 ⧗ 0 - A tiny, portable testing library for Scala.
Libraries for work with json.
- argonaut - Purely Functional JSON in Scala.
- circe ★ 218 ⧗ 0 - JSON library based on Argonaut, depends on Cats
- jackson-module-scala ★ 235 ⧗ 3 - Add-on module for Jackson to support Scala-specific datatypes.
- jawn ★ 172 ⧗ 7 - Fast json parser (According to them, competetive with java gson/jackson speed).
- json4s ★ 574 ⧗ 0 - Project aims to provide a single AST to be used by other scala json libraries.
- persist-json - Fast json parser.
- play-json - Flexible and powerful JSON manipulation, validation and serialization, with no reflection at runtime.
- scalajack ★ 65 ⧗ 27 - Fast 'n easy JSON serialization with optional MongoDB support. Uses Jackson under the hood.
- sonofjson ★ 17 ⧗ 8 - A Scala library for dealing with JSON in a way that makes it almost feel native.
- spray-json ★ 446 ⧗ 3 - Lightweight, clean and efficient JSON implementation in Scala.
Libraries for work with YAML.
- MoultingYAML ★ 6 ⧗ 29 - Type-class based YAML serialization and deserialization on top of SnakeYAML.
Libraries for serializing and deserializing data for storage or transport.
- Chill ★ 306 ⧗ 0 - Extensions for the Kryo serialization library to ease configuration in systems like Hadoop and Storm.
- Pickling ★ 694 ⧗ 0 - Fast, customizable, boilerplate-free pickling support.
- ScalaBuff ★ 185 ⧗ 10 - a Scala Protocol Buffers (protobuf) compiler
- ScalaPB - A Protocol Buffer generator for Scala.
- scodec ★ 343 ⧗ 0 - A combinator library for working with binary data.
- Scrooge - An Apache Thrift code generator for Scala.
- validation ★ 114 ⧗ 0 - Advanced validation & serialization for JSON, HTML form data, etc, with no reflection at runtime.
- µPickle - A lightweight serialization library for Scala that works in ScalaJS, allowing transfer of structured data between the JVM and JavaScript.
Libraries for scientific computing, data analysis and numerical processing.
- Algebird ★ 1083 ⧗ 1 - Abstract Algebra for Scala.
- Axle - Spire-based DSL for scientific cloud computing.
- Breeze ★ 1268 ⧗ 0 - Breeze is a numerical processing library for Scala.
- Chalk ★ 181 ⧗ 0 - Chalk is a natural language processing library.
- FACTORIE ★ 357 ⧗ 3 - A toolkit for deployable probabilistic modeling, implemented as a software library in Scala.
- Figaro ★ 236 ⧗ 4 - Figaro is a probabilistic programming language that supports development of very rich probabilistic models.
- MGO ★ 9 ⧗ 211 - Modular multi-objective evolutionary algorithm optimization library enforcing immutability.
- MLLib - Machine Learning framework for Spark
- OpenMOLE ★ 10 ⧗ 14 - OpenMOLE (Open MOdeL Experiment) is a workflow engine designed to leverage the computing power of distributed execution environments for naturally parallel processes.
- OscaR - a Scala toolkit for solving Operations Research problems
- PredictionIO ★ 8054 ⧗ 0 - machine learning server for developers and data scientists. Built on Apache Spark, HBase and Spray
- Saddle ★ 349 ⧗ 0 - A minimalist port of Pandas to Scala
- Spire ★ 832 ⧗ 1 - Powerful new number types and numeric abstractions for Scala.
- Squants ★ 223 ⧗ 0 - The Scala API for Quantities, Units of Measure and Dimensional Analysis.
- Persist-Units - Type check units of measure in Scala.
- Zeppelin - Scala and Spark Notebook (like IPython Notebook)
- BIDMach ★ 458 ⧗ 0 - CPU and GPU machine learning library, using JNI for GPU computation.
- Gearpump ★ 354 ⧗ 1 - Lightweight real-time big data streaming engine
- GridScale ★ 8 ⧗ 91 - A Scala API for computing clusters and grids.
- Scalding ★ 2336 ⧗ 0 - A Scala binding for the Cascading abstraction of Hadoop MapReduce.
- Scoobi ★ 475 ⧗ 2 - Write type-safe Hadoop programs in idiomatic Scala way
- Scoozie ★ 54 ⧗ 14 - Scala DSL on top of Oozie XML
- Scrunch - A Scala wrapper for Apache Crunch which provides a framework for writing, testing, and running MapReduce pipelines.
- Shadoop ★ 8 ⧗ 79 - A Scala DSL for Hadoop MapReduce.
- 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.
- Sparkta ★ 137 ⧗ 1 - Real Time Aggregation based on Spark Streaming.
- Summingbird ★ 1600 ⧗ 1 - An implementation of the “lambda architecture” as a software abstraction — a single API for Hadoop and Storm.
2D and 3D image processing and image analysis
- scalismo ★ 15 ⧗ 21 - Shape modelling and model-based image analysis.
- scrimage ★ 303 ⧗ 21 - Image io, resize, manipulation and thumbnails.
Event streams, signals, observables, etc.
- Monix ★ 262 ⧗ 9 - Extensions to Scala’s standard library for multi-threading primitives and functional reactive programming. Scala.js compatible.
- Reactive Collections ★ 0 ⧗ 6 - A library that incorporates event streams and signals with specialized collections called reactive containers, and expresses concurrency using isolates and channels.
- RxScala ★ 358 ⧗ 0 - Reactive Extensions for Scala – a library for composing asynchronous and event-based programs using observable sequences
- scala.frp ★ 18 ⧗ 100 - Functional Reactive Programming for Scala (event streams).
- Scala.Rx ★ 567 ⧗ 1 - An experimental library for Functional Reactive Programming in Scala (reactive variables). Scala.js compatible.
- SynapseGrid ★ 79 ⧗ 2 - 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.
- Vertx.io - 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.
- Domino ★ 1 ⧗ 7 - Write elegant OSGi bundle activators in Scala.
- MacWire ★ 394 ⧗ 1 - Scala Macro to generate wiring code for class instantiation. DI container replacement.
- Scala-Guice ★ 123 ⧗ 0 - Scala extensions for Google Guice
- Scaldi ★ 187 ⧗ 3 - Lightweight Scala Dependency Injection Library.
- Sclasner ★ 8 ⧗ 24 - Scala classpath scanner.
- SubCut ★ 384 ⧗ 1 - 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.
- Clump - A library for expressive and efficient service composition
- CurioDB ★ 365 ⧗ 0 - Distributed & Persistent Redis Clone built with Scala & Akka.
- Finagle - An extensible, protocol-agnostic RPC system designed for high performance and concurrency.
- Glokka ★ 41 ⧗ 8 - Library to register and lookup actors by names in an Akka cluster.
Scala extensions.
- better-files ★ 349 ⧗ 0 - Simple, safe and intuitive Scala I/O. better-files is a dependency-free pragmatic thin Scala wrapper around Java NIO.
- Ammonite-Ops - Safe, easy, filesystem operations in Scala as convenient as in the Bash shell.
- Cassovary ★ 786 ⧗ 3 - A Scala library that is designed from the ground up for space efficiency, handling graphs with billions of nodes and edges.
- cats ★ 717 ⧗ 0 - Lightweight, modular, and extensible library for functional programming.
- Each ★ 51 ⧗ 1 - A macro library that converts native imperative syntax to Scalaz's monadic expressions.
- Lamma ★ 47 ⧗ 2 - A Scala date library for date and schedule generation.
- Log4s - Fast, Scala-friendly logging bindings on top of SLF4J. Uses macros for extreme performance.
- Monocle ★ 467 ⧗ 0 - An Optics/Lens library for purely functional manipulation of immutable objects.
- Persist-Logging - Comprehensive logging library for Scala.
- Rapture (repo) - a collection of libraries for common, everyday programming tasks (I/O, JSON, i18n, etc.)
- refined ★ 169 ⧗ 0 - Simple refinement types with compile- and runtime checking
- Resolvable ★ 26 ⧗ 1 - A library to optimize fetching immutable data structures from several endpoints in several formats.
- Scala Async ★ 580 ⧗ 0 - An asynchronous programming facility for Scala.
- Scala Blitz - A library to speed up Scala collection operations by removing runtime overheads during compilation, and a custom data-parallel operation runtime.
- Scala Graph - A Scala library with basic graph functionality that seamlessly fits into the Scala standard collections library.
- Scalactic - Small library of utilities related to quality that helps keeping code clear and correct.
- Scalaz ★ 2217 ⧗ 0 - An extension to the core Scala library for functional programming.
- Shapeless ★ 1283 ⧗ 0 - A type class and dependent type based generic programming library for Scala.
- Stateless Future ★ 117 ⧗ 0 - Asynchronous programming in fully featured Scala syntax.
- Twitter Util ★ 1358 ⧗ 0 - General-purpose Scala libraries, including a future implementation and other concurrency tools.
- Quicklens ★ 137 ⧗ 2 - modify deeply nested case class fields with an elegant API
Projects that don't fit into any specific category.
- Ammonite-REPL - An improved Scala REPL: syntax highlighting, output formatting, multi-line input, and more.
- REPLesent ★ 177 ⧗ 0 - A presentation tool built inside the Scala REPL. Runs code straight from your slides with a single keystroke.
- scala-ssh ★ 145 ⧗ 0 - Remote shell access via SSH for your Scala applications
- Scalan ★ 43 ⧗ 2 - A framework for development of domain-specific compilers in Scala
- ScalaSTM - Software Transaction Memory for Scala
- Miniboxing ★ 73 ⧗ 0- A Scala compiler plugin that improves program performance -- see the project web site.
Scala libraries and wrappers for Android development.
- Android SDK Plugin for SBT ★ 398 ⧗ 1 - An sbt plugin that adds tasks for developing Android applications.
- Gradle Android Scala Plugin ★ 236 ⧗ 2 - A gradle plugin that allows you to use Scala with Android
- Macroid ★ 332 ⧗ 1 - A modular functional UI language for Android.
- Scaloid ★ 1819 ⧗ 1 - Less painful Android development with Scala.
Scala libraries and wrappers for HTTP clients.
- Dispatch ★ 311 ⧗ 8 - Library for asynchronous HTTP interaction. It provides a Scala vocabulary for Java’s async-http-client.
- Finch.io ★ 475 ⧗ 0 - Purely Functional REST API atop of Finagle.
- Http4s ★ 342 ⧗ 0 - A minimal, idiomatic Scala interface for HTTP.
- Netcaty ★ 10 ⧗ 31 - Simple net test client/server for Netty and Scala lovers.
- Newman ★ 226 ⧗ 13 - A REST DSL that tries to take the best from Dispatch, Finagle and Apache HttpClient. See here for rationale.
- scalaj-http ★ 323 ⧗ 5 - Simple scala wrapper for HttpURLConnection (including OAuth support).
- Scalaxb ★ 184 ⧗ 1 - 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.
- Tubesocks ★ 7 ⧗ 3 - Library supporting bi-directional communication with websocket servers.
Scala libraries for interactions with the Web of Data, and other RDF tools.
- Banana-RDF ★ 168 ⧗ 16 - Scala-friendly abstractions for RDF and Linked Data technologies. Supports Jena, Sesame and native Scala.
- rdfp ★ 1 ⧗ 87 - RDF stream processing framework in Scala
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.
Scala libraries for creating parsers.
- atto ★ 97 ⧗ 15 - Pure functional incremental text parsing library for Scala, based on Attoparsec.
- Fast Parse ★ 268 ⧗ 0 - Fast to write, Fast running Parsers in Scala
- Parboiled2 ★ 395 ⧗ 0 - A Fast Parser Generator for Scala 2.10.3+.
- Scala Parser Combinators ★ 102 ⧗ 0 - Scala Standard Parser Combinator Library.
Sbt plugins to make your life easier.
- pttrt ★ 1 ⧗ 187 - A sbt plugin, designed to pass data from compile-time to run-time.
- sbt-api-mappings ★ 25 ⧗ 24 - A Sbt plugin that resolves external API links to common Scala libraries.
- sbt-buildinfo ★ 172 ⧗ 0 - Generates Scala source from build definition.
- sbt-classfinder ★ 0 ⧗ 331 - Retrieves runtime information about the classes and traits in a project.
- sbt-cppp ★ 1 ⧗ 112 - A sbt plugin to support Protocol Buffers, especially in multi-project builds.
- sbt-dependency-graph ★ 417 ⧗ 0 - Create a dependency graph for your project.
- sbt-haxe ★ 6 ⧗ 40 - A Sbt plugin to compile Haxe sources.
- sbt-ide-settings ★ 17 ⧗ 86 - SBT plugin for tweaking various IDE settings
- sbt-native-packager ★ 500 ⧗ 0 - Bundle up Scala software for native packaging systems, like deb, rpm, homebrew, msi..
- sbt-pack ★ 195 ⧗ 6 - A sbt plugin for creating distributable Scala packages.
- sbt-revolver ★ 386 ⧗ 0 - Fork & Stop processes from sbt.
- sbt-robovm ★ 100 ⧗ 0 - An sbt plugin for iOS development in Scala
- sbt-sublime ★ 122 ⧗ 15 - Create Sublime Text projects with library dependencies sources
- sbt-updates ★ 217 ⧗ 0 - Shows sbt project's dependency updates.
- sbt-view - View ScalaDoc/JavaDoc in browser window.
- sbt-versions ★ 8 ⧗ 113 - Plugin that checks for updated versions of your project's dependencies.
- sbteclipse ★ 514 ⧗ 1 - Create Eclipse project definitions from sbt builds.
- ScalaKata2 ★ 11 ⧗ 0 - Scala playground & Documentation tool.
- tut ★ 152 ⧗ 3 - Tool for writing documentation with typechecked examples.
- xsbt-web-plugin ★ 299 ⧗ 2 - Build enterprise J2EE Web applications in Scala.
XML and HTML generation and processing
- scala-scraper ★ 78 ⧗ 0 - A library for scraping content from HTML pages.
- Scalatags ★ 347 ⧗ 5 - Write html as scala code and have your ide syntax check it.
Nice books, blogs and other resources to learn Scala
- 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 in Depth - None
- The Neophyte's Guide to Scala - None
- Demos and Examples in Scala (Chinese) - repo of sample Scala library usage, written in Chinese
- Scala school - Scala school started as a series of lectures at Twitter to prepare experienced engineers to be productive Scala programmers.
JavaScript generation and interop libraries.
- js-scala ★ 149 ⧗ 16 - JavaScript as an embedded DSL in Scala
- scala-js-fiddle (repo) - Browser-based Scala.js playground
- Scala.js (repo) - Scala to JavaScript compiler
- Abide ★ 197 ⧗ 0 - Library for quick scala code checking and validation
- Codacy - Automated Code Reviews for Scala
- Gitbucket ★ 4868 ⧗ 0 - The easily installable GitHub clone powered by Scala
- sbt (repo) - The interactive build tool for Scala
- Scalariform ★ 108 ⧗ 8 - Scala source code formatter
- Scalastyle ★ 325 ⧗ 0 - Scala style checker.
- Scalatex ★ 166 ⧗ 0 - Programmable, Typesafe Document Generation
- Scapegoat ★ 109 ⧗ 0 - Scala compiler plugin for static code analysis
- Scaps (repo) - A search engine for Scala libraries
- Scoverage - Scala Code Coverage tool
- Wartremover ★ 403 ⧗ 0 - Wartremover a flexible Scala code linting tool
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.