{"adoption": {"forks": 164, "observed_at": "2026-08-28T04:05:21.837512+00:00", "stars": 1683}, "canonical_url": "https://ross.abutalabs.com/products/effectiveandroid", "card": {"archived": false, "artifact_type": "learning-resource", "description": "This sample project shows how to apply MVP and Clean architecture on an Android app", "domain": ["android-tools", "mobile-development", "tutorials"], "enriched": true, "function": ["developer-tools"], "health_score": 20, "homepage": null, "language": "Java", "license": null, "license_family": "other", "maturity": "abandoned", "member_repos": ["rallat/EffectiveAndroid"], "name": "rallat/EffectiveAndroid", "platform": ["jvm"], "pushed_at": "2016-03-25T20:43:01+00:00", "repo": "rallat/EffectiveAndroid", "stars": 1683, "tags": ["mvp-architecture", "clean-architecture", "sample-project", "android-app-architecture", "android"], "topics": [], "urls": [], "use_cases": ["learn MVP architecture for Android apps", "see how Clean architecture applies to Android", "find a reference project for structuring an Android codebase", "compare MVP vs Clean architecture in practice", "study layered architecture examples in Java Android"], "what_it_is": "A sample Android project demonstrating how to apply MVP and Clean architecture patterns to an Android app, with separate branches for each approach. It serves as an educational reference for structuring Android applications.", "when_to_avoid": ["you need a production-ready library or framework", "you work in Kotlin with modern Android Jetpack practices", "you need actively maintained code compatible with current Android SDK versions"], "when_to_choose": ["you want concrete Java code examples of MVP or Clean architecture on Android", "you are teaching or learning Android app architecture patterns", "you need a starting skeleton to compare architectural approaches"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/effectiveandroid", "repo": "rallat/EffectiveAndroid", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.837512+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.249777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7fc38ac9d0dd3df58aae5aa12ed04f472cef11142ad1639b3761a2edc2225b2f", "fetched_at": "2026-08-28T04:05:21.837512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rallat/EffectiveAndroid"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.837512+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.249777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7fc38ac9d0dd3df58aae5aa12ed04f472cef11142ad1639b3761a2edc2225b2f", "fetched_at": "2026-08-28T04:05:21.837512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rallat/EffectiveAndroid"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.249777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7fc38ac9d0dd3df58aae5aa12ed04f472cef11142ad1639b3761a2edc2225b2f", "fetched_at": "2026-08-28T04:05:21.837512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rallat/EffectiveAndroid"}], "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:05:21.837512+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.837512+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.837512+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.249777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7fc38ac9d0dd3df58aae5aa12ed04f472cef11142ad1639b3761a2edc2225b2f", "fetched_at": "2026-08-28T04:05:21.837512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rallat/EffectiveAndroid"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.837512+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.837512+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.249777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7fc38ac9d0dd3df58aae5aa12ed04f472cef11142ad1639b3761a2edc2225b2f", "fetched_at": "2026-08-28T04:05:21.837512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rallat/EffectiveAndroid"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.837512+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.837512+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.837512+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.249777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7fc38ac9d0dd3df58aae5aa12ed04f472cef11142ad1639b3761a2edc2225b2f", "fetched_at": "2026-08-28T04:05:21.837512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rallat/EffectiveAndroid"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.837512+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.837512+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.249777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7fc38ac9d0dd3df58aae5aa12ed04f472cef11142ad1639b3761a2edc2225b2f", "fetched_at": "2026-08-28T04:05:21.837512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rallat/EffectiveAndroid"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.249777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7fc38ac9d0dd3df58aae5aa12ed04f472cef11142ad1639b3761a2edc2225b2f", "fetched_at": "2026-08-28T04:05:21.837512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rallat/EffectiveAndroid"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.249777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7fc38ac9d0dd3df58aae5aa12ed04f472cef11142ad1639b3761a2edc2225b2f", "fetched_at": "2026-08-28T04:05:21.837512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rallat/EffectiveAndroid"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.249777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7fc38ac9d0dd3df58aae5aa12ed04f472cef11142ad1639b3761a2edc2225b2f", "fetched_at": "2026-08-28T04:05:21.837512+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rallat/EffectiveAndroid"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4046, "days_push": 3813, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}