{"adoption": {"forks": 623, "observed_at": "2026-08-28T04:07:10.220376+00:00", "stars": 2685}, "canonical_url": "https://ross.abutalabs.com/products/t-mvp", "card": {"archived": false, "artifact_type": "framework", "description": "Android AOP Architecture by Apt, AspectJ, Javassisit, based on Realm+Databinding+MVP+Retrofit+Rxjava2", "domain": ["mobile-development", "android-tools", "web-development"], "enriched": true, "function": ["web-framework", "middleware", "routing", "state-management", "orm", "http-client", "developer-tools"], "health_score": 20, "homepage": null, "language": "Java", "license": null, "license_family": "other", "maturity": "abandoned", "member_repos": ["north2016/T-MVP"], "name": "north2016/T-MVP", "platform": ["jvm"], "pushed_at": "2018-12-27T01:35:38+00:00", "repo": "north2016/T-MVP", "stars": 2685, "tags": ["aop", "aspectj", "apt", "javassist", "mvp-architecture", "databinding", "realm", "retrofit", "rxjava2", "material-design", "event-bus", "router", "android", "mobile"], "topics": ["aop", "aop-architecture", "aspectj", "javassist", "apt", "realm", "mvp", "material-design", "databinding", "router", "gradle", "rxjava", "mvp-architecture", "retrofit", "okbus", "rxjava2"], "urls": [], "use_cases": ["build android apps with mvp architecture and less boilerplate", "apply aop techniques like aspectj and apt in android development", "generate retrofit api factories automatically with apt", "implement a global router for android page navigation", "replace viewholders and adapters with databinding", "intercept login and runtime permissions with aspect slices"], "what_it_is": "T-MVP is an Android AOP-based architecture framework combining APT, AspectJ, and Javassist with Realm, DataBinding, MVP, Retrofit, and RxJava2. It drastically reduces boilerplate by generating API factories, routers, and event buses at compile time and using aspect-oriented slices for permissions, login checks, and caching.", "when_to_avoid": ["you need a maintained framework with recent AndroidX support", "your project uses modern Android tooling incompatible with old gradle/AS 2.2.2", "you need a permissively licensed dependency (no license is provided)"], "when_to_choose": ["you want a full AOP+MVP architecture reference for Android", "you prefer annotation processing over reflection-heavy frameworks", "you want to study APT, AspectJ, and Javassist techniques in a real app"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/t-mvp", "repo": "north2016/T-MVP", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:10.220376+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:17:50.143803+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3baa8f45d0a1ad46d1a93054ef2d94adf59460f4adf6a2fa860663cde98fad5a", "fetched_at": "2026-08-28T04:07:10.220376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/north2016/T-MVP"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:10.220376+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:17:50.143803+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3baa8f45d0a1ad46d1a93054ef2d94adf59460f4adf6a2fa860663cde98fad5a", "fetched_at": "2026-08-28T04:07:10.220376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/north2016/T-MVP"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:17:50.143803+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3baa8f45d0a1ad46d1a93054ef2d94adf59460f4adf6a2fa860663cde98fad5a", "fetched_at": "2026-08-28T04:07:10.220376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/north2016/T-MVP"}], "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:07:10.220376+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:10.220376+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:10.220376+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:17:50.143803+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3baa8f45d0a1ad46d1a93054ef2d94adf59460f4adf6a2fa860663cde98fad5a", "fetched_at": "2026-08-28T04:07:10.220376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/north2016/T-MVP"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:10.220376+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:10.220376+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:17:50.143803+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3baa8f45d0a1ad46d1a93054ef2d94adf59460f4adf6a2fa860663cde98fad5a", "fetched_at": "2026-08-28T04:07:10.220376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/north2016/T-MVP"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:10.220376+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:10.220376+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:10.220376+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:17:50.143803+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3baa8f45d0a1ad46d1a93054ef2d94adf59460f4adf6a2fa860663cde98fad5a", "fetched_at": "2026-08-28T04:07:10.220376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/north2016/T-MVP"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:10.220376+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:10.220376+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:17:50.143803+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3baa8f45d0a1ad46d1a93054ef2d94adf59460f4adf6a2fa860663cde98fad5a", "fetched_at": "2026-08-28T04:07:10.220376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/north2016/T-MVP"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:17:50.143803+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3baa8f45d0a1ad46d1a93054ef2d94adf59460f4adf6a2fa860663cde98fad5a", "fetched_at": "2026-08-28T04:07:10.220376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/north2016/T-MVP"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:17:50.143803+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3baa8f45d0a1ad46d1a93054ef2d94adf59460f4adf6a2fa860663cde98fad5a", "fetched_at": "2026-08-28T04:07:10.220376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/north2016/T-MVP"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:17:50.143803+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3baa8f45d0a1ad46d1a93054ef2d94adf59460f4adf6a2fa860663cde98fad5a", "fetched_at": "2026-08-28T04:07:10.220376+00:00", "kind": "readme", "missing": false, "url": "https://github.com/north2016/T-MVP"}], "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": 3768, "days_push": 2807, "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}}