{"adoption": {"forks": 315, "observed_at": "2026-08-28T04:04:39.755600+00:00", "stars": 1415}, "canonical_url": "https://ross.abutalabs.com/products/hellodjango-blog-tutorial", "card": {"archived": false, "artifact_type": "learning-resource", "description": "免费带你学 django 全栈！基于 django 2.2 的个人博客，初学者绝对不能错过的 django 教程！｡◕ᴗ◕｡", "domain": ["web-development", "tutorials", "education", "cms", "backend"], "enriched": true, "function": ["web-framework", "search-engine", "documentation", "developer-tools"], "health_score": 20, "homepage": "https://www.zmrenwu.com/", "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["HelloGitHub-Team/HelloDjango-blog-tutorial"], "name": "HelloGitHub-Team/HelloDjango-blog-tutorial", "platform": ["python", "cross-platform"], "pushed_at": "2023-06-22T10:51:01+00:00", "repo": "HelloGitHub-Team/HelloDjango-blog-tutorial", "stars": 1415, "tags": ["django", "blog", "tutorial", "full-stack", "chinese", "elasticsearch", "step-by-step", "web-server", "docker"], "topics": [], "urls": [], "use_cases": ["learn django from scratch with a step-by-step tutorial", "build a personal blog website with django", "learn full-stack web development in python", "follow a django blog development course", "study a production-ready django blog codebase", "learn how to integrate elasticsearch full-text search in django"], "what_it_is": "A free, open-source Django blog tutorial project built on Django 2.2 that teaches beginners full-stack web development from scratch. Each key feature corresponds to a detailed tutorial article, commit, and tag, aiming to produce a production-ready blog system.", "when_to_avoid": ["you need a modern, actively maintained blog platform on the latest Django version", "you want a ready-to-deploy blog without going through the tutorial", "you need non-blog Django project examples"], "when_to_choose": ["you are a beginner wanting a guided, tutorial-driven path to learn Django", "you want to build a blog while learning, with each commit mapped to a lesson", "you prefer free, open-source Chinese-language Django learning material"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/hellodjango-blog-tutorial", "repo": "HelloGitHub-Team/HelloDjango-blog-tutorial", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.755600+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:38:07.681672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5eade0b24a46ae741951ace03dabc8e77f47fd6b1e3b5c2c0d85d33a9ecd2eef", "fetched_at": "2026-08-28T04:04:39.755600+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial"}, {"content_hash": "1b4aacfca50aedd31df34666ff09b2d1347978a511764515734ccac5465036a3", "fetched_at": "2026-08-29T11:50:57.242883+00:00", "kind": "homepage", "missing": false, "url": "https://www.zmrenwu.com/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.755600+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:38:07.681672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5eade0b24a46ae741951ace03dabc8e77f47fd6b1e3b5c2c0d85d33a9ecd2eef", "fetched_at": "2026-08-28T04:04:39.755600+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial"}, {"content_hash": "1b4aacfca50aedd31df34666ff09b2d1347978a511764515734ccac5465036a3", "fetched_at": "2026-08-29T11:50:57.242883+00:00", "kind": "homepage", "missing": false, "url": "https://www.zmrenwu.com/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:38:07.681672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5eade0b24a46ae741951ace03dabc8e77f47fd6b1e3b5c2c0d85d33a9ecd2eef", "fetched_at": "2026-08-28T04:04:39.755600+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial"}, {"content_hash": "1b4aacfca50aedd31df34666ff09b2d1347978a511764515734ccac5465036a3", "fetched_at": "2026-08-29T11:50:57.242883+00:00", "kind": "homepage", "missing": false, "url": "https://www.zmrenwu.com/"}], "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:04:39.755600+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.755600+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.755600+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:38:07.681672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5eade0b24a46ae741951ace03dabc8e77f47fd6b1e3b5c2c0d85d33a9ecd2eef", "fetched_at": "2026-08-28T04:04:39.755600+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial"}, {"content_hash": "1b4aacfca50aedd31df34666ff09b2d1347978a511764515734ccac5465036a3", "fetched_at": "2026-08-29T11:50:57.242883+00:00", "kind": "homepage", "missing": false, "url": "https://www.zmrenwu.com/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.755600+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.755600+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:38:07.681672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5eade0b24a46ae741951ace03dabc8e77f47fd6b1e3b5c2c0d85d33a9ecd2eef", "fetched_at": "2026-08-28T04:04:39.755600+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial"}, {"content_hash": "1b4aacfca50aedd31df34666ff09b2d1347978a511764515734ccac5465036a3", "fetched_at": "2026-08-29T11:50:57.242883+00:00", "kind": "homepage", "missing": false, "url": "https://www.zmrenwu.com/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.755600+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.755600+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.755600+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:38:07.681672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5eade0b24a46ae741951ace03dabc8e77f47fd6b1e3b5c2c0d85d33a9ecd2eef", "fetched_at": "2026-08-28T04:04:39.755600+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial"}, {"content_hash": "1b4aacfca50aedd31df34666ff09b2d1347978a511764515734ccac5465036a3", "fetched_at": "2026-08-29T11:50:57.242883+00:00", "kind": "homepage", "missing": false, "url": "https://www.zmrenwu.com/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.755600+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.755600+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:38:07.681672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5eade0b24a46ae741951ace03dabc8e77f47fd6b1e3b5c2c0d85d33a9ecd2eef", "fetched_at": "2026-08-28T04:04:39.755600+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial"}, {"content_hash": "1b4aacfca50aedd31df34666ff09b2d1347978a511764515734ccac5465036a3", "fetched_at": "2026-08-29T11:50:57.242883+00:00", "kind": "homepage", "missing": false, "url": "https://www.zmrenwu.com/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:38:07.681672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5eade0b24a46ae741951ace03dabc8e77f47fd6b1e3b5c2c0d85d33a9ecd2eef", "fetched_at": "2026-08-28T04:04:39.755600+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial"}, {"content_hash": "1b4aacfca50aedd31df34666ff09b2d1347978a511764515734ccac5465036a3", "fetched_at": "2026-08-29T11:50:57.242883+00:00", "kind": "homepage", "missing": false, "url": "https://www.zmrenwu.com/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:38:07.681672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5eade0b24a46ae741951ace03dabc8e77f47fd6b1e3b5c2c0d85d33a9ecd2eef", "fetched_at": "2026-08-28T04:04:39.755600+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial"}, {"content_hash": "1b4aacfca50aedd31df34666ff09b2d1347978a511764515734ccac5465036a3", "fetched_at": "2026-08-29T11:50:57.242883+00:00", "kind": "homepage", "missing": false, "url": "https://www.zmrenwu.com/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:38:07.681672+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5eade0b24a46ae741951ace03dabc8e77f47fd6b1e3b5c2c0d85d33a9ecd2eef", "fetched_at": "2026-08-28T04:04:39.755600+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial"}, {"content_hash": "1b4aacfca50aedd31df34666ff09b2d1347978a511764515734ccac5465036a3", "fetched_at": "2026-08-29T11:50:57.242883+00:00", "kind": "homepage", "missing": false, "url": "https://www.zmrenwu.com/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2600, "days_push": 1168, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}