# 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.

## Contributing

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.

Don’t modify `README.md` in your pull request. It is automatically generated. Modify `template.md` instead.

## Table of Contents

- Learning Scala
- Projects
  - Android
  - Archive and Compression
  - Artificial Intelligence
  - Authentication
  - Authorization
  - Big Data
  - Command Line Interfaces
  - 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
- Learning Scala
  - Books
  - Exercises
  - Tutorials and courses
  - Commercial courses
  - Community members’ blogs
  - Company Blogs
  - Podcasts
- Contributing

### Archive and Compression

Name | Description | GitHub Activity
--- | --- | ---
SevenZ4S | SevenZip library for Scala, easy to use. |

### Artificial Intelligence

Name | Description | GitHub Activity
--- | --- | ---
cilib | Typesafe, purely functional Computational Intelligence |

### Database

Database access libraries in Scala.

Name | Description | GitHub Activity
--- | --- | ---
akka-persistence-gcp-datastore | akka-persistence-gcp-datastore is a journal and snapshot store plugin for akka-persistence using google cloud firestore in datastore mode. |
anorm | The Anorm database library |
casbah | Casbah is now officially end-of-life (EOL). |
clickhouse-scala-client | Clickhouse Scala Client with Reactive Streams support |
couchbase-jvm-clients | The Couchbase Monorepo for JVM Clients: Java, Scala, io-core… |
couchdb-scala | A purely functional Scala client for CouchDB |
doobie | Functional JDBC layer for Scala. |
elastic4s | Elasticsearch Scala Client - Reactive, Non Blocking, Type Safe, HTTP Client |
etcd4s | Scala etcd client implementing V3 APIs |
finagle-postgres | PostgreSQL protocol support for Finagle |
laserdisc | A Future-free Fs2 native pure FP Redis client |
mysql-binlog-stream | None |
longevity | A Persistence Framework for Scala and NoSQL |
lucene4s | Light-weight convenience wrapper around Lucene to simplify complex tasks and add Scala sugar. |
mapperdao | A Scala ORM library |
morpheus | Reactive type-safe Scala driver for SQL databases |
neotypes | Scala lightweight, type-safe, asynchronous driver for neo4j |
phantom | Schema safe, type-safe, reactive Scala driver for Cassandra/Datastax Enterprise |
pulsar4s | Idiomatic, typesafe, and reactive Scala client for Apache Pulsar |
zio-quill | Compile-time Language Integrated Queries for Scala |
reactivecouchbase-rs-core | New ReactiveCouchbase driver using reactive-streams |
ReactiveMongo | :leaves: Non-blocking, Reactive MongoDB Driver for Scala |
rediscala | Non-blocking, Reactive Redis driver for Scala (with Sentinel support) |
relate | Performant database access in Scala |
salat | Salat is a simple serialization library for case classes. |
sangria | Scala GraphQL implementation |
scala-activerecord | ActiveRecord-like ORM library for Scala |
scala-forklift | Type-safe data migration tool for Slick, Git and beyond. |
scala-redis | A scala library for connecting to a redis server, or a cluster of redis nodes using consistent hashing on the client side. |
scala-sql | scala SQL api |
scalarelational | Type-Safe framework for defining, modifying, and querying SQL databases |
scalikejdbc | A tidy SQL-based DB access library for Scala developers. This library naturally wraps JDBC APIs and provides you easy-to-use APIs. |
scanamo | Simpler DynamoDB access for Scala |
scredis | Non-blocking, ultra-fast Scala Redis client built on top of Akka IO, used in production at Livestream |
scruid | Scala + Druid: Scruid. A library that allows you to compose queries in Scala, and parse the result back into typesafe classes. |
shade | Memcached client for Scala |
slick | Slick (Scala Language Integrated Connection Kit) is a modern database query and access library for Scala |
slick-pg | Slick extensions for PostgreSQL |
squeryl | A Scala DSL for talking with databases with minimum verbosity and maximum type safety |
molecule | Non-blocking asynchronous domain-customizable database query language for Scala and Scala.js against the Datomic database. |
zio-redis | A ZIO-based redis client |
skunk | A data access library for Scala + Postgres. |
kvs | Highly available distributed strong eventual consistent and sequentially consistent storage with feeds and search |

### Messaging

Name | Description | GitHub Activity
--- | --- | ---
op-rabbit | The Opinionated RabbitMQ Library for Scala and Akka |

### Graphical User Interfaces

Libraries for creation of graphical user interfaces

Name | Description | GitHub Activity
--- | --- | ---
scalafx | ScalaFX simplifies creation of JavaFX-based user interfaces in Scala |

