{"adoption": {"forks": 745, "observed_at": "2026-08-28T04:07:49.629852+00:00", "stars": 3217}, "canonical_url": "https://ross.abutalabs.com/products/ycapptool", "card": {"archived": false, "artifact_type": "learning-resource", "description": "🔥🔥🔥 组件化综合案例，组件分层为：基础公共组件，功能组件，业务组件，主工程。每一层组件的建设，很详细的工程案例，很全面的一个组件化实践案例。一个超级综合案例！", "domain": ["mobile-development", "developer-tools", "tutorials", "cross-platform"], "enriched": true, "function": ["developer-tools", "middleware", "routing", "gui"], "health_score": 20, "homepage": null, "language": "Java", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["yangchong211/YCAppTool"], "name": "yangchong211/YCAppTool", "platform": ["jvm"], "pushed_at": "2024-04-17T01:44:47+00:00", "repo": "yangchong211/YCAppTool", "stars": 3217, "tags": ["android-componentization", "modular-architecture", "sample-project", "app-architecture", "decoupling", "chinese-documentation", "android", "mobile"], "topics": [], "urls": [], "use_cases": ["learn how to componentize a large android app", "split a monolithic android project into modules", "understand component communication and routing in android", "reduce build time by developing modules independently", "build reusable shared component libraries across multiple apps", "study android app architecture layering best practices", "avoid common pitfalls when refactoring to componentized architecture"], "what_it_is": "A comprehensive Android componentization (modularization) practice case study and demo project, structured into layers: base common components, functional components, business components, and the main shell app. It documents the full process of transforming a monolithic Android app into a component-based architecture, including architecture diagrams, step-by-step practices, inter-component communication, and pitfalls.", "when_to_avoid": ["you need a production-ready library to drop into your project rather than a learning demo", "you work on iOS, Flutter, or non-Android platforms", "you need a small, focused utility rather than a large educational sample project", "you require a licensed open-source component (the repo has no license)"], "when_to_choose": ["you are an Android developer planning or learning componentization of a large app", "you want a detailed, practical Chinese-language reference with working demo code", "you need to decouple business modules and enable parallel team development", "you want to build reusable base/functional component libraries for multiple apps"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ycapptool", "repo": "yangchong211/YCAppTool", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:49.629852+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:44:55.442796+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a2e1e1bf90d38578f9749b2d2470125d554b79c593ba25025e545c1c0973a2c3", "fetched_at": "2026-08-28T04:07:49.629852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCAppTool"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:49.629852+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:44:55.442796+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a2e1e1bf90d38578f9749b2d2470125d554b79c593ba25025e545c1c0973a2c3", "fetched_at": "2026-08-28T04:07:49.629852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCAppTool"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:44:55.442796+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a2e1e1bf90d38578f9749b2d2470125d554b79c593ba25025e545c1c0973a2c3", "fetched_at": "2026-08-28T04:07:49.629852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCAppTool"}], "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:49.629852+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:49.629852+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:49.629852+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:44:55.442796+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a2e1e1bf90d38578f9749b2d2470125d554b79c593ba25025e545c1c0973a2c3", "fetched_at": "2026-08-28T04:07:49.629852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCAppTool"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:49.629852+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:49.629852+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:44:55.442796+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a2e1e1bf90d38578f9749b2d2470125d554b79c593ba25025e545c1c0973a2c3", "fetched_at": "2026-08-28T04:07:49.629852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCAppTool"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:49.629852+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:49.629852+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:49.629852+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:44:55.442796+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a2e1e1bf90d38578f9749b2d2470125d554b79c593ba25025e545c1c0973a2c3", "fetched_at": "2026-08-28T04:07:49.629852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCAppTool"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:49.629852+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:49.629852+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:44:55.442796+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a2e1e1bf90d38578f9749b2d2470125d554b79c593ba25025e545c1c0973a2c3", "fetched_at": "2026-08-28T04:07:49.629852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCAppTool"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:44:55.442796+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a2e1e1bf90d38578f9749b2d2470125d554b79c593ba25025e545c1c0973a2c3", "fetched_at": "2026-08-28T04:07:49.629852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCAppTool"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:44:55.442796+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a2e1e1bf90d38578f9749b2d2470125d554b79c593ba25025e545c1c0973a2c3", "fetched_at": "2026-08-28T04:07:49.629852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCAppTool"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:44:55.442796+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a2e1e1bf90d38578f9749b2d2470125d554b79c593ba25025e545c1c0973a2c3", "fetched_at": "2026-08-28T04:07:49.629852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yangchong211/YCAppTool"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3261, "days_push": 869, "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}}