awesome-scala
A community driven list of useful Scala libraries, frameworks and software.
https://github.com/eric-erki/awesome-scala
Last synced: 20 days ago
JSON representation
Android
- Scaloid ★ 2065 ⧗ 0 - Less painful Android development with Scala.
- 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
- Android SDK Plugin for SBT ★ 609 ⧗ 1 - An sbt plugin that adds tasks for developing Android applications.
- Macroid ★ 511 ⧗ 3 - A modular functional UI language for Android.
Artificial Intelligence
- CIlib ★ 82 - Typesafe, purely functional Computational Intelligence.
- CIlib-tutorial ★ 2 - A tutorial book for cilib.
- CIlib-tutorial ★ 2 - A tutorial book for cilib.
Authentication
- 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.
- 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.
Authorization
- deadbolt-2 ★ 467 ⧗ 3 - A Play 2.x module supporting role-based and proprietary authorization; idiomatic APIs for Scala and Java APIs are provided.
Big Data
- 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.
- 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
- spark-deployer ★ 69 ⧗ 29 - A sbt plugin which helps deploying Apache Spark stand-alone cluster and submitting job on cloud system like AWS EC2.
- 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
- Gearpump ★ 619 ⧗ 5 - Lightweight real-time big data streaming engine
- Sparkta ★ 320 ⧗ 1 - Real Time Aggregation based on Spark Streaming.
- Reactive-kafka ★ 753 ⧗ 0 - Reactive Streams API for Apache Kafka.
Cryptography
- TSec ★ 27 ⧗ 0 - Type-safe, functional, general-cryptography library
CSV
- kantan.csv ★ 143 ⧗ 24 - CSV handling library for Scala with multiple backends.
- Scala-CSV ★ 365 ⧗ 1 - CSV Reader/Writer for Scala.
Database
- ReactiveCouchbase - Reactive Scala Driver for Couchbase. Also includes a Play plug-in. An official plug-in is also in development.
- Sangria - Scala GraphQL Implementation
- Anorm ★ 135 - Simple SQL data access.
- Casbah - Officially supported Scala driver for MongoDB
- Clickhouse-scala-client - Reactive client for Clickhouse
- CouchDB-Scala ★ 59 ⧗ 21 - Purely functional Scala client for CouchDB
- 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
- 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.
- 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.
- Casbah - Officially supported Scala driver for MongoDB
- ReactiveCouchbase - Reactive Scala Driver for Couchbase. Also includes a Play plug-in. An official plug-in is also in development.
Data Binding and Validation
- form-binder ★ 17 ⧗ 29 - A micro data binding and validating framework, very easy to use and hack
- Octopus ★ 15 - Scala library for boilerplate-free validation
- Dupin ★ 7 - Minimal, idiomatic, customizable validation for Scala.
- Veto - A scala validation library without dependencies.
Devops
Misc.
- Skuber ★ 85 ⧗ 0 - Kubernetes client in Scala
Distributed Systems
- Clump - A library for expressive and efficient service composition
- Reactors - Foundational framework for distributed computing that fuses functional reactive programming and traditional actors.
- 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.
- 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.
- 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
Extensions
- Log4s - Fast, Scala-friendly logging bindings on top of SLF4J. Uses macros for extreme performance.
- Rapture - a collection of libraries for common, everyday programming tasks (I/O, JSON, i18n, etc.)
- 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.
- 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.
- 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
#ifin 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.
- n-scala ★ 662 ⧗ 3 - Scala wrapper for Joda Time.
- Persist-Logging ★ 33 ⧗ 48 - Comprehensive logging library for Scala.
- 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 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.
- 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.
- Stateless Future ★ 165 ⧗ 35 - Asynchronous programming in fully featured Scala syntax.
- 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.
- Scala-Logging ★ 707 - Convenient and performant logging library for Scala wrapping SLF4J.
- 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.
- 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.
- Quicklens ★ 245 ⧗ 0 - modify deeply nested case class fields with an elegant API
- Simulacrum ★ 484 ⧗ 2 - First class syntax support for type classes in Scala.
- tinylog ★ 198 ⧗ 0 - Lightweight logging framework with native logging API for Scala.
Functional Reactive Programming
- 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.
- 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.
- 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.
- Reactor-Scala-Extensions - Scala extensions for Project Reactor
Geospatial
Misc.
- Geotrellis ★ 553 ⧗ 0 - Scalable raster toolkit for GIS processing
- sfcurve ★ 20 ⧗ 1 - Space filling curves in Scala for geospatial indexing and query
- osm4scala ★ 8 ⧗ 40 - OpenStreetMap PBF2 file parser
Graphical User Interfaces
- ScalaFX - Scala DSL for creating Graphical User Interfaces that sits on top of JavaFX.
HTTP
- Fintrospect ★ 37 ⧗ 0 - Implement fast, type-safe HTTP webservices for Finagle.
- Spray - Actor-based library for http interaction.
- 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.
- 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
- 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.
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.
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.
JavaScript
Misc.
- scala-js-fiddle - js-fiddle)) - Browser-based Scala.js playground
- Scala.js - js/scala-js)) - Scala to JavaScript compiler
- scala-js-fiddle - js-fiddle)) - Browser-based Scala.js playground
JSON
- argonaut - Purely Functional JSON in Scala.
- argonaut - Purely Functional JSON in Scala.
- 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.
- 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.
- 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
- circe ★ 824 ⧗ 2 - JSON library based on Argonaut, depends on Cats
Learning Scala
Company Blogs
- Scala Times - Weekly newsletter about scala
- Functional Works / Learn - Quality resources maintained by functional works
Misc.
- Dr. Mark Lewis
- 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
- 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 With Cats - Learn system architecture and design using the techniques of modern functional programming with Cats
- Scala in Depth - None
- 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
- 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