{"adoption": {"forks": 350, "observed_at": "2026-08-28T04:07:37.607417+00:00", "stars": 3005}, "canonical_url": "https://ross.abutalabs.com/products/study-path", "card": {"archived": false, "artifact_type": "learning-resource", "description": "A curated, open, and ever-evolving learning path focused on practices of software development, principles of software design, and software architecture.", "domain": ["developer-tools", "tutorials", "education"], "enriched": true, "function": ["documentation", "developer-tools"], "health_score": 30, "homepage": null, "language": null, "license": null, "license_family": "other", "maturity": "active", "member_repos": ["joebew42/study-path"], "name": "joebew42/study-path", "platform": ["cross-platform"], "pushed_at": "2025-04-17T23:47:40+00:00", "repo": "joebew42/study-path", "stars": 3005, "tags": ["study-path", "clean-code", "tdd", "refactoring", "clean-architecture", "domain-driven-design", "microservices", "solid-principles", "legacy-code", "agile", "curated-resources"], "topics": ["clean-code", "clean-architecture", "hexagonal-architecture", "solid-principles", "tdd", "refactoring", "legacy-code", "microservice-architecture", "cqrs-es", "learning", "study-path", "agile", "domain-driven-design", "software-development"], "urls": [], "use_cases": ["find a structured roadmap to learn clean code and TDD", "learn software architecture principles like hexagonal architecture and DDD", "get curated reading lists on refactoring and legacy code", "onboard junior developers into agile software craftsmanship", "plan a self-study curriculum for SOLID principles and microservices"], "what_it_is": "A curated, open, and ever-evolving learning path covering software development practices, design principles, and software architecture. It organizes high-quality external resources (books, papers, videos) into themed sessions on topics like Clean Code, TDD, Refactoring, DDD, and Microservices.", "when_to_avoid": ["you need interactive exercises, code, or a runnable tool rather than a reading list", "you want a formal course with certifications or structured assessments", "you need deep coverage of a single niche topic rather than a broad overview"], "when_to_choose": ["you want a free, community-curated guide to software design and craftsmanship topics", "you prefer self-directed learning with links to authoritative books, papers, and talks", "you are mentoring others and need a ready-made learning roadmap"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/study-path", "repo": "joebew42/study-path", "role": "main", "score": 40}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:37.607417+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:47:24.219632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17232a5373c4d52c2a60aac44cb873c1cf22b9aa4ee5d216e4684994a214ffc", "fetched_at": "2026-08-28T04:07:37.607417+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joebew42/study-path"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:37.607417+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:47:24.219632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17232a5373c4d52c2a60aac44cb873c1cf22b9aa4ee5d216e4684994a214ffc", "fetched_at": "2026-08-28T04:07:37.607417+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joebew42/study-path"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:47:24.219632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17232a5373c4d52c2a60aac44cb873c1cf22b9aa4ee5d216e4684994a214ffc", "fetched_at": "2026-08-28T04:07:37.607417+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joebew42/study-path"}], "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:37.607417+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:37.607417+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:37.607417+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:47:24.219632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17232a5373c4d52c2a60aac44cb873c1cf22b9aa4ee5d216e4684994a214ffc", "fetched_at": "2026-08-28T04:07:37.607417+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joebew42/study-path"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:37.607417+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:37.607417+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:47:24.219632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17232a5373c4d52c2a60aac44cb873c1cf22b9aa4ee5d216e4684994a214ffc", "fetched_at": "2026-08-28T04:07:37.607417+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joebew42/study-path"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:37.607417+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:37.607417+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:37.607417+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:47:24.219632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17232a5373c4d52c2a60aac44cb873c1cf22b9aa4ee5d216e4684994a214ffc", "fetched_at": "2026-08-28T04:07:37.607417+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joebew42/study-path"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:37.607417+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:37.607417+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:47:24.219632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17232a5373c4d52c2a60aac44cb873c1cf22b9aa4ee5d216e4684994a214ffc", "fetched_at": "2026-08-28T04:07:37.607417+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joebew42/study-path"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:47:24.219632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17232a5373c4d52c2a60aac44cb873c1cf22b9aa4ee5d216e4684994a214ffc", "fetched_at": "2026-08-28T04:07:37.607417+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joebew42/study-path"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:47:24.219632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17232a5373c4d52c2a60aac44cb873c1cf22b9aa4ee5d216e4684994a214ffc", "fetched_at": "2026-08-28T04:07:37.607417+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joebew42/study-path"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:47:24.219632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17232a5373c4d52c2a60aac44cb873c1cf22b9aa4ee5d216e4684994a214ffc", "fetched_at": "2026-08-28T04:07:37.607417+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joebew42/study-path"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 17, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3990, "days_push": 503, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 40, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}