All Typelevel projects are open source software and maintained by communities following the Typelevel code of conduct.
Typelevel organization projects have their own maintainers, but receive additional
support from the Typelevel Foundation to ensure the project remains up to date and secure. These projects include
core components of the 'Typelevel Stack', built around the core organization projects and broadly useful
libraries.
Affiliate projects are built on top of the core Typelevel libraries and follow Typelevel
community guidelines. While not directly supported by the Foundation, these projects are designed to be compatible
with the overall Typelevel ecosystem. If you are interested in having your project recognized as an affiliate, see our
Affiliate Project Applications guide.
The Typelevel ecosystem is built on a small core foundation of organization
maintained libraries. These libraries provide the basic building blocks for
writing purely functional programs in Scala. They are available for all
Scala platforms: JVM, JS and Native.
Cats
Reusable abstractions and data types for functional programming.
jsjvmnative
Cats Effect
Purely functional, responsive, high performance, non-blocking I/O runtime.
jsjvmnative
FS2
Functional, effectful, concurrent stream library with support for file and network I/O.
Support for various protocols, formats and databases, built on top of FS2
and Cats Effect:
Circe
Yet another JSON library for Scala.
jsjvmnative
doobie
A pure functional JDBC layer for Scala. It is not an ORM, nor is it a relational algebra; it just provides a principled way to construct programs (and higher-level libraries) that use JDBC.
jvm
fabric
Object-Notation Abstraction for JSON, binary, HOCON, etc.
jsjvmnative
Feral
A framework for writing serverless functions in Scala with Cats Effect and deploying them to the cloud.
jsjvm
Frameless
Library for working with Spark using more expressive types.
jvm
fs2-grpc
gRPC implementation built on the Typelevel stack.
jvm
fs2-kafka
Kafka producer and consumer streaming support built on FS2.
jvm
Grackle
Functional GraphQL server for the Typelevel stack.
jsjvmnative
http4s
A minimal, idiomatic Scala HTTP interface for client and server applications.
jsjvmnative
jawn-fs2
Integration of jawn and FS2 for streaming, incremental JSON parsing.
jsjvmnative
scodec
scodec is a combinator library for working with binary data. It focuses on contract-first and pure functional encoding and decoding of binary data.
The Typelevel Foundation uses several tools to help build and manage its
libraries, which are also available for use by others:
Laika
Site and e-book generator and customizable text markup transformer for sbt, Scala and Scala.js
jsjvm
sbt-tpolecat
An SBT plugin for automagically configuring good default scalac options for writing code on the Typelevel stack, based on the project Scala version.
jvm
sbt-typelevel
SBT plugin for for developing, testing, cross-building, publishing, and documenting your Scala library on GitHub, with a focus on semantic versioning and binary compatibility.
jvm
scalac-options
A library containing logic for configuring Scala compiler options according to the current Scala compiler version. Usable as a building block for build tool plugins.
jvm
typelevel-nix
Reproducible build environments for Scala, using nix.
These independently maintained projects extend and enrich the Typelevel ecosystem. If you maintain an open-source project and would like to apply to become an affiliate, see our
Affiliate Project Applications guide.
argonaut-shapeless
Automatic derivation for argonaut.
jvm
banana-rdf
RDF, SPARQL and Linked Data technologies.
jsjvm
calico
Pure, reactive UI library for building web applications with Cats Effect + FS2.
js
cats-actors
An Actor Model implementation built on top of Cats Effect, providing a higher-level abstraction for managing concurrency.
jsjvmnative
cats-scalatest
Scalatest bindings for Cats.
jsjvm
cats-stm
A software-transactional-memory implementation for Cats Effect.
jsjvmnative
Ciris
Functional Configurations for Scala.
jsjvmnative
coulomb
A statically typed unit analysis library for Scala.
jsjvmnative
cron4s
Cross-platform CRON expression parsing for Scala.
jsjvm
decline
A composable command-line parser for Scala.
jsjvmnative
edomata
Event-driven automata for Scala, Scala.js and scala native. This library provides purely functional state machines that can be used to create event sourced and/or CQRS style applications. It also includes production ready backends.
jsjvmnative
eff
Extensible effects are an alternative to monad transformers for computing with effects in a functional way. This library is based on the “free-er” monad and an “open union” of effects described by Oleg Kiselyov in “Freer monads, more extensible effects”
jsjvmnative
endless4s
Sharded and event-sourced entities using tagless-final algebras.
jvm
Extruder
Populate case classes from any configuration source.
jvm
Fetch
Library built on top of Cats that provides efficient data access from heterogeneous dataurces.
jsjvm
ff4s
A purely functional web frontend framework for Scala.js.
js
Finch
Purely functional basic blocks atop of Finagle for building composable HTTP APIs.
jvm
fs2-aes
Micro library providing AES encryption/decryption of FS2 byte streams.
jvm
fs2-compress
Compression Algorithms for FS2.
jvm
fs2-data
Parse and transform data (CBOR, CSV, JSON, XML) in a streaming manner.
jsjvmnative
fs2-dom
Idiomatic Cats Effect + FS2 integrations for Web APIs.
js
Hammock
Purely functional HTTP client.
jvm
imp
Summoning implicit values.
jsjvm
LDBC
Pure functional JDBC layer with Cats Effect 3 and Scala 3.
jsjvmnative
Lepus
Purely functional, non-blocking RabbitMQ client built on top of FS2.
jsjvmnative
Libra
Compile time dimensional analysis for any problem domain.
jsjvm
Monix
High-performance library for composing asynchronous, event-based programs, exposing a Reactive Streams implementation along with primitives for dealing with concurrency and side-effects.
jsjvm
Monocle
Optics library offering a simple yet powerful API to access and transform immutable data.
jsjvmnative
Outwatch
The Functional and Reactive Web-Frontend Library for Scala.js.
js
parsley-cats
The parsley-cats library exposes Cats instances for Parsley parsing library.
jsjvmnative
Peloton
An actor library for Cats Effect.
jvm
perspective
Provides tools for generic programming, and typeclasses for monad transformers and higher kinded data.
jsjvm
PureConfig
A boilerplate-free library for loading configuration files.
jvm
refined
Tools for refining types with type-level predicates which constrain the set of values described by the refined type, for example restricting to positive or negative numbers.
jsjvmnative
scalacheck-shapeless
Automatic derivation for ScalaCheck.
jsjvmnative
Scala Exercises
Platform and framework for Scala devs to learn about Scala libraries.
jsjvm
scala-steward
A robot that helps keeping Scala projects up-to-date.
jvm
Scoverage
Code coverage tool for Scala.
jsjvmnative
Shapeless
Shapeless is a generic programming library. Provides advanced abstract tools like heterogenous lists and automatic instance derivation for type classes.
jsjvmnative
singleton-ops
Operations for primitive and String singleton types.
jsjvm
specs2
specs2 is a library for writing executable software specifications, aiming for conciseness, readability and extensibility.
jsjvmnative
TwoTails
A compiler plugin adding support for mutual tail recursion.