Typelevel Projects

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.

Organization Projects

Core

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.

js jvm native

Cats Effect

Purely functional, responsive, high performance, non-blocking I/O runtime.

js jvm native

FS2

Functional, effectful, concurrent stream library with support for file and network I/O.

js jvm native
Top

Observability

On top of the core projects, the foundation maintains standard libraries for logging and observability of Cats Effect applications:

log4cats

Logging integration for Cats Effect, supporting standard SLF4J backends.

js jvm native

otel4s

OpenTelemetry tracing and metrics for Cats Effect and applications built on it.

js jvm native
Top

Testing

Testing libraries that go beyond unit tests:

discipline

A library for specifiying typeclasses laws and validating that instances satisfy them.

js jvm native

ScalaCheck

A library for automated property-based testing with generators for randomized test data.

js jvm native

Weaver

An integration testing framework for Cats Effect, integrated with ScalaCheck and discipline.

js jvm native
Top

Integrations

Support for various protocols, formats and databases, built on top of FS2 and Cats Effect:

Circe

Yet another JSON library for Scala.

js jvm native

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.

js jvm native

Feral

A framework for writing serverless functions in Scala with Cats Effect and deploying them to the cloud.

js jvm

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.

js jvm native

http4s

A minimal, idiomatic Scala HTTP interface for client and server applications.

js jvm native

jawn-fs2

Integration of jawn and FS2 for streaming, incremental JSON parsing.

js jvm native

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.

js jvm native

Skunk

A data access library for Scala + Postgres.

js jvm native
Top

Tools

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

js jvm

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.

js jvm native

typelevel.g8

A Giter8 template for sbt-typelevel.

js jvm
Top

Other Projects

Various utilities and helper libraries for the Typelevel ecosystem:

case-insensitive

A case-insensitive string for Scala.

js jvm native

catapult

A thin wrapper for the Launch Darkly Java server SDK using Cats Effect and FS2.

jvm

catbird

Cats instances for various Twitter Open Source Scala projects.

jvm

cats-parse

A parsing library for the Cats ecosystem.

js jvm native

cats-time

Instances for Cats Typeclasses for Java 8 date and time API.

js jvm native

Cats Collections

Purely functional collection types built for use with Cats.

js jvm native

Cats MTL

Monad transformers typeclasses for Cats.

js jvm native

Cats Tagless

A library of utilities for tagless final algebras.

js jvm native

keypool

A Keyed Pool Implementation for Scala.

js jvm native

kind-projector

Plugin for nicer type-lambda syntax.

jvm

Kittens

Automatic type class derivation.

js jvm native

literally

Compile time validation of literal values built from strings.

js jvm native

Mouse

Enrichments to standard library classes to ease functional programming.

js jvm native

Natchez

Functional tracing for Cats Effect.

js jvm native

simulacrum

First-class syntax for type classes.

js jvm native

Simulacrum Scalafix

Simulacrum as Scalafix rules.

js jvm

spire

Spire is a numeric library for Scala which is intended to be generic, fast, and precise.

js jvm native

Squants

The Scala API for Quantities, Units of Measure and Dimensional Analysis.

js jvm native

Twiddles

Micro-library for building effectful protocols.

js jvm native

vault

Type-safe, persistent storage for values of arbitrary types.

js jvm native
Top

Affiliate Projects

argonaut-shapeless

Automatic derivation for argonaut.

jvm

banana-rdf

RDF, SPARQL and Linked Data technologies.

js jvm

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.

js jvm native

cats-scalatest

Scalatest bindings for Cats.

js jvm

cats-stm

A software-transactional-memory implementation for Cats Effect.

js jvm native

Ciris

Functional Configurations for Scala.

js jvm native

coulomb

A statically typed unit analysis library for Scala.

js jvm native

cron4s

Cross-platform CRON expression parsing for Scala.

js jvm

decline

A composable command-line parser for Scala.

js jvm native

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.

js jvm native

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”

js jvm native

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.

js jvm

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.

js jvm native

fs2-dom

Idiomatic Cats Effect + FS2 integrations for Web APIs.

js

Hammock

Purely functional HTTP client.

jvm

imp

Summoning implicit values.

js jvm

LDBC

Pure functional JDBC layer with Cats Effect 3 and Scala 3.

js jvm native

Lepus

Purely functional, non-blocking RabbitMQ client built on top of FS2.

js jvm native

Libra

Compile time dimensional analysis for any problem domain.

js jvm

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.

js jvm

Monocle

Optics library offering a simple yet powerful API to access and transform immutable data.

js jvm native

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.

js jvm native

Peloton

An actor library for Cats Effect.

jvm

perspective

Provides tools for generic programming, and typeclasses for monad transformers and higher kinded data.

js jvm

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.

js jvm native

scalacheck-shapeless

Automatic derivation for ScalaCheck.

js jvm native

Scala Exercises

Platform and framework for Scala devs to learn about Scala libraries.

js jvm

scala-steward

A robot that helps keeping Scala projects up-to-date.

jvm

Scoverage

Code coverage tool for Scala.

js jvm native

Shapeless

Shapeless is a generic programming library. Provides advanced abstract tools like heterogenous lists and automatic instance derivation for type classes.

js jvm native

singleton-ops

Operations for primitive and String singleton types.

js jvm

specs2

specs2 is a library for writing executable software specifications, aiming for conciseness, readability and extensibility.

js jvm native

TwoTails

A compiler plugin adding support for mutual tail recursion.

jvm

uniform-scala

Functional user journeys.

js jvm

upperbound

A purely functional, interval based rate limiter.

js jvm native
Top