{"adoption": {"forks": 89, "observed_at": "2026-08-28T04:03:21.539235+00:00", "stars": 1045}, "canonical_url": "https://ross.abutalabs.com/products/hoplite", "card": {"archived": false, "artifact_type": "library", "description": "A boilerplate-free Kotlin config library for loading configuration files as data classes", "domain": ["developer-tools", "backend"], "enriched": true, "function": ["configuration-management", "serialization", "json", "yaml"], "health_score": 95, "homepage": null, "language": "Kotlin", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["sksamuel/hoplite"], "name": "sksamuel/hoplite", "platform": ["jvm", "cross-platform"], "pushed_at": "2026-07-27T04:34:58+00:00", "repo": "sksamuel/hoplite", "stars": 1045, "tags": ["kotlin", "config-loader", "data-classes", "hocon", "toml", "type-safe-config", "secrets-manager", "environment-variables", "jvm"], "topics": ["kotlin", "configuration", "yaml", "config", "library", "config-loader"], "urls": [], "use_cases": ["load yaml config into kotlin data classes", "type-safe configuration loading for jvm apps", "layer environment-specific config files over defaults", "resolve secrets from aws secrets manager in config", "fail fast on missing or invalid config values", "reload configuration at runtime", "override config values via environment variables"], "what_it_is": "Hoplite is a boilerplate-free Kotlin library for loading configuration files into typesafe data classes. It supports multiple formats (YAML, JSON, TOML, HOCON, properties), cascading config layers, environment variable and system property overrides, and detailed error reporting.", "when_to_avoid": ["you are not on the JVM or not using Kotlin", "you need config loading at compile time rather than runtime", "you only need simple key-value properties without type conversion"], "when_to_choose": ["you write Kotlin/JVM apps and want config mapped directly to data classes with no boilerplate", "you need to mix multiple config formats or stack cascading config files", "you want clear, detailed errors for missing or mistyped config values", "you need preprocessors for secrets managers or reloadable config"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/hoplite", "repo": "sksamuel/hoplite", "role": "main", "score": 90}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:21.539235+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:02:08.670972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba25985cde1c7cc240535e63e6b528dbcc56e8e91cde1e2beaa61a41906e4d21", "fetched_at": "2026-08-28T04:03:21.539235+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sksamuel/hoplite"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:21.539235+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:02:08.670972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba25985cde1c7cc240535e63e6b528dbcc56e8e91cde1e2beaa61a41906e4d21", "fetched_at": "2026-08-28T04:03:21.539235+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sksamuel/hoplite"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:02:08.670972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba25985cde1c7cc240535e63e6b528dbcc56e8e91cde1e2beaa61a41906e4d21", "fetched_at": "2026-08-28T04:03:21.539235+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sksamuel/hoplite"}], "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:21.539235+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:21.539235+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:21.539235+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:02:08.670972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba25985cde1c7cc240535e63e6b528dbcc56e8e91cde1e2beaa61a41906e4d21", "fetched_at": "2026-08-28T04:03:21.539235+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sksamuel/hoplite"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:21.539235+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:21.539235+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:02:08.670972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba25985cde1c7cc240535e63e6b528dbcc56e8e91cde1e2beaa61a41906e4d21", "fetched_at": "2026-08-28T04:03:21.539235+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sksamuel/hoplite"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:21.539235+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:21.539235+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:21.539235+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:02:08.670972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba25985cde1c7cc240535e63e6b528dbcc56e8e91cde1e2beaa61a41906e4d21", "fetched_at": "2026-08-28T04:03:21.539235+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sksamuel/hoplite"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:21.539235+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:21.539235+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:02:08.670972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba25985cde1c7cc240535e63e6b528dbcc56e8e91cde1e2beaa61a41906e4d21", "fetched_at": "2026-08-28T04:03:21.539235+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sksamuel/hoplite"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:02:08.670972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba25985cde1c7cc240535e63e6b528dbcc56e8e91cde1e2beaa61a41906e4d21", "fetched_at": "2026-08-28T04:03:21.539235+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sksamuel/hoplite"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:02:08.670972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba25985cde1c7cc240535e63e6b528dbcc56e8e91cde1e2beaa61a41906e4d21", "fetched_at": "2026-08-28T04:03:21.539235+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sksamuel/hoplite"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:02:08.670972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba25985cde1c7cc240535e63e6b528dbcc56e8e91cde1e2beaa61a41906e4d21", "fetched_at": "2026-08-28T04:03:21.539235+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sksamuel/hoplite"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 94, "longevity": 100, "rhythm": 78}, "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": 2662, "days_push": 37, "days_rel": 150, "gap_med": 9, "n_releases_24m": 8}, "score": 90, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}