README.md

March 28, 2026 · View on GitHub

Kebs

Scala library to eliminate boilerplate

Maven Central GitHub license Build Status

logo

A library maintained by Iterators. Supports Scala 2.13 and Scala 3.

What is Kebs?

Kebs automatically derives typeclass instances (JSON codecs, DB column mappings, HTTP unmarshallers, etc.) for your domain types so you don't have to write them by hand.

case class UserId(value: String) extends AnyVal
case class Email(value: String) extends AnyVal

// Without Kebs — manual boilerplate for every type × every library:
implicit val userIdCol: BaseColumnType[UserId] = MappedColumnType.base(_.value, UserId.apply)
implicit val userIdEnc: Encoder[UserId] = Encoder[String].contramap(_.value)
// ... repeat dozens of times

// With Kebs — just mix in a trait. Everything is derived at compile time.

Documentation

https://theiterators.github.io/kebs/

Quick start

// build.sbt — pick the modules you need
libraryDependencies ++= Seq(
  "pl.iterators" %% "kebs-slick"      % "2.1.6",
  "pl.iterators" %% "kebs-circe"      % "2.1.6",
  "pl.iterators" %% "kebs-pekko-http" % "2.1.6",
  "pl.iterators" %% "kebs-instances"  % "2.1.6"
)

Available modules

ModuleWhat you get
kebs-slickAutomatic Slick column type mappings, Postgres array & hstore support
kebs-doobieDoobie Meta / Get / Put instances
kebs-spray-jsonSpray JsonFormat derivation (flat, snakified, >22 fields)
kebs-play-jsonPlay JSON Format instances
kebs-circeCirce Encoder / Decoder derivation (snakified/capitalized)
kebs-akka-httpAkka HTTP unmarshallers + path matchers (Scala 2 only)
kebs-pekko-httpPekko HTTP unmarshallers + path matchers
kebs-http4shttp4s path/query parameter codecs
kebs-http4s-stirhttp4s-stir directives + path matchers
kebs-scalacheckArbitrary instance generation
kebs-pureconfigPureConfig ConfigReader / ConfigWriter
kebs-jsonschemaJSON Schema generation (Scala 2 only)
kebs-baklavaBaklava schema + parameter support
kebs-taggedTagged types for Scala 2
kebs-tagged-meta@tagged code generation (Scala 2 only)
kebs-opaqueOpaque type support for Scala 3
kebs-enumScala 3 native enums + Scala 2 Enumeration
kebs-enumeratumEnumeratum support (Scala 2 & 3)
kebs-instancesPre-built converters for java.time, UUID, URI, etc.

Kebs 2.0 migration guide

  • Mix in CaseClass1ToValueClass if you use value classes.
  • Extend value-enums with ValueEnumLikeEntry[V].
  • Use KebsEnumeratum / KebsValueEnumeratum for Enumeratum, KebsEnum / KebsValueEnum for native enums.
  • See the full documentation for details.

IntelliJ support

Kebs for IntelliJ plugin adds support for @tagged generated code.