Skip to content
vic

7mind/izumi

Productivity-oriented collection of lightweight fancy stuff for Scala toolchain

7mind/izumi.json
{
"createdAt": "2017-11-03T10:39:42Z",
"defaultBranch": "develop",
"description": "Productivity-oriented collection of lightweight fancy stuff for Scala toolchain",
"fullName": "7mind/izumi",
"homepage": "https://izumi.7mind.io",
"language": "Scala",
"name": "izumi",
"pushedAt": "2025-11-27T01:43:50Z",
"stargazersCount": 626,
"topics": [
"cats-effect",
"config",
"dependency-injection",
"distage-testkit",
"fp-testing",
"framework",
"generative",
"izumi",
"logger",
"logging",
"logging-library",
"pper",
"productivity",
"roles",
"rpc",
"scala",
"scalajs",
"slf4j",
"structured-logging",
"zio"
],
"updatedAt": "2025-11-26T23:37:34Z",
"url": "https://github.com/7mind/izumi"
}

Gitter Patreon Build Status codecov CodeFactor License Awesome

Izumi


Izumi


Maven Central Sonatype releases Sonatype snapshots Latest Release Latest version

Izumi (jp. 泉水) is an ecosystem of independent libraries and frameworks allowing you to significantly increase productivity of your Scala development.

including the following components:

  1. distage – Compile-time safe, transparent and debuggable multi-modal Dependency Injection framework for pure FP Scala,
  2. distage-testkit – Hyper-pragmatic pure FP Test framework. Shares heavy resources globally across all test suites; lets you easily swap implementations of component; uses your effect type for parallelism.
  3. distage-framework-docker – A distage extension for using docker containers in tests or for local application runs, comes with example Postgres, Cassandra, Kafka & DynamoDB containers.
  4. LogStage – Automatic structural logs from Scala string interpolations,
  5. BIO - A typeclass hierarchy for tagless final style with Bifunctor effect types. Focused on ergonomics and ease of use with zero boilerplate.
  6. izumi-reflect (moved to zio/izumi-reflect) - Portable, lightweight and kind-polymorphic alternative to scala-reflect’s Typetag for Scala, Scala.js, Scala Native and Scala 3
  7. IdeaLingua (moved to 7mind/idealingua-v1) – API Definition, Data Modeling and RPC language, optimized for fast prototyping – like gRPC or Swagger, but with a human face. Generates RPC servers and clients for Go, TypeScript, C# and Scala,
  8. Opinionated SBT plugins (moved to 7mind/sbtgen) – Reduces verbosity of SBT builds and introduces new features – inter-project shared test scopes and BOM plugins (from Maven)
  9. Percept-Plan-Execute-Repeat (PPER) – A pattern that enables modeling very complex domains and orchestrate deadly complex processes a lot easier than you’re used to.

Example projects:

Support Chats:

Videos:

Slides:

We aim to provide tools that:

  1. Boost productivity and reduce code bloat
  2. Are as non-invasive as possible
  3. Are introspectable
  4. Are better than anything else out there :3

We are looking for early adopters, contributors and sponsors.

This project is currently a work in progress.

In the future we are going to (or may) implement more tools based on PPER approach:

  1. Best in the world build system
  2. Best in the world cluster orchestration tool
  3. Best in the world load testing/macro-benchmark tool
  • d4s - “Dynamo DB Database done Scala way”. A library that allows accessing the DynamoDB in a purely-functional way.
  1. Chibi Izumi for Python - a basic re-implementation of distage-core for Python.
  2. Chibi Izumi for Typescript - a basic re-implementation of distage-core for Typescript.
  3. DICS - Dependency Injection for C#, an advanced re-implementation of distage-core for C# based on Roslyn Analyzers, with extensive Unity support. To be released.
  • Run ./sbtgen.sc to generate a JVM-only sbt project, run ./sbtgen.sc --js to generate a JVM+JS sbt crossproject
  • If working on sbtgen build files, use scala-cli setup-ide ./sbtgen to generate a BSP project for build files. You can attach the BSP project to existing izumi project in Intellij using Import Module from Existing Sources... action or open it in a separate window.

See:

  • [Build notes]!(doc/md/build.md)
  • [Project flow]!(doc/md/flow.md)

Are you using Izumi? Please consider opening a pull request to list your organization here:

TinkoffTinkoff
Raiffeisen Bank RussiaRaiffeisen Bank Russia
Tele2 RussiaTele2 Russia
Evo.PayEvo.Pay
Glidewell.ioGlidewell.io
PITS Global Data Recovery ServicesPITS Global Data Recovery Services