{"id":13640472,"url":"https://github.com/7mind/izumi","last_synced_at":"2026-02-26T13:06:00.611Z","repository":{"id":39249623,"uuid":"109383925","full_name":"7mind/izumi","owner":"7mind","description":"Productivity-oriented collection of lightweight fancy stuff for Scala toolchain","archived":false,"fork":false,"pushed_at":"2024-10-29T13:00:22.000Z","size":18681,"stargazers_count":615,"open_issues_count":62,"forks_count":66,"subscribers_count":20,"default_branch":"develop","last_synced_at":"2024-10-29T14:49:56.631Z","etag":null,"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"],"latest_commit_sha":null,"homepage":"https://izumi.7mind.io","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/7mind.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"7mind","patreon":"7mind","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://www.buymeacoffee.com/7mind"]}},"created_at":"2017-11-03T10:39:42.000Z","updated_at":"2024-10-29T13:00:31.000Z","dependencies_parsed_at":"2023-02-17T10:00:48.350Z","dependency_job_id":"57193b94-2b19-4672-8c93-30fa6007689e","html_url":"https://github.com/7mind/izumi","commit_stats":{"total_commits":4554,"total_committers":35,"mean_commits":"130.11428571428573","dds":0.6247255160298639,"last_synced_commit":"56c282ba9de57e9cc70972782f1d019b3274f816"},"previous_names":["pshirshov/izumi-r2"],"tags_count":307,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7mind%2Fizumi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7mind%2Fizumi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7mind%2Fizumi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7mind%2Fizumi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/7mind","download_url":"https://codeload.github.com/7mind/izumi/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248824655,"owners_count":21167344,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["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"],"created_at":"2024-08-02T01:01:11.534Z","updated_at":"2026-02-26T13:06:00.595Z","avatar_url":"https://github.com/7mind.png","language":"Scala","funding_links":["https://github.com/sponsors/7mind","https://patreon.com/7mind","https://www.buymeacoffee.com/7mind","https://www.patreon.com/7mind"],"categories":["Logging","Scala","Table of Contents","Modularization and Dependency Injection"],"sub_categories":["Modularization and Dependency Injection"],"readme":"[![Gitter](https://badges.gitter.im/7mind/izumi.svg)](https://gitter.im/7mind/izumi)\n[![Patreon](https://img.shields.io/badge/patreon-sponsor-ff69b4.svg)](https://www.patreon.com/7mind)\n[![Build Status](https://github.com/7mind/izumi/workflows/Build/badge.svg)](https://github.com/7mind/izumi/actions/workflows/build.yml)\n[![codecov](https://codecov.io/gh/7mind/izumi/branch/develop/graph/badge.svg)](https://codecov.io/gh/7mind/izumi)\n[![CodeFactor](https://www.codefactor.io/repository/github/7mind/izumi/badge)](https://www.codefactor.io/repository/github/7mind/izumi)\n[![License](https://img.shields.io/github/license/7mind/izumi.svg)](https://github.com/7mind/izumi/blob/develop/LICENSE)\n[![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/lauris/awesome-scala)\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://izumi.7mind.io/\"\u003e\n  \u003cimg width=\"40%\" src=\"https://github.com/7mind/izumi/blob/develop/doc/microsite/src/main/tut/media/izumi-logo-full-purple.png?raw=true\" alt=\"Izumi\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.buymeacoffee.com/7mind\"\u003e\u003cimg src=\"https://bmc-cdn.nyc3.digitaloceanspaces.com/BMC-button-images/custom_images/orange_img.png\" alt=\"Izumi\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n[![Maven Central](https://img.shields.io/maven-central/v/io.7mind.izumi/distage-core_2.12.svg)](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22io.7mind.izumi%22)\n[![Sonatype releases](https://img.shields.io/nexus/r/https/oss.sonatype.org/io.7mind.izumi/distage-core_2.12.svg)](https://oss.sonatype.org/content/repositories/releases/io/7mind/izumi/)\n[![Sonatype snapshots](https://img.shields.io/nexus/s/https/oss.sonatype.org/io.7mind.izumi/distage-core_2.12.svg)](https://oss.sonatype.org/content/repositories/snapshots/io/7mind/izumi/)\n[![Latest Release](https://img.shields.io/github/tag/7mind/izumi.svg)](https://github.com/7mind/izumi/releases)\n[![Latest version](https://index.scala-lang.org/7mind/izumi/distage-core/latest.svg?color=orange)](https://index.scala-lang.org/7mind/izumi)\n\nWhat is it?\n===========\n\nIzumi (jp. 泉水) is an ecosystem of independent libraries and frameworks allowing you to significantly increase productivity of your Scala development.\n\nincluding the following components:\n\n1. [distage](https://izumi.7mind.io/distage/) – Compile-time safe, transparent and debuggable multi-modal Dependency Injection framework for pure FP Scala,\n2. [distage-testkit](https://izumi.7mind.io/distage/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.\n3. [distage-framework-docker](https://izumi.7mind.io/distage/distage-framework-docker) – A distage extension for using docker containers in tests or for local application runs, comes with example Postgres, Cassandra, Kafka \u0026 DynamoDB containers.\n4. [LogStage](https://izumi.7mind.io/logstage/) – Automatic structural logs from Scala string interpolations,\n5. [BIO](https://izumi.7mind.io/bio/) - A typeclass hierarchy for tagless final style with Bifunctor effect types. Focused on ergonomics and ease of use with zero boilerplate.\n6. [izumi-reflect](https://github.com/zio/izumi-reflect) (moved to [zio/izumi-reflect](https://github.com/zio/izumi-reflect)) - Portable, lightweight and kind-polymorphic alternative to `scala-reflect`'s Typetag for Scala, Scala.js, Scala Native and Scala 3\n7. [IdeaLingua](https://izumi.7mind.io/idealingua/) (moved to [7mind/idealingua-v1](https://github.com/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,\n8. [Opinionated SBT plugins](https://izumi.7mind.io/sbt/) (moved to [7mind/sbtgen](https://github.com/7mind/sbtgen)) – Reduces verbosity of SBT builds and introduces new features – inter-project shared test scopes and BOM plugins (from Maven)\n9. [Percept-Plan-Execute-Repeat (PPER)](https://izumi.7mind.io/pper/) – A pattern that enables modeling very complex domains and orchestrate deadly complex processes a lot easier than you're used to.\n\nDocs\n----\n\n* **[Documentation](https://izumi.7mind.io/)**\n* **[Scaladoc](https://izumi.7mind.io/latest/release/api/)**\n\nExample projects:\n\n* [DIStage Example Project](https://github.com/7mind/distage-example)\n* [Idealingua Example Project with TypeScript and Scala](https://github.com/7mind/idealingua-example)\n\nSupport Chats:\n\n* [Izumi User Group [RU] on Telegram](https://t.me/scala_any/708)\n* [Izumi User Group [EN] on Telegram](https://t.me/izumi_en)\n* [Izumi on Gitter](https://gitter.im/7mind/izumi)\n* [Discussions on Github](https://github.com/7mind/izumi/discussions)\n\nVideos:\n\n* [FScala 2023: Izumi Framework: Reinvent Your Productivity With Modern Pure Functional Scala](https://www.youtube.com/watch?v=Wufg8SJqqd8)\n* [Izumi 1.0: Your Next Scala Stack](https://www.youtube.com/watch?v=o65sKWnFyk0)\n* [Scala, Functional Programming and Team Productivity](https://www.youtube.com/watch?v=QbdeVoL4hBk)\n* [Hyper-pragmatic Pure FP Testing with distage-testkit](https://www.youtube.com/watch?v=CzpvjkUukAs)\n* [Livecoding: DIStage \u0026 Bifunctor Tagless Final](https://www.youtube.com/watch?v=C0srg5T0E4o\u0026t=4971)\n* [DevInsideYou — Tagless Final with BIO](https://www.youtube.com/watch?v=ZdGK1uedAE0\u0026t=580s)\n* [Source Talks — Pragmatic Pure FP approach to application design and testing with distage](https://www.youtube.com/watch?v=W60JO3TuFhc)\n* [(Talk + Livecoding) Izumi Framework: reinvent your productivity with modern pure functional Scala](https://www.youtube.com/watch?v=Zk0Il6I5MQI)\n\nSlides:\n\n* [Izumi 1.0: Your Next Scala Stack](https://www.slideshare.net/7mind/izumi-10-your-next-scala-stack)\n* [Scala, Functional Programming and Team Productivity](https://www.slideshare.net/7mind/scala-functional-programming-and-team-productivity)\n* [Hyper-pragmatic Pure FP Testing with distage-testkit](https://www.slideshare.net/7mind/hyperpragmatic-pure-fp-testing-with-distagetestkit)\n* [distage: Staged Dependency Injection](https://www.slideshare.net/7mind/scalaua-distage-staged-dependency-injection)\n* [LogStage: Zero-cost Structured Logging](https://www.slideshare.net/7mind/logstage-zerocosttructuredlogging)\n* [More slides](https://github.com/7mind/slides)\n\nKey goals\n=========\n\nWe aim to provide tools that:\n\n1. Boost productivity and reduce code bloat\n2. Are as non-invasive as possible\n3. Are introspectable\n4. Are better than anything else out there :3\n\nCurrent state and future plans\n==============================\n\nWe are looking for early adopters, contributors and sponsors.\n\nThis project is currently a work in progress.\n\nIn the future we are going to (or may) implement more tools based on PPER approach:\n\n1. Best in the world build system\n2. Best in the world cluster orchestration tool\n3. Best in the world load testing/macro-benchmark tool\n\nProjects powered by Izumi\n==========================\n- [d4s](https://github.com/PlayQ/d4s) - \"Dynamo DB Database done Scala way\". A library that allows accessing the DynamoDB in a purely-functional way.\n\nIzumi on other platforms\n========================\n\n1. [Chibi Izumi for Python](https://github.com/7mind/izumi-chibi-py) - a basic re-implementation of `distage-core` for Python.\n2. [Chibi Izumi for Typescript](https://github.com/7mind/izumi-chibi-ts) - a basic re-implementation of `distage-core` for Typescript.\n3. 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.\n\nContributors\n============\n\n* Run `./sbtgen.sc` to generate a JVM-only sbt project, run `./sbtgen.sc --js` to generate a JVM+JS sbt crossproject\n* 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.\n\nSee:\n\n- [Build notes](doc/md/build.md)\n- [Project flow](doc/md/flow.md)\n\nAdopters\n========\nAre you using Izumi? Please consider opening a pull request to list your organization here:\n\n|  |  |\n|--------------|-------|\n| [Tinkoff](https://tinkoff.ru/) | \u003cimg src=\"https://raw.githubusercontent.com/7mind/izumi/develop/doc/microsite/src/main/tut/media/user-logo-best-bank.svg?sanitize=true\" alt=\"Tinkoff\" width=\"150\"/\u003e |\n| [Raiffeisen Bank Russia](https://www.raiffeisen.ru/en/) | \u003cimg src=\"https://raw.githubusercontent.com/7mind/izumi/develop/doc/microsite/src/main/tut/media/user-logo-raiffeisen.svg?sanitize=true\" alt=\"Raiffeisen Bank Russia\" width=\"150\"/\u003e |\n| [Tele2 Russia](https://tele2.ru/) | \u003cimg src=\"https://raw.githubusercontent.com/7mind/izumi/develop/doc/microsite/src/main/tut/media/user-logo-tele2-ru.svg?sanitize=true\" alt=\"Tele2 Russia\" width=\"150\"/\u003e |\n| [Evo.Pay](https://evo.company/) | \u003cimg src=\"https://raw.githubusercontent.com/7mind/izumi/develop/doc/microsite/src/main/tut/media/user-logo-evo-pay.svg?sanitize=true\" alt=\"Evo.Pay\" width=\"150\"/\u003e |\n| [Glidewell.io](https://glidewell.io/) | \u003cimg src=\"https://raw.githubusercontent.com/7mind/izumi/develop/doc/microsite/src/main/tut/media/user-logo-glidewell.svg?sanitize=true\" alt=\"Glidewell.io\" width=\"150\"/\u003e |\n| [PITS Global Data Recovery Services](https://pitsdatarecovery.net/) | \u003cimg src=\"https://raw.githubusercontent.com/7mind/izumi/develop/doc/microsite/src/main/tut/media/user-logo-pits.svg?sanitize=true\" alt=\"PITS Global Data Recovery Services\" width=\"150\"/\u003e |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F7mind%2Fizumi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F7mind%2Fizumi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F7mind%2Fizumi/lists"}