{"adoption": {"forks": 1416, "observed_at": "2026-08-28T04:09:51.323662+00:00", "stars": 6912}, "canonical_url": "https://ross.abutalabs.com/products/androidproject", "card": {"archived": false, "artifact_type": "framework", "description": "Android 技术中台，但愿人长久，搬砖不再有", "domain": ["mobile-development", "android-tools", "web-development", "developer-tools"], "enriched": true, "function": ["ui-components", "state-management", "http-client", "developer-tools"], "health_score": 92, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["getActivity/AndroidProject"], "name": "getActivity/AndroidProject", "platform": ["jvm"], "pushed_at": "2026-07-23T12:34:21+00:00", "repo": "getActivity/AndroidProject", "stars": 6912, "tags": ["android-boilerplate", "project-template", "mvp", "mvvm", "mvi", "jetpack-compose", "base-classes", "starter-project", "app-architecture", "android", "mobile"], "topics": ["android", "mvp", "dialog", "glide", "toast", "flutter", "mvvm", "popupwindow", "baseactivity", "recyclerview", "titlebar", "kotlin", "mvi", "jetpack", "compose", "okhttp", "retrofit", "rxjava"], "urls": [], "use_cases": ["start a new android app with a ready-made architecture", "android project template with base activity and base classes", "mvp mvvm mvi architecture example for android", "common dialogs and titlebar components for android", "refactor an old android project onto a clean architecture", "android app skeleton with retrofit okhttp glide integrated"], "what_it_is": "AndroidProject is a mature Android 'technology middle platform' — a pre-built project architecture template with common screens, dialogs, base classes, and integrated libraries (OkHttp, Retrofit, Glide, Jetpack, Compose). It lets developers start new Android apps or refactor old ones without re-building boilerplate architecture, cutting development time roughly in half.", "when_to_avoid": ["you need a small focused library rather than a full project template", "your team already has an established in-house architecture", "you are not building Android applications"], "when_to_choose": ["starting a new Android app and wanting a battle-tested architecture out of the box", "you want pre-built common screens, dialogs, and base classes instead of copying old project code", "you want a template already proven in multiple production company projects"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/androidproject", "repo": "getActivity/AndroidProject", "role": "main", "score": 73}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.323662+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:41:28.218543+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c03bca39233fd12667db480f4f4246307e4604375a64fc3e49b9b1ecb19ee29", "fetched_at": "2026-08-28T04:09:51.323662+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/AndroidProject"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.323662+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:41:28.218543+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c03bca39233fd12667db480f4f4246307e4604375a64fc3e49b9b1ecb19ee29", "fetched_at": "2026-08-28T04:09:51.323662+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/AndroidProject"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:41:28.218543+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c03bca39233fd12667db480f4f4246307e4604375a64fc3e49b9b1ecb19ee29", "fetched_at": "2026-08-28T04:09:51.323662+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/AndroidProject"}], "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:09:51.323662+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.323662+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.323662+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:41:28.218543+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c03bca39233fd12667db480f4f4246307e4604375a64fc3e49b9b1ecb19ee29", "fetched_at": "2026-08-28T04:09:51.323662+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/AndroidProject"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.323662+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.323662+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:41:28.218543+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c03bca39233fd12667db480f4f4246307e4604375a64fc3e49b9b1ecb19ee29", "fetched_at": "2026-08-28T04:09:51.323662+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/AndroidProject"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.323662+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.323662+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.323662+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:41:28.218543+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c03bca39233fd12667db480f4f4246307e4604375a64fc3e49b9b1ecb19ee29", "fetched_at": "2026-08-28T04:09:51.323662+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/AndroidProject"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.323662+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.323662+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:41:28.218543+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c03bca39233fd12667db480f4f4246307e4604375a64fc3e49b9b1ecb19ee29", "fetched_at": "2026-08-28T04:09:51.323662+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/AndroidProject"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:41:28.218543+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c03bca39233fd12667db480f4f4246307e4604375a64fc3e49b9b1ecb19ee29", "fetched_at": "2026-08-28T04:09:51.323662+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/AndroidProject"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:41:28.218543+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c03bca39233fd12667db480f4f4246307e4604375a64fc3e49b9b1ecb19ee29", "fetched_at": "2026-08-28T04:09:51.323662+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/AndroidProject"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:41:28.218543+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c03bca39233fd12667db480f4f4246307e4604375a64fc3e49b9b1ecb19ee29", "fetched_at": "2026-08-28T04:09:51.323662+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/AndroidProject"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 94, "longevity": 100, "rhythm": 30}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2871, "days_push": 41, "days_rel": 253, "gap_med": null, "n_releases_24m": 1}, "score": 73, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}