Izumi (jp. 泉水, spring) is an ecosystem of independent libraries and frameworks allowing you to significantly increase productivity of your Scala development.
including the following components:
- distage – Compile-time safe, transparent and debuggable multi-modal Dependency Injection framework for pure FP Scala,
- 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.
- 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.
- LogStage – Automatic structural logs from Scala string interpolations,
- BIO - A typeclass hierarchy for tagless final style with Bifunctor effect types. Focused on ergonomics and ease of use with zero boilerplate.
- 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 - 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,
- 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)
- 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:
- Izumi User Group [RU] on Telegram
- Izumi User Group [EN] on Telegram
- Izumi on Gitter
- Discussions on Github
Videos:
- FScala 2023: Izumi Framework: Reinvent Your Productivity With Modern Pure Functional Scala
- Izumi 1.0: Your Next Scala Stack
- Scala, Functional Programming and Team Productivity
- Hyper-pragmatic Pure FP Testing with distage-testkit
- Livecoding: DIStage & Bifunctor Tagless Final
- DevInsideYou — Tagless Final with BIO
- Source Talks — Pragmatic Pure FP approach to application design and testing with distage
- (Talk + Livecoding) Izumi Framework: reinvent your productivity with modern pure functional Scala
Slides:
- Izumi 1.0: Your Next Scala Stack
- Scala, Functional Programming and Team Productivity
- Hyper-pragmatic Pure FP Testing with distage-testkit
- distage: Staged Dependency Injection
- LogStage: Zero-cost Structured Logging
- More slides
We aim to provide tools that:
- Boost productivity and reduce code bloat
- Are as non-invasive as possible
- Are introspectable
- 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:
- Best in the world build system
- Best in the world cluster orchestration tool
- 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.
- Chibi Izumi - a basic re-implementation of
distage-core
for Python. - 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
See:
Are you using Izumi? Please consider opening a pull request to list your organization here:
Tinkoff | |
Raiffeisen Bank Russia | |
Tele2 Russia | |
Evo.Pay | |
Glidewell.io | |
PITS Global Data Recovery Services |