{"adoption": {"forks": 115, "observed_at": "2026-08-28T04:03:37.749360+00:00", "stars": 1112}, "canonical_url": "https://ross.abutalabs.com/products/mvi-coroutines-flow", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Play MVI with Kotlin Coroutines Flow | MVI pattern on Android using Kotlin Coroutines Flow | Dagger Hilt DI | Koin DI | SharedFlow | StateFlow | Arrow.kt Android Sample", "domain": ["mobile-development", "android-tools", "developer-tools", "tutorials"], "enriched": true, "function": ["state-management", "developer-tools", "testing"], "health_score": 88, "homepage": "https://github.com/hoc081098", "language": "Kotlin", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["Kotlin-Android-Open-Source/MVI-Coroutines-Flow"], "name": "Kotlin-Android-Open-Source/MVI-Coroutines-Flow", "platform": ["jvm"], "pushed_at": "2026-08-25T13:16:37+00:00", "repo": "Kotlin-Android-Open-Source/MVI-Coroutines-Flow", "stars": 1112, "tags": ["mvi", "coroutines-flow", "clean-architecture", "dagger-hilt", "koin", "arrow-kt", "sharedflow", "stateflow", "unidirectional-data-flow", "sample-app", "android", "mobile"], "topics": ["mvi-coroutines-flow", "kotlin-coroutines-flow", "android-mvi-sample", "android-mvi", "android-mvi-architecture", "android-mvi-flow", "coroutines-flow", "mvi-coroutines-flow-kotlin", "coroutines-flow-mvi", "unidirectional-data-flow", "mvi-clean-architecture", "mvi", "dagger-hilt", "sharedflow", "kotlin-coroutines", "coroutines", "kotlin-android", "arrow-kt", "android-arrow-kt"], "urls": [], "use_cases": ["learn MVI architecture on Android with Kotlin Coroutines Flow", "see how to use SharedFlow and StateFlow in an MVI ViewModel", "example of Clean Architecture with multiple Gradle modules in Kotlin", "compare Dagger Hilt and Koin dependency injection in one project", "functional error handling on Android with Arrow.kt", "reference for unit testing MVI ViewModels and data layers", "understand unidirectional data flow in Android apps"], "what_it_is": "A sample Android application demonstrating the MVI (Model-View-Intent) architecture pattern implemented with Kotlin Coroutines Flow, SharedFlow, and StateFlow. It ships multiple variants covering Clean Architecture, functional programming with Arrow.kt, and dependency injection with both Dagger Hilt and Koin, along with unit tests.", "when_to_avoid": ["you need a production-ready MVI library or framework rather than a sample app", "your project uses RxJava or Java instead of Kotlin Coroutines", "you are not targeting Android"], "when_to_choose": ["you are an Android developer learning or teaching MVI with Coroutines Flow", "you want a working reference combining Clean Architecture, Arrow.kt, and DI frameworks", "you need example unit tests for MVI ViewModels and repository layers"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/mvi-coroutines-flow", "repo": "Kotlin-Android-Open-Source/MVI-Coroutines-Flow", "role": "main", "score": 67}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.749360+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:42:38.841356+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5a50e18bf28adf9f21d1604b9f06c83e271ac634648818c46f1b4dc72bd4abb", "fetched_at": "2026-08-28T04:03:37.749360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin-Android-Open-Source/MVI-Coroutines-Flow"}, {"content_hash": "d6ebaa7d2b768f5826b7ac2133042dbedcc2802bca01c6259c50a2c33f704e06", "fetched_at": "2026-08-29T12:46:19.440833+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/hoc081098"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.749360+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:42:38.841356+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5a50e18bf28adf9f21d1604b9f06c83e271ac634648818c46f1b4dc72bd4abb", "fetched_at": "2026-08-28T04:03:37.749360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin-Android-Open-Source/MVI-Coroutines-Flow"}, {"content_hash": "d6ebaa7d2b768f5826b7ac2133042dbedcc2802bca01c6259c50a2c33f704e06", "fetched_at": "2026-08-29T12:46:19.440833+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/hoc081098"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:42:38.841356+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5a50e18bf28adf9f21d1604b9f06c83e271ac634648818c46f1b4dc72bd4abb", "fetched_at": "2026-08-28T04:03:37.749360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin-Android-Open-Source/MVI-Coroutines-Flow"}, {"content_hash": "d6ebaa7d2b768f5826b7ac2133042dbedcc2802bca01c6259c50a2c33f704e06", "fetched_at": "2026-08-29T12:46:19.440833+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/hoc081098"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.749360+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.749360+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.749360+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:42:38.841356+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5a50e18bf28adf9f21d1604b9f06c83e271ac634648818c46f1b4dc72bd4abb", "fetched_at": "2026-08-28T04:03:37.749360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin-Android-Open-Source/MVI-Coroutines-Flow"}, {"content_hash": "d6ebaa7d2b768f5826b7ac2133042dbedcc2802bca01c6259c50a2c33f704e06", "fetched_at": "2026-08-29T12:46:19.440833+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/hoc081098"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.749360+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.749360+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:42:38.841356+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5a50e18bf28adf9f21d1604b9f06c83e271ac634648818c46f1b4dc72bd4abb", "fetched_at": "2026-08-28T04:03:37.749360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin-Android-Open-Source/MVI-Coroutines-Flow"}, {"content_hash": "d6ebaa7d2b768f5826b7ac2133042dbedcc2802bca01c6259c50a2c33f704e06", "fetched_at": "2026-08-29T12:46:19.440833+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/hoc081098"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.749360+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.749360+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.749360+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:42:38.841356+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5a50e18bf28adf9f21d1604b9f06c83e271ac634648818c46f1b4dc72bd4abb", "fetched_at": "2026-08-28T04:03:37.749360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin-Android-Open-Source/MVI-Coroutines-Flow"}, {"content_hash": "d6ebaa7d2b768f5826b7ac2133042dbedcc2802bca01c6259c50a2c33f704e06", "fetched_at": "2026-08-29T12:46:19.440833+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/hoc081098"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.749360+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.749360+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:42:38.841356+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5a50e18bf28adf9f21d1604b9f06c83e271ac634648818c46f1b4dc72bd4abb", "fetched_at": "2026-08-28T04:03:37.749360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin-Android-Open-Source/MVI-Coroutines-Flow"}, {"content_hash": "d6ebaa7d2b768f5826b7ac2133042dbedcc2802bca01c6259c50a2c33f704e06", "fetched_at": "2026-08-29T12:46:19.440833+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/hoc081098"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:42:38.841356+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5a50e18bf28adf9f21d1604b9f06c83e271ac634648818c46f1b4dc72bd4abb", "fetched_at": "2026-08-28T04:03:37.749360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin-Android-Open-Source/MVI-Coroutines-Flow"}, {"content_hash": "d6ebaa7d2b768f5826b7ac2133042dbedcc2802bca01c6259c50a2c33f704e06", "fetched_at": "2026-08-29T12:46:19.440833+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/hoc081098"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:42:38.841356+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5a50e18bf28adf9f21d1604b9f06c83e271ac634648818c46f1b4dc72bd4abb", "fetched_at": "2026-08-28T04:03:37.749360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin-Android-Open-Source/MVI-Coroutines-Flow"}, {"content_hash": "d6ebaa7d2b768f5826b7ac2133042dbedcc2802bca01c6259c50a2c33f704e06", "fetched_at": "2026-08-29T12:46:19.440833+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/hoc081098"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:42:38.841356+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5a50e18bf28adf9f21d1604b9f06c83e271ac634648818c46f1b4dc72bd4abb", "fetched_at": "2026-08-28T04:03:37.749360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kotlin-Android-Open-Source/MVI-Coroutines-Flow"}, {"content_hash": "d6ebaa7d2b768f5826b7ac2133042dbedcc2802bca01c6259c50a2c33f704e06", "fetched_at": "2026-08-29T12:46:19.440833+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/hoc081098"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2488, "days_push": 8, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 67, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}