{"adoption": {"forks": 118, "observed_at": "2026-08-28T04:05:02.917109+00:00", "stars": 1554}, "canonical_url": "https://ross.abutalabs.com/products/jmolecules", "card": {"archived": false, "artifact_type": "library", "description": "Libraries to help developers express architectural abstractions in Java code", "domain": ["developer-tools", "web-development"], "enriched": true, "function": ["middleware", "developer-tools"], "health_score": 75, "homepage": "http://jmolecules.org", "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["xmolecules/jmolecules"], "name": "xmolecules/jmolecules", "platform": ["jvm"], "pushed_at": "2026-02-03T13:05:16+00:00", "repo": "xmolecules/jmolecules", "stars": 1554, "tags": ["domain-driven-design", "architecture", "annotations", "code-generation", "architecture-verification"], "topics": ["architecture", "java", "domain-driven-design"], "urls": [], "use_cases": ["express DDD concepts like entities, value objects and aggregates in Java code", "mark bounded contexts and modules in a codebase", "generate JPA or other technical boilerplate from architectural annotations", "verify that code follows the intended architecture rules", "document software architecture directly in source code", "write domain models in plain Java without framework dependencies"], "what_it_is": "jMolecules is a set of Java libraries that let developers explicitly express architectural and domain-driven-design concepts (entities, aggregates, bounded contexts, layered architecture) directly in plain Java code via annotations and types. It also supports generating technical boilerplate and verifying/documenting the architecture from those declarations.", "when_to_avoid": ["you don't use DDD or layered architecture patterns", "you need a runtime framework rather than compile-time abstractions", "your team won't adopt annotation discipline"], "when_to_choose": ["you practice domain-driven design in Java and want concepts explicit in code", "you want architecture rules enforced via static analysis or ArchUnit rules", "you want to reduce boilerplate by deriving technical code from architectural intent"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/jmolecules", "repo": "xmolecules/jmolecules", "role": "main", "score": 58}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.917109+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:30:07.227568+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3d1cf41f465df1c191ca89a3d04d925a6431495964be1886f3cf05bc3d9f445", "fetched_at": "2026-08-29T11:30:22.557163+00:00", "kind": "homepage", "missing": false, "url": "http://jmolecules.org"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.917109+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:30:07.227568+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3d1cf41f465df1c191ca89a3d04d925a6431495964be1886f3cf05bc3d9f445", "fetched_at": "2026-08-29T11:30:22.557163+00:00", "kind": "homepage", "missing": false, "url": "http://jmolecules.org"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:30:07.227568+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3d1cf41f465df1c191ca89a3d04d925a6431495964be1886f3cf05bc3d9f445", "fetched_at": "2026-08-29T11:30:22.557163+00:00", "kind": "homepage", "missing": false, "url": "http://jmolecules.org"}], "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:05:02.917109+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.917109+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.917109+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:30:07.227568+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3d1cf41f465df1c191ca89a3d04d925a6431495964be1886f3cf05bc3d9f445", "fetched_at": "2026-08-29T11:30:22.557163+00:00", "kind": "homepage", "missing": false, "url": "http://jmolecules.org"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.917109+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.917109+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:30:07.227568+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3d1cf41f465df1c191ca89a3d04d925a6431495964be1886f3cf05bc3d9f445", "fetched_at": "2026-08-29T11:30:22.557163+00:00", "kind": "homepage", "missing": false, "url": "http://jmolecules.org"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.917109+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.917109+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.917109+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:30:07.227568+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3d1cf41f465df1c191ca89a3d04d925a6431495964be1886f3cf05bc3d9f445", "fetched_at": "2026-08-29T11:30:22.557163+00:00", "kind": "homepage", "missing": false, "url": "http://jmolecules.org"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.917109+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.917109+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:30:07.227568+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3d1cf41f465df1c191ca89a3d04d925a6431495964be1886f3cf05bc3d9f445", "fetched_at": "2026-08-29T11:30:22.557163+00:00", "kind": "homepage", "missing": false, "url": "http://jmolecules.org"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:30:07.227568+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3d1cf41f465df1c191ca89a3d04d925a6431495964be1886f3cf05bc3d9f445", "fetched_at": "2026-08-29T11:30:22.557163+00:00", "kind": "homepage", "missing": false, "url": "http://jmolecules.org"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:30:07.227568+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3d1cf41f465df1c191ca89a3d04d925a6431495964be1886f3cf05bc3d9f445", "fetched_at": "2026-08-29T11:30:22.557163+00:00", "kind": "homepage", "missing": false, "url": "http://jmolecules.org"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:30:07.227568+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3d1cf41f465df1c191ca89a3d04d925a6431495964be1886f3cf05bc3d9f445", "fetched_at": "2026-08-29T11:30:22.557163+00:00", "kind": "homepage", "missing": false, "url": "http://jmolecules.org"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 65, "longevity": 100, "rhythm": 25}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_readme"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2403, "days_push": 211, "days_rel": 286, "gap_med": 182.0, "n_releases_24m": 3}, "score": 58, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}