### Web Frameworks

Scala frameworks for web development.

Name | Description | GitHub Activity
--- | --- | ---
analogweb-scala | Tiny High Performance HTTP Server for Scala |
chaos | A lightweight framework for writing REST services in Scala. |
cask | Cask: a Scala HTTP micro-framework |
colossus | I/O and Microservice library for Scala |
finatra | Fast, testable, Scala services built on TwitterServer and Finagle |
framework | Lift Framework |
peregrine | Async lightweight Scala web framework |
playframework | Play Framework |
pagelets | A module for the Play Framework to build highly modular applications |
reactive | A simple FRP library and a web UI framework built on it |
scalajs-react | Facebook’s React on Scala.JS |
scalatra | Tiny Scala high-performance, async web framework, inspired by Sinatra |
skinny-framework | :monorail: “Scala on Rails” - A full-stack web app framework for rapid development in Scala |
unfiltered | A toolkit for servicing HTTP requests in Scala |
xitrum | Async and clustered Scala web framework and HTTP(S) server |
youi | Next generation user interface and application development in Scala and Scala.js for web, mobile, and desktop. |

### Reactive Web Frameworks

Scala libraries for Reactive Web development

Name | Description | GitHub Activity
--- | --- | ---
Binding.scala | Reactive data-binding for Scala |
korolev | Single Page Applications running on the server side. |
udash-core | Scala framework for building beautiful and maintainable web applications. |
vertx-lang-scala | Vert.x for Scala |

### Data Binding and Validation

Scala libraries for data binding and validation

Name | Description | GitHub Activity
--- | --- | ---
accord | Accord: A sane validation library for Scala |
dupin | Minimal, idiomatic, customizable validation Scala library. |
octopus | Scala library for boilerplate-free validation |
veto | If you don’t agree with the data |
fields | Scala validation library |

### i18n

Scala libraries for i18n.

Name | Description | GitHub Activity
--- | --- | ---
scala-xgettext | Scala compiler plugin that acts like GNU xgettext command to extract i18n strings in Scala source code files to Gettext .po file |
scaposer | GNU Gettext .po file loader for Scala |

### Authentication

Libraries for implementing authentications schemes.

Name | Description | GitHub Activity
--- | --- | ---
akka-http-session | Web & mobile client-side akka-http sessions, with optional JWT support |
aws-request-signer | Scala library to sign HTTP requests to AWS services. |
OAuth2-mock-play | An implementation of an OAuth2 server designed for mocking/testing |
play-googleauth | Simple play module for authenticating against Google |
play-pac4j | Security library for Play framework 2 in Java and Scala: OAuth, CAS, SAML, OpenID Connect, LDAP, JWT… |
play2-auth | Play2.x Authentication and Authorization module |
scala-oauth2-provider | OAuth 2.0 server-side implementation written in Scala |
securesocial | A module that provides OAuth, OAuth2 and OpenID authentication for Play Framework applications |

### Cryptography

Cryptography and Encryption Libraries.

Name | Description | GitHub Activity
--- | --- | ---
scrypto | Cryptographic primitives for Scala |
tsec | Type-safe general-cryptography library - https://jmcardon.github.io/tsec/ |
jose | Extensible JOSE library for Scala |

### Testing

Libraries for code testing.

Name | Description | GitHub Activity
--- | --- | ---
cornichon | Scala DSL for testing HTTP JSON API |
gatling | Modern Load Testing as Code |
minitest | The super light testing library for Scala and Scala.js |
mockito-scala | Mockito for Scala language |
munit | Scala testing library with actionable errors and extensible APIs |
scalacheck | Property-based testing for Scala |
scalameter | Microbenchmarking and performance regression testing framework for the JVM platform. |
ScalaMock | Native Scala mocking framework |
scalaprops | property based testing library for Scala |
scalatest | A testing tool for Scala and Java developers |
scalive | Connect a Scala REPL to running JVM processes without any prior setup |
specs2 | Software Specifications for Scala |
stryker4s | Mutation testing for Scala |
weaver-test | A test framework that runs everything in parallel. |
testcontainers-scala | Docker containers for testing in scala |
utest | A simple testing framework for Scala |

### JSON

Libraries for work with json.

