A pragmatic lightweight dependency injection framework for Kotlin developers.
Written in pure Kotlin, using functional resolution only: no proxy, no code generation, no reflection.
Koin is a DSL, a light container and a pragmatic API
Official Website 👉 https://insert-koin.io
- Follow us on Twitter for latest news: @insertkoin_io
 - Koin developers on Medium: koin developers hub
 
Documentation:
Any question about Koin usage?
- Come talk on slack #koin channel
 - Post your question on Stackoverflow - #koin tag
 
Online resources about Koin - Talking about Koin
Found a bug or a problem on a specific feature? Open an issue on Github issues
Want to help or share a proposal about Koin? problem on a specific feature?
- Open an issue to explain the issue you want to solve Open an issue
 - Come talk on slack #koin-dev channel
 - After discussion to validate your ideas, you can open a PR or even a draft PR if the contribution is a big one Current PRs
 
Additional readings about basic setup: https://github.com/InsertKoinIO/koin/blob/master/CONTRIBUTING.adoc
// latest stable
koin_version = '2.0.1'
// latest unstable
koin_version = '2.1.0-beta-1'Check that you have the jcenter repository.
// Add Jcenter to your repositories if needed
repositories {
	jcenter()    
}Pick one of your Koin dependency:
// Koin for Kotlin
implementation "org.koin:koin-core:$koin_version"
// Koin extended & experimental features
implementation "org.koin:koin-core-ext:$koin_version"
// Koin for Unit tests
testImplementation "org.koin:koin-test:$koin_version"
// Koin for Java developers
implementation "org.koin:koin-java:$koin_version"// Koin for Android
implementation "org.koin:koin-android:$koin_version"
// Koin Android Scope features
implementation "org.koin:koin-android-scope:$koin_version"
// Koin Android ViewModel features
implementation "org.koin:koin-android-viewmodel:$koin_version"
// Koin Android Experimental features
implementation "org.koin:koin-android-ext:$koin_version"// Koin AndroidX Scope features
implementation "org.koin:koin-androidx-scope:$koin_version"
// Koin AndroidX ViewModel features
implementation "org.koin:koin-androidx-viewmodel:$koin_version"
// Koin AndroidX Fragment features
implementation "org.koin:koin-androidx-fragment:$koin_version"
// Koin AndroidX Experimental features
implementation "org.koin:koin-androidx-ext:$koin_version"// Koin for Ktor Kotlin
implementation "org.koin:koin-ktor:$koin_version"Write with the Koin DSL what you need to assemble:
// Given some classes 
class Controller(val service : BusinessService) 
class BusinessService() 
// just declare it 
val myModule = module { 
  single { Controller(get()) } 
  single { BusinessService() } 
} Use the startKoin() function to start Koin in your application.
In a Kotlin app:
fun main(vararg args : String) { 
  // start Koin!
  startKoin {
    // your modules
    modules(myModule)
  }
} In an Android app:
class MyApplication : Application() {
  override fun onCreate(){
    super.onCreate()
    // start Koin!
    startKoin {
      // Android context
      androidContext(this@MyApplication)
      // modules
      modules(myModule)
    }
  } 
} - Dagger is dead. Long live Koin
 - Testing a Koin application with KotlinTest
 - Ready for Koin 2.0
 - Migration from Dagger2 to Koin
 - From Dagger to Koin, a step by step migration guide
 - Koin in Feature Modules Project
 - A brief look at Koin on Android
 - Bye bye Dagger
 - Testing with Koin
 - Painless Android testing with Room & Koin
 - Unlock your Android ViewModel power with Koin
 - Using dependency injection with Koin
 - Koin + Spark = ❤️
 - Push SparkJava to the next level (Kotlin Weekly issue 73, DZone.com )
 - When Koin met Ktor ... (Kotlin Weekly issue 72)
 - Android Dependency Injection – Why we moved from Dagger 2 to Koin?
 - Moving from Dagger to Koin - Simplify your Android development - (Kotlin Weekly issue 66 & Android Weekly issue 282)
 - Kotlin Weekly #64
 - Insert Koin for dependency injection
 - Better dependency injection for Android
 
- Dependency Injection from zero to hero with Koin, Kotliners 2019 & Budapest, Hungary
 - Dependency Injection from zero to hero with Koin, AndroidMakers 2019 & Paris, France
 - Simplify your Android development with Koin - Mobilization @ Lodz, Poland
 - Talking Kotlin - Dependency injection with Koin
 - L'injection de poireaux avec Koin - AndroidLeaks ep42 (French)
 - Insert Koin. Mobile Fest 2018, Kiev, Urkaine (Russian)
 
- Ready for Koin 2.0
 - News from the trenches, What's next for Koin?
 - Koin 1.0.0 Unleashed
 - Opening Koin 1.0.0 Beta
 - On the road to Koin 1.0
 - Koin 0.9.2 — Maintenance fixes, new branding, roadmap for 1.0.0 & some other nice announces
 - Koin 0.9.1 - Bug fixes & Improvments
 - Koin 0.9.0 - Getting close to stable
 - Unlock your Android ViewModel power with Koin
 - koin 0.8.2 Improvements bugfixes and crash fix
 - Koin release 0.8.0
 
This project exists thanks to all the people who contribute. [Contribute].
Thank you to all our backers! 🙏 [Become a backer]
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
