{"adoption": {"forks": 363, "observed_at": "2026-08-28T04:08:11.459741+00:00", "stars": 3602}, "canonical_url": "https://ross.abutalabs.com/products/dotsindicator", "card": {"archived": false, "artifact_type": "library", "description": "Dots indicators for Android ViewPager and Compose", "domain": ["mobile-development", "android-tools", "web-design"], "enriched": true, "function": ["ui-components", "animation"], "health_score": 78, "homepage": null, "language": "Kotlin", "license": "Apache-2.0", "license_family": "permissive", "maturity": "stable", "member_repos": ["tommybuonomo/dotsindicator"], "name": "tommybuonomo/dotsindicator", "platform": ["jvm"], "pushed_at": "2026-08-10T14:50:51+00:00", "repo": "tommybuonomo/dotsindicator", "stars": 3602, "tags": ["viewpager", "jetpack-compose", "dots-indicator", "material-design", "pager", "android"], "topics": ["dots", "indicator", "android", "android-library", "dots-indicator", "viewpager", "viewpager-indicator", "material-design", "kotlin", "kotlin-android", "compose"], "urls": [], "use_cases": ["add a dots indicator to an Android ViewPager", "show page position in a Jetpack Compose Pager", "create an onboarding carousel with animated dots", "customize indicator styles like worm or spring animations", "add a material design page indicator to an Android app"], "what_it_is": "An Android library that renders animated dots indicators for ViewPagers and Jetpack Compose pagers. It supports four indicator styles (Shift, Spring, Worm, Balloon) and works with both classic XML views and Compose.", "when_to_avoid": ["you need indicators for non-Android platforms", "you want tab layouts with text labels rather than dots", "your project does not use ViewPagers or Compose pagers"], "when_to_choose": ["you need a polished, animated page indicator for Android ViewPager or Compose Pager", "you want a mature, widely used library with Maven Central distribution", "you need both XML view and Compose support in one artifact"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/dotsindicator", "repo": "tommybuonomo/dotsindicator", "role": "main", "score": 76}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.459741+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:33:44.486059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c2cbcc664b8ea8b263b6a28058e3e72929497634385794ce0e367a43504aef4d", "fetched_at": "2026-08-28T04:08:11.459741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tommybuonomo/dotsindicator"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.459741+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:33:44.486059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c2cbcc664b8ea8b263b6a28058e3e72929497634385794ce0e367a43504aef4d", "fetched_at": "2026-08-28T04:08:11.459741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tommybuonomo/dotsindicator"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:33:44.486059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c2cbcc664b8ea8b263b6a28058e3e72929497634385794ce0e367a43504aef4d", "fetched_at": "2026-08-28T04:08:11.459741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tommybuonomo/dotsindicator"}], "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:08:11.459741+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.459741+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.459741+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:33:44.486059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c2cbcc664b8ea8b263b6a28058e3e72929497634385794ce0e367a43504aef4d", "fetched_at": "2026-08-28T04:08:11.459741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tommybuonomo/dotsindicator"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.459741+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.459741+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:33:44.486059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c2cbcc664b8ea8b263b6a28058e3e72929497634385794ce0e367a43504aef4d", "fetched_at": "2026-08-28T04:08:11.459741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tommybuonomo/dotsindicator"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.459741+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.459741+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.459741+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:33:44.486059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c2cbcc664b8ea8b263b6a28058e3e72929497634385794ce0e367a43504aef4d", "fetched_at": "2026-08-28T04:08:11.459741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tommybuonomo/dotsindicator"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.459741+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.459741+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:33:44.486059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c2cbcc664b8ea8b263b6a28058e3e72929497634385794ce0e367a43504aef4d", "fetched_at": "2026-08-28T04:08:11.459741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tommybuonomo/dotsindicator"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:33:44.486059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c2cbcc664b8ea8b263b6a28058e3e72929497634385794ce0e367a43504aef4d", "fetched_at": "2026-08-28T04:08:11.459741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tommybuonomo/dotsindicator"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:33:44.486059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c2cbcc664b8ea8b263b6a28058e3e72929497634385794ce0e367a43504aef4d", "fetched_at": "2026-08-28T04:08:11.459741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tommybuonomo/dotsindicator"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:33:44.486059+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c2cbcc664b8ea8b263b6a28058e3e72929497634385794ce0e367a43504aef4d", "fetched_at": "2026-08-28T04:08:11.459741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tommybuonomo/dotsindicator"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3342, "days_push": 23, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 76, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}