{"adoption": {"forks": 224, "observed_at": "2026-08-28T04:03:44.376394+00:00", "stars": 1140}, "canonical_url": "https://ross.abutalabs.com/products/xframe", "card": {"archived": false, "artifact_type": "framework", "description": "XFrame - Android快速开发框架：主要是封装有Http网络隔离框架、日志、缓存、加载等待、toast、页面状态布局管理、权限、自定义view等常用的集合框架，减少开发成本，提高软件体验！", "domain": ["mobile-development", "android-tools", "developer-tools"], "enriched": true, "function": ["http-client", "logging", "caching", "ui-components", "state-management"], "health_score": 20, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["youth5201314/XFrame"], "name": "youth5201314/XFrame", "platform": [], "pushed_at": "2021-05-18T06:11:50+00:00", "repo": "youth5201314/XFrame", "stars": 1140, "tags": ["android-framework", "http-abstraction", "permission-handling", "recyclerview-adapter", "status-bar", "toast", "loading-states", "utility-library", "android"], "topics": ["xframe", "xrecyclerviewadapter", "xlog", "xloadingview", "xpermission", "xloadingdialog", "xcache", "xwebview", "xtoast", "xstatusbar"], "urls": [], "use_cases": ["simplify android app development with a utility framework", "switch http networking libraries without refactoring code", "manage loading, empty, error, and no-network page states", "handle android runtime permissions easily", "add headers, footers, and load-more to recyclerview adapters", "cache strings, bitmaps, and serializable objects locally", "show pretty logs for , xml, map, and list data", "implement immersive status bar and toasts quickly"], "what_it_is": "XFrame is an Android rapid development framework that bundles commonly used utilities: an HTTP request abstraction layer, logging, caching, loading dialogs, page state views, permission handling, RecyclerView adapters, status bar, toasts, and custom views. It aims to reduce boilerplate and development cost by providing compatible, pre-integrated modules instead of forcing developers to pick and wire separate libraries.", "when_to_avoid": ["building a large modern app where you prefer best-in-class individual libraries like Retrofit, OkHttp, or Coil", "needing Kotlin-first or Jetpack Compose support", "requiring actively maintained dependencies; the latest release is from 2021"], "when_to_choose": ["starting a new small-to-medium Android app and wanting common utilities pre-wired", "wanting to decouple networking code from a specific http library", "needing a consistent set of logging, caching, toast, and loading-state tools in one dependency"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/xframe", "repo": "youth5201314/XFrame", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.376394+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:35:49.430686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00a37a99cc17b2a2785e2a04f9e4ebef10e57653484def32558e258b6fa3e6ea", "fetched_at": "2026-08-28T04:03:44.376394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/youth5201314/XFrame"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.376394+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:35:49.430686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00a37a99cc17b2a2785e2a04f9e4ebef10e57653484def32558e258b6fa3e6ea", "fetched_at": "2026-08-28T04:03:44.376394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/youth5201314/XFrame"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:35:49.430686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00a37a99cc17b2a2785e2a04f9e4ebef10e57653484def32558e258b6fa3e6ea", "fetched_at": "2026-08-28T04:03:44.376394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/youth5201314/XFrame"}], "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:44.376394+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.376394+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.376394+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:35:49.430686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00a37a99cc17b2a2785e2a04f9e4ebef10e57653484def32558e258b6fa3e6ea", "fetched_at": "2026-08-28T04:03:44.376394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/youth5201314/XFrame"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.376394+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.376394+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:35:49.430686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00a37a99cc17b2a2785e2a04f9e4ebef10e57653484def32558e258b6fa3e6ea", "fetched_at": "2026-08-28T04:03:44.376394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/youth5201314/XFrame"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.376394+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.376394+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.376394+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:35:49.430686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00a37a99cc17b2a2785e2a04f9e4ebef10e57653484def32558e258b6fa3e6ea", "fetched_at": "2026-08-28T04:03:44.376394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/youth5201314/XFrame"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.376394+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.376394+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:35:49.430686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00a37a99cc17b2a2785e2a04f9e4ebef10e57653484def32558e258b6fa3e6ea", "fetched_at": "2026-08-28T04:03:44.376394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/youth5201314/XFrame"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:35:49.430686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00a37a99cc17b2a2785e2a04f9e4ebef10e57653484def32558e258b6fa3e6ea", "fetched_at": "2026-08-28T04:03:44.376394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/youth5201314/XFrame"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:35:49.430686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00a37a99cc17b2a2785e2a04f9e4ebef10e57653484def32558e258b6fa3e6ea", "fetched_at": "2026-08-28T04:03:44.376394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/youth5201314/XFrame"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:35:49.430686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00a37a99cc17b2a2785e2a04f9e4ebef10e57653484def32558e258b6fa3e6ea", "fetched_at": "2026-08-28T04:03:44.376394+00:00", "kind": "readme", "missing": false, "url": "https://github.com/youth5201314/XFrame"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "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": 3489, "days_push": 1933, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}