{"adoption": {"forks": 1446, "observed_at": "2026-08-28T04:09:42.852511+00:00", "stars": 6363}, "canonical_url": "https://ross.abutalabs.com/products/mini-spring", "card": {"archived": false, "artifact_type": "learning-resource", "description": "mini-spring is a simplified version of the Spring framework that helps you quickly familiarize yourself with Spring source code and master Spring's core principles. It extracts Spring's core logic with extremely simplified code while preserving Spring's core functionality.", "domain": ["developer-tools", "tutorials", "programming-languages"], "enriched": true, "function": ["developer-tools"], "health_score": 95, "homepage": "https://github.com/DerekYRC/mini-spring", "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["DerekYRC/mini-spring"], "name": "DerekYRC/mini-spring", "platform": ["jvm"], "pushed_at": "2026-08-13T09:21:08+00:00", "repo": "DerekYRC/mini-spring", "stars": 6363, "tags": ["spring", "ioc", "aop", "dependency-injection", "educational", "source-code-study", "java"], "topics": ["mini-spring", "springboot", "spring", "springframework", "spring-boot", "spring-mvc", "tiny-spring"], "urls": [], "use_cases": ["learn how spring ioc container works internally", "understand spring aop and dynamic proxies", "study spring bean lifecycle and application context", "prepare for spring framework source code interviews", "build a mini dependency injection framework from scratch", "learn spring core principles with simplified code"], "what_it_is": "mini-spring is a heavily simplified reimplementation of the Spring framework in Java, preserving core features like IoC, AOP, bean lifecycle, and application context. It is designed as an educational project to help developers understand Spring's source code and core principles.", "when_to_avoid": ["you need a production-ready dependency injection or web framework", "you want Spring Boot auto-configuration, Spring MVC, or the full Spring ecosystem", "you need community support, extensive documentation, or long-term maintenance"], "when_to_choose": ["you want to deeply understand Spring's internals rather than just use it", "you prefer learning by reading and building a minimal framework step by step", "you are preparing for Java backend interviews covering Spring principles"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/mini-spring", "repo": "DerekYRC/mini-spring", "role": "main", "score": 78}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.852511+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:45:14.122541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8a58c89d928fb941bb642f3c06898bf4349f6c27e68171fe002bb15f55bd341", "fetched_at": "2026-08-28T04:09:42.852511+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}, {"content_hash": "c8ea082deb829abd8f1bfe078e531f54b1cdcf091e1e92cf090352ad4217de81", "fetched_at": "2026-08-29T08:42:12.074673+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.852511+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:45:14.122541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8a58c89d928fb941bb642f3c06898bf4349f6c27e68171fe002bb15f55bd341", "fetched_at": "2026-08-28T04:09:42.852511+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}, {"content_hash": "c8ea082deb829abd8f1bfe078e531f54b1cdcf091e1e92cf090352ad4217de81", "fetched_at": "2026-08-29T08:42:12.074673+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:45:14.122541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8a58c89d928fb941bb642f3c06898bf4349f6c27e68171fe002bb15f55bd341", "fetched_at": "2026-08-28T04:09:42.852511+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}, {"content_hash": "c8ea082deb829abd8f1bfe078e531f54b1cdcf091e1e92cf090352ad4217de81", "fetched_at": "2026-08-29T08:42:12.074673+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}], "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:09:42.852511+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.852511+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.852511+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:45:14.122541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8a58c89d928fb941bb642f3c06898bf4349f6c27e68171fe002bb15f55bd341", "fetched_at": "2026-08-28T04:09:42.852511+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}, {"content_hash": "c8ea082deb829abd8f1bfe078e531f54b1cdcf091e1e92cf090352ad4217de81", "fetched_at": "2026-08-29T08:42:12.074673+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.852511+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.852511+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:45:14.122541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8a58c89d928fb941bb642f3c06898bf4349f6c27e68171fe002bb15f55bd341", "fetched_at": "2026-08-28T04:09:42.852511+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}, {"content_hash": "c8ea082deb829abd8f1bfe078e531f54b1cdcf091e1e92cf090352ad4217de81", "fetched_at": "2026-08-29T08:42:12.074673+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.852511+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.852511+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.852511+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:45:14.122541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8a58c89d928fb941bb642f3c06898bf4349f6c27e68171fe002bb15f55bd341", "fetched_at": "2026-08-28T04:09:42.852511+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}, {"content_hash": "c8ea082deb829abd8f1bfe078e531f54b1cdcf091e1e92cf090352ad4217de81", "fetched_at": "2026-08-29T08:42:12.074673+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.852511+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.852511+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:45:14.122541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8a58c89d928fb941bb642f3c06898bf4349f6c27e68171fe002bb15f55bd341", "fetched_at": "2026-08-28T04:09:42.852511+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}, {"content_hash": "c8ea082deb829abd8f1bfe078e531f54b1cdcf091e1e92cf090352ad4217de81", "fetched_at": "2026-08-29T08:42:12.074673+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:45:14.122541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8a58c89d928fb941bb642f3c06898bf4349f6c27e68171fe002bb15f55bd341", "fetched_at": "2026-08-28T04:09:42.852511+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}, {"content_hash": "c8ea082deb829abd8f1bfe078e531f54b1cdcf091e1e92cf090352ad4217de81", "fetched_at": "2026-08-29T08:42:12.074673+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:45:14.122541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8a58c89d928fb941bb642f3c06898bf4349f6c27e68171fe002bb15f55bd341", "fetched_at": "2026-08-28T04:09:42.852511+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}, {"content_hash": "c8ea082deb829abd8f1bfe078e531f54b1cdcf091e1e92cf090352ad4217de81", "fetched_at": "2026-08-29T08:42:12.074673+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:45:14.122541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a8a58c89d928fb941bb642f3c06898bf4349f6c27e68171fe002bb15f55bd341", "fetched_at": "2026-08-28T04:09:42.852511+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}, {"content_hash": "c8ea082deb829abd8f1bfe078e531f54b1cdcf091e1e92cf090352ad4217de81", "fetched_at": "2026-08-29T08:42:12.074673+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/DerekYRC/mini-spring"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 40}, "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": 2115, "days_push": 20, "days_rel": 187, "gap_med": null, "n_releases_24m": 1}, "score": 78, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}