Name | Description | GitHub Activity
--- | --- | ---
argonaut | Purely functional JSON parser and library in scala. |
borer | Efficient CBOR and JSON (de)serialization in Scala |
circe | Yet another JSON library for Scala |
diffson | A scala diff/patch library for Json |
jackson-module-scala | Add-on module for Jackson (https://github.com/FasterXML/jackson) to support Scala-specific datatypes |
jawn | Jawn is for parsing jay-sawn (JSON) |
json4s | JSON library |
jsoniter-scala | Scala macros for compile-time generation of safe and ultra-fast JSON codecs |
json | Persist-Json, a Fast Json Parser Written in Scala |
ninny-json | JSON typeclasses that know the difference between null and absent fields |
play-json | The Play JSON library |
pushka | ABANDONED Pure Scala serialization library with annotations |
sbt-json | sbt plugin that generates Scala case classes for easy, statically typed and implicit access of JSON data e.g. from API responses |
scala-jsonapi | Scala support library for integrating the JSON API spec with Spray, Play! or Circe |
ScalaJack | Fast JSON parser/generator for Scala |
spray-json | A lightweight, clean and simple JSON implementation in Scala |
zio-json | Fast, secure JSON library with tight ZIO integration. |

### YAML

Libraries for work with YAML.

Name | Description | GitHub Activity
--- | --- | ---
moultingyaml | Scala wrapper for SnakeYAML |

### CSV

Libraries for work with CSV.

Name | Description | GitHub Activity
--- | --- | ---
fm-flatfile | Scala Library for Reading Flat File Data (CSV/TSV/XLS/XLSX) |
kantan.csv | CSV handling library for Scala |
scala-csv | CSV Reader/Writer for Scala |
spata | Functional, stream-based CSV processor for Scala |

### Serialization

Libraries for serializing and deserializing data for storage or transport.

Name | Description | GitHub Activity
--- | --- | ---
avro-codegen | Scala code generator for Avro schemas. |
borer | Efficient CBOR and JSON (de)serialization in Scala |
avro4s | Avro schema generation and serialization / deserialization for Scala |
chill | Scala extensions for the Kryo serialization library |
msgpack-scala | MessagePack serializer implementation for Scala / msgpack.org[Scala] |
ScalaPB | Protocol buffer compiler for Scala. |
scodec | Scala combinator library for working with binary data |
scrooge | A Thrift parser/generator |
upickle | uPickle: a simple, fast, dependency-free JSON & Binary (MessagePack) serialization library for Scala |
proto | Lightweight and fast serialization library for Scala 2/3 based on Protocol Buffers with macros |

### Science and Data Analysis

Libraries for scientific computing, data analysis and numerical processing.

Name | Description | GitHub Activity
--- | --- | ---
algebird | Abstract Algebra for Scala |
axle | Axle Domain Specific Language for Scientific Cloud Computing and Visualization |
BigDL | Building Large-Scale AI Applications for Distributed Big Data |
breeze | Breeze is a numerical processing library for Scala. |
Clustering4Ever | C4E, a JVM friendly library written in Scala for both local and distributed (Spark) Clustering. |
doddle-model | :cake: doddle-model: machine learning in Scala. |
figaro | Figaro Programming Language and Core Libraries |
libra | A dimensional analysis library based on dependent types |
LoMRF | LoMRF is an open-source implementation of Markov Logic Networks |
mgo | Purely functional genetic algorithms for multi-objective optimisation |
MLLib | Machine Learning framework for Spark |
NDScala | N-dimensional arrays in Scala 3. Think NumPy ndarray, but type-safe over shapes, array/axis labels & numeric data types |
numsca | numsca is numpy for scala |
onnx-scala | An ONNX (Open Neural Network eXchange) API and backend for typeful, functional deep learning in Scala 3 |
openmole | Workflow engine for exploration of simulation models using high throughput computing |
Optimus | Optimus is a mathematical programming library for Scala. |
OscaR | a Scala toolkit for solving Operations Research problems |
rings | Rings: efficient JVM library for polynomial rings |
smile | Statistical Machine Intelligence & Learning Engine |
spark-notebook | Interactive and Reactive Data Science using Scala and Spark. |
spire | Powerful new number types and numeric abstractions for Scala. |
squants | The Scala API for Quantities, Units of Measure and Dimensional Analysis |
Synapses | A group of neural-network libraries for functional and mainstream languages |
tensorflow_scala | TensorFlow API for the Scala Programming Language |
zeppelin | Web-based notebook that enables data-driven, interactive data analytics and collaborative documents with SQL, Scala and more. |
spark-nlp | State of the Art Natural Language Processing |

### Big Data

Name | Description | GitHub Activity
--- | --- | ---
BIDMach | CPU and GPU-accelerated Machine Learning Library |
flink | Apache Flink |
gridscale | Scala library for accessing various file, batch systems, job schedulers and grid middlewares. |
kafka | Mirror of Apache Kafka |
alpakka-kafka | Alpakka Kafka connector - Alpakka is a Reactive Enterprise Integration library for Java and Scala, based on Reactive Streams and Akka. |
scalding | A Scala API for Cascading |
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. |
Scrunch | A Scala wrapper for Apache Crunch which provides a framework for writing, testing, and running MapReduce pipelines. |
spark | Apache Spark - A unified analytics engine for large-scale data processing |
sparkplug | Spark package to “plug” holes in data using SQL based rules ⚡️ 🔌 |
sparta | Real Time Analytics and Data Pipelines based on Spark Streaming |
summingbird | Streaming MapReduce with Scalding and Storm |
Vegas | The missing MatPlotLib for Scala + Spark |
gallia-core | A schema-aware Scala library for data transformation |

### Command Line Interfaces

Libraries for creation of command line interfaces

Name | Description | GitHub Activity
--- | --- | ---
clist | Command Line Interface Scala Toolkit |
decline | A composable command-line parser for Scala. |
mainargs | A small, convenient, dependency-free library for command-line argument parsing in Scala |
scallop | a simple Scala CLI parsing library |
scopt | command line options parsing for Scala |

### Image processing and image analysis

2D and 3D image processing and image analysis

Name | Description | GitHub Activity
--- | --- | ---
scala-phash | Image comparison by hash codes |
scalismo | Scalable Image Analysis and Shape Modelling |
scrimage | Java, Scala and Kotlin image processing library |

### Sound processing and music

Name | Description | GitHub Activity
--- | --- | ---
Chromaprint.scala | Chromaprint/AcoustID audio fingerprinting for the JVM |
ScalaCollider | A Scala sound synthesis library based on SuperCollider. |

### Functional Reactive Programming

Event streams, signals, observables, etc.

Name | Description | GitHub Activity
--- | --- | ---
fs2 | Compositional, streaming I/O library for Scala |
iteratee | Iteratees for Cats |
monix | Asynchronous, Reactive Programming for Scala and Scala.js. |
reactors | A concurrent reactive programming framework. |
reactor-scala-extensions | A scala extension for Project Reactor’s Flux and Mono |
REScala | REScala - reactive programming in OO applications |
RxScala | RxScala – Reactive Extensions for Scala – a library for composing asynchronous and event-based programs using observable sequences |
scala.rx | An experimental library for Functional Reactive Programming in Scala |
zio | ZIO — A type-safe, composable library for async and concurrent programming in Scala |
SynapseGrid | SynapseGrid is a framework for constructing dynamic low latency data flow systems. |
vertx-lang-scala | Vert.x for Scala |
wire-signals | A small and effective event-handling library for Scala |

### Modularization and Dependency Injection

Modularization of applications, dependency injection, etc.

Name | Description | GitHub Activity
--- | --- | ---
airframe | Essential Building Blocks for Scala |
izumi | Productivity-oriented collection of lightweight fancy stuff for Scala toolchain |
macwire | Lightweight and Nonintrusive Scala Dependency Injection Library |
scala-guice | Scala extensions for Google Guice |
scaldi | Lightweight Scala Dependency Injection Library |
sclasner | Scala classpath scanner |
subcut | Scala Uniquely Bound Classes Under Traits |
jam | Incredibly simple DI Scala library. |

### Distributed Systems

Libraries and frameworks for writing distributed applications.

Name | Description | GitHub Activity
--- | --- | ---
akka | Build highly concurrent, distributed, and resilient message-driven applications on the JVM |
akka-tracing | A distributed tracing extension for Akka. Provides integration with Play framework, Spray and Akka HTTP. |
annette | Platform to build distributed, scalable, enterprise-wide business applications |
curiodb | Distributed NoSQL Database |
finagle | A fault tolerant, protocol-agnostic RPC system |
glokka | Library to register and lookup actors by names in an Akka cluster |
lagom | Reactive Microservices for the JVM |
parapet | A purely functional library to build distributed and event-driven systems |
poppet | Minimal, type-safe RPC Scala library. |
reactors | A foundational framework for distributed programming. |

### Extensions

Scala extensions.

Name | Description | GitHub Activity
--- | --- | ---
Ammonite | Scala Scripting |
better-files | Simple, safe and intuitive Scala I/O |
blindsight | Blindsight is a Scala logging API with DSL based structured logging, fluent logging, semantic logging, flow logging, and context aware logging. |
cassovary | Cassovary is a simple big graph processing library for the JVM |
cats | Lightweight, modular, and extensible library for functional programming. |
chimney | Scala library for boilerplate-free, type-safe data transformations |
chronoscala | A JSR-310 port of nscala_time |
Dsl.scala | A framework to create embedded Domain-Specific Languages in Scala |
each | A macro library that converts native imperative syntax to scalaz’s monadic expressions |
eff | Eff monad for cats - https://atnos-org.github.io/eff |
enableIf.scala | A library that toggles Scala code at compile-time, like #if in C/C++ |
enumeratum | A type-safe, reflection-free, powerful enumeration implementation for Scala with exhaustive pattern match warnings and helpful integrations. |
Freasy-Monad | Easy way to create Free Monad using Scala macros with first-class Intellij support. |
freedsl | Practical effect composition library based on abstract wrapping type and the free monad |
freestyle | A cohesive & pragmatic framework of FP centric Scala libraries |
hamsters | A mini Scala utility library |
lamma | Lamma schedule generator for Scala is a professional schedule generation library for periodic schedules like fixed income coupon payment, equity deravitive fixing date generation etc. |
larray | Large off-heap arrays and mmap files for Scala and Java |
log4s | High-performance SLF4J wrapper for Scala. |
izumi | Productivity-oriented collection of lightweight fancy stuff for Scala toolchain |
Monocle | Optics library for Scala |
nscala-time | A new Scala wrapper for Joda Time based on scala-time |
quicklens | Modify deeply nested case class fields |
scala-records | Labeled records for Scala based on structural refinement types and macros. |
refined | Refinement types for Scala |
scala-async | An asynchronous programming facility for Scala |
scala-graph | Graph for Scala is intended to provide basic graph functionality seamlessly fitting into the Scala Collection Library. Like the well known members of scala.collection, Graph for Scala is an in-memory graph library aiming at editing and traversing graphs, finding cycles etc. in a user-friendly way. |
scala-logging | Convenient and performant logging library for Scala wrapping SLF4J. |
scalameta | Library to read, analyze, transform and generate Scala programs |
Scalactic | Small library of utilities related to quality that helps keeping code clear and correct. |
scalaz | Principled Functional Programming in Scala |
scribe | The fastest logging library in the world. Built from scratch in Scala and programmatically configurable. |
shapeless | Generic programming for Scala |
simulacrum | First class syntax support for type classes in Scala |
squid | Squid – type-safe metaprogramming and compilation framework for Scala |
tinylog | tinylog is a lightweight logging framework for Java, Kotlin, Scala, and Android |
util | Wonderful reusable code from Twitter |

### Misc

Projects that don’t fit into any specific category.

Name | Description | GitHub Activity
--- | --- | ---
Agora | Library of vote-counting algorithms for elections. |
Ammonite | Scala Scripting |
aws4s | Non-blocking AWS SDK for Scala exposing strongly-typed APIs built on top of http4s, fs2 and cats |
bootzooka | Simple project to quickly start developing a Scala-based microservice or web application, without the need to write login, user registration etc. |
eclair | A scala implementation of the Lightning Network. |
fansi | Scala/Scala.js library for manipulating Fancy Ansi colored strings |
figlet4s | ASCII-art banners in Scala |
fs2-aws | fs2 utilities to interact with AWS |
google4s | A lean, functional library for Google Cloud Services in Scala |
google-api-scala | This API is a wrapper for the google java libraries. Currently mapping Admin Directory, Drive, and Calendar. |
mailgun4s | Mailgun API implementation in Scala |
managerial | A zero-dependency Scala library for managing resources monadically |
media4s | Scala command-line wrapper around ffmpeg, ffprobe, ImageMagick, and other tools relating to media. |
miniboxing-plugin | Miniboxing is a program transformation that improves the performance of Scala generics when used with primitive types. It can speed up generic collections by factors between 1.5x and 22x, while maintaining bytecode duplication to a minimum. You can easily add miniboxing to your sbt project: |
ostinato | A chess library that runs on the server (Scala) and on the browser (ScalaJS). |
play-swagger | Swagger spec generator for play framework |
PPrint | Pretty-printing value, types and type-signatures in Scala |
pureconfig | A boilerplate-free library for loading configuration files |
REPLesent | A neat little tool to build presentations using the Scala REPL |
scala-ssh | Remote shell access via SSH for your Scala applications |
scala-stm | A library-based Software Transactional Memory (STM) for Scala, coupled with transactional sets and maps |
Scavenger | An experimental automated theorem prover. |
service-chassis | A scala chassis to get your applications and services bootstrapped quickly |
spliff | Efficient diffing in Scala |
scountries | Scala library that provides an enumeration of ISO 3166 codes for countries, along with their subdivisions. |

### Android

Scala libraries and wrappers for Android development.

Name | Description | GitHub Activity
--- | --- | ---
sbt-android | An easy-to-use sbt plugin for working with all Android projects |
scaloid | Scaloid makes your Android code easy to understand and maintain. |

### HTTP

Scala libraries and wrappers for HTTP clients.

Name | Description | GitHub Activity
--- | --- | ---
akka-http | The Streaming-first HTTP server/module of Akka |
reboot | Scala wrapper for the Java AsyncHttpClient. |
finch | Scala combinator library for building Finagle HTTP services |
fintrospect | Implement fast, type-safe HTTP webservices for Finagle |
http4s | A minimal, idiomatic Scala interface for HTTP |
jefe | Manages installation, updating, downloading, launching, error reporting, and more for your application. |
lolhttp | An HTTP Server and Client library for Scala. |
requests-scala | A Scala port of the popular Python Requests HTTP client: flexible, intuitive, and straightforward to use. |
RosHTTP | Unified Scala.js + Scala HTTP client API |
scalaj-http | Simple scala wrapper for HttpURLConnection. OAuth included. |
scalaxb | scalaxb is an XML data binding tool for Scala. |
sttp | The Scala HTTP client you always wanted! |
tapir | Declarative, type-safe web endpoints library |
endpoints4s | Describe HTTP endpoints in Scala and derive clients, servers, and documentation |
frontier | Fast, efficient, pure-functional, effect-free websocket, http and udp server, http client and telegram bot |

### Semantic Web

Scala libraries for interactions with the Web of Data, and other RDF tools.

Name | Description | GitHub Activity
--- | --- | ---
banana-rdf | Banana RDF |
scowl | A Scala DSL for programming with the OWL API. |

### Metrics and Monitoring

Scala libraries for gathering metrics and monitoring applications.

Name | Description | GitHub Activity
--- | --- | ---
metrics-scala | The scala API for Dropwizard’s Metrics. |

### Parsing

Scala libraries for creating parsers.

Name | Description | GitHub Activity
--- | --- | ---
atto | friendly little parsers |
fastparse | Writing Fast Parsers Fast in Scala |
parboiled2 | A macro-based PEG parser generator for Scala 2.10+ |
scala-parser-combinators | simple combinator-based parsing for Scala. formerly part of the Scala standard library, now a separate community-maintained module |
cats-parse | A parsing library for the cats ecosystem |
scallion | LL(1) parser combinators in Scala |

### Sbt plugins

Sbt plugins to make your life easier.

Name | Description | GitHub Activity
--- | --- | ---
better-monadic-for | Desugaring scala `for` without implicit `withFilter`s |
coursier | Pure Scala Artifact Fetching |
mdoc | Typechecked markdown documentation for Scala |
sbt-api-mappings | An Sbt plugin that fills apiMappings for common Scala libraries. |
sbt-apidoc | A port of apidocjs https://apidocjs.com to sbt, to document REST Api |
sbt-assembly | Deploy über-JARs. Restart processes. (port of codahale/assembly-sbt) |
sbt-buildinfo | I know this because build.sbt knows this. |
sbt-ci-release | sbt plugin to automate Sonatype releases from GitHub Actions |
sbt-dependency-check | SBT Plugin for OWASP DependencyCheck. Monitor your dependencies and report if there are any publicly known vulnerabilities (e.g. CVEs). :rainbow: |
sbt-docker | Create Docker images directly from sbt |
sbt-doctest | Doctest for scala |
sbt-ghpages | git, site and ghpages support for sbt projects. |
sbt-groll | sbt plugin to roll the Git history |
sbt-header | sbt-header is an sbt plugin for creating file headers, e.g. copyright headers |
sbt-hepek | Sbt plugin for rendering Scala objects to files. And more! |
sbt-ide-settings | SBT plugin for tweaking various IDE settings |
sbt-jmh | “Trust no one, bench everything.” - sbt plugin for JMH (Java Microbenchmark Harness) |
sbt-microsites | An sbt plugin to create awesome microsites for your project |
mima | A tool for catching binary incompatibility in Scala |
sbt-native-packager | sbt Native Packager |
sbt-pack | A sbt plugin for creating distributable Scala packages. |
sbt-pgp | PGP plugin for sbt |
sbt-release | A release plugin for sbt |
sbt-revolver | An SBT plugin for dangerously fast development turnaround in Scala |
sbt-scala-js-map | A Sbt plugin that configures source mapping for Scala.js projects hosted on Github |
sbt-scalafmt | sbt plugin for Scalafmt |
sbt-scoverage | sbt plugin for scoverage |
sbt-site | Site generation for sbt |
sbt-sonatype | A sbt plugin for publishing Scala/Java projects to the Maven central. |
sbt-unidoc | sbt plugin to create a unified Scaladoc or Javadoc API document across multiple subprojects. |
sbt-updates | sbt plugin that can check Maven and Ivy repositories for dependency updates |
sbt-eclipse | Plugin for sbt to create Eclipse project definitions |
scala-clippy | Good advice for Scala compiler errors |
splain | better implicit errors for scala |
tut | doc/tutorial generator for scala |
xsbt-web-plugin | Servlet support for sbt |
sbt-deploy-ssh | SBT deploy plugin |
sbt-git | A git plugin for SBT |
sbt-git | Use git-describe as a version and run git commands inside SBT shell |

### XML / HTML

XML and HTML generation and processing

Name | Description | GitHub Activity
--- | --- | ---
scala-scraper | A Scala library for scraping content from HTML pages |
xs4s | XML Streaming for Scala including FS2/cats support |

### Markdown

Name | Description | GitHub Activity
--- | --- | ---
Laika | Text Markup Transformer for sbt and Scala applications, transforming Markdown and reStructuredText to HTML, EPUB and PDF |

### JavaScript

JavaScript generation and interop libraries.

Name | Description | GitHub Activity
--- | --- | ---
scalafiddle-editor | Web user interface for ScalaFiddle |
scala-js | Scala.js, the Scala to JavaScript compiler |

### Scheduling

Name | Description | GitHub Activity
--- | --- | ---
akka-quartz-scheduler | Quartz Extension and utilities for cron-style scheduling in Akka |

### Templating

Web templating engines.

Name | Description | GitHub Activity
--- | --- | ---
beard | A lightweight, logicless templating engine, written in Scala and inspired by Mustache |
scalatags | ScalaTags is a small XML/HTML construction library for Scala. |
scalate | Scalate is a Scala based template engine which supports HAML, Mustache and JSP, Erb and Velocity style syntaxes. |
twirl | Twirl is Play’s default template engine |
hepek | Typesafe HTML templates in pure Scala. Static site generator included! Play and ScalaJS support! |

### Tools

Name | Description | GitHub Activity
--- | --- | ---
scala-trace-debug | Macro based print debugging. Locates log statements in your IDE. |
bloop | Bloop is a build server and CLI tool to compile, test and run Scala fast from any editor or build tool. |
codacy-scalameta | Codacy tool for Scalameta |
coursier | Pure Scala Artifact Fetching |
dregex | Dregex is a JVM library that implements a regular expression engine using deterministic finite automata (DFA). It supports some Perl-style features and yet retains linear matching time, and also offers set operations. |
fast-string-interpolator | Scala macro that generates ultra-fast string interpolators. |
fastring | Extremely fast string formatting |
gitbucket | A Git platform powered by Scala with easy installation, high extensibility & GitHub API compatibility |
giter8 | a command line tool to apply templates defined on GitHub |
metals | Scala language server with rich IDE features 🚀 |
mill | Your shiny new Java/Scala build tool! |
pos | Macro based print debugging. Locates debug statements in your IDE. Supports logging. |
sbt | sbt, the interactive build tool |
scalafix | Refactoring and linting tool for Scala |
Scalafmt | Code formatter for Scala |
scalariform | Scala source code formatter |
scalastyle | scalastyle |
Scalatex | Programmable, Typesafe Document Generation |
scapegoat | Scala compiler plugin for static code analysis |
wartremover | Flexible Scala code linting tool |
stone | URL (de)construct. Withers. |
scalajs-router | ScalaJS frontend router |
scala2plantuml | Scala2PlantUML generates PlantUML diagrams from Scala code. |

### Geospatial

Libraries to aid with geospatial calculations and artifacts.

Name | Description | GitHub Activity
--- | --- | ---
geotrellis | GeoTrellis is a geographic data processing engine for high performance applications. |
osm4scala | Scala and Spark library focused on reading OpenStreetMap Pbf files. |
rtree2d | RTree2D is a 2D immutable R-tree for ultra-fast nearest and intersection queries in plane and spherical coordinates |
sfcurve | LocationTech SFCurve is a Scala library for the creation, transformation, and querying of space-filling curves |
stac4s | a scala library with primitives to build applications using the SpatioTemporal Asset Catalogs specification |
franklin | A STAC/OGC API Features Web Service |

### Devops

DevOps related tools and libraries.

Name | Description | GitHub Activity
--- | --- | ---
skuber | A Scala Kubernetes client library |

# Learning Scala

Nice books, blogs and other resources to learn Scala

## Books

- Essential Scala by Noel Welsh and Dave Gurnell - Essential Scala is aimed at experienced developers who are encountering Scala for the first time.
- Functional and Reactive Domain Modeling by Debasish Ghosh
- Functional Programming for Mortals by Sam Halliday
- Functional Programming in Scala by Paul Chiusano and Runar Bjarnason
- Functional Programming, Simplified (Scala edition) by Alvin Alexander
- Get Programming with Scala by Daniela Sfregola - Tutorial-driven introduction to Scala
- Practical FP in Scala: A hands-on approach by Gabriel Volpe
- Programming in Scala by Martin Odersky, Lex Spoon, and Bill Venners
- Pure functional HTTP APIs in Scala by Jens Grassel
- Reactive Programming with Scala and Akka - Use the concepts of reactive programming to build distributed systems running on multiple nodes
- Scala Cookbook by Alvin Alexander
- Scala for the Impatient by Cay Horstmann - Covers most Scala features with short and easy to understand explainations.
- Scala With Cats by Noel Welsh and Dave Gurnell - Learn system architecture and design using the techniques of modern functional programming with Cats
- The Type Astronaut’s Guide to Shapeless by Dave Gurnell
- Zionomicon by John A. De Goes, Adam Fraser - Master the dark art of creating scalable, type-safe, concurrent apps with ZIO

## Exercises

- S-99 - Ninety-Nine Scala Problems
- 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.
- Exercism - Scala Exercises - Community-driven Scala exercises.
- Learn-by-doing functional programming course on Scala - Covers type classes, functors, applicatives, monads, monad transformers, free monad

## Tutorials and courses

- A Tour of Scala - Bite-sized introductions to some of the core language concepts.
- Functional Programming in Scala - Coursera Specialization (5 courses) created by Martin Odersky et al. at the EPFL (Ecole polytechnique fédérale de Lausanne).
- Resources by Dr. Mark Lewis >> Website | Youtube Playlists
- Demos and Examples in Scala (Chinese) ★ 923 ⧗ 2 - repo of sample Scala library usage, written in Chinese
- Introduction to programming with dependent types in Scala - Video Course by Dmytro Mitin
- Scala Collections Cookbook - Scala collections introduction. written in Chinese.
- Free Scala Courses - A curated list of free Scala courses.

## Commercial courses

- Foundations of Functional Programming in Scala - a professional video course with exercises covering covers functional principles, custom IO (effects) and functional design.
- Scala Algorithms - a collection of nearly 100 algorithms in pure-functional Scala with test cases, explanations and a web-based IDE. Built with http4s & Scala.js.

## Community Members’ Blogs

- http://lihaoyi.com
- http://warski.org/blog
- https://degoes.net/articles
- http://eed3si9n.com/category/tags/scala
- https://danielwestheide.com/tags/scala
- https://kubuszok.com/tags/#scala
- http://debasishg.blogspot.com
- http://appliedscala.com/blog
- http://blog.higher-order.com
- http://ktoso.github.io/scala-types-of-types
- http://scalaprof.blogspot.com
- http://torre.me.uk/docs/scala
- https://alvinalexander.com
- https://blog.bruchez.name/search/label/scala
- https://github.com/lemastero/scala_typeclassopedia
- https://pchiusano.github.io
- https://beyondthelines.net
- https://manuel.bernhardt.io/blog

## Company Blogs

- 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
- 47 Degrees - Functional Programming news, updates, and more.

## Podcasts

- The Scala Logs - Interviewing developers, open source contributors, subject matter experts, and the like to talk about FP, Scala, open source, and their interests.
- Scala Love - Podcast about the Scala Programming Language and its community
- CoRecursive Interviews - In-depth Interviews with software developers, often on the subject of scala libraries and functional programming.

## Communities

- Scala Ukraine - Telegram chat of Ukrainian Scala Community

## Misc.

- Programming Community Curated Resources for Learning Scala
- Scalera Blog - Blog about Scala language and its environment (howto’s, good practices, tips,…). Weekly posts written in both spanish and english
- Scala @LibHunt - A community driven list of useful Scala libraries, frameworks and software
- List of Scala Online Courses - A list of free and paid Scala online courses by Classpert, An online course search and comparison website
- Scala Days Conferences - A youtube channel that provides full fledged videos, recorded at Scala Days Conferences
- CA Art - A small project aimed at learning Scala on intermediate level by experimenting with Cellular Automata