{"adoption": {"forks": 330, "observed_at": "2026-08-28T04:04:36.543442+00:00", "stars": 1395}, "canonical_url": "https://ross.abutalabs.com/products/docker-handbook-projects", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Project codes used in \"The Docker Handbook\"", "domain": ["developer-tools", "tutorials"], "enriched": true, "function": ["developer-tools", "container-runtime", "deployment"], "health_score": 65, "homepage": "https://freecodecamp.org/news/the-docker-handbook/", "language": "JavaScript", "license": "Unlicense", "license_family": "permissive", "maturity": "stable", "member_repos": ["fhsinchy/docker-handbook-projects"], "name": "fhsinchy/docker-handbook-projects", "platform": ["cross-platform"], "pushed_at": "2026-04-02T09:07:03+00:00", "repo": "fhsinchy/docker-handbook-projects", "stars": 1395, "tags": ["docker", "docker-compose", "tutorial", "containerization", "freecodecamp", "nginx", "express", "vue", "containers", "nodejs"], "topics": ["docker", "docker-compose", "javascript", "express", "vite"], "urls": [], "use_cases": ["learn docker from scratch", "practice containerizing applications", "learn docker compose with multi-container apps", "hands-on docker tutorial projects", "build a custom nginx docker image", "learn to publish docker images to a registry"], "what_it_is": "Companion code repository for 'The Docker Handbook' tutorial on freeCodeCamp, containing starter and completed versions of six hands-on Docker projects. Projects range from building a custom NGINX image to a full-stack CRUD application with multi-container Docker Compose setup.", "when_to_avoid": ["you need production-ready application code or a reusable library", "you already know Docker and need advanced orchestration like Kubernetes", "you want a non-JavaScript project stack"], "when_to_choose": ["you are a beginner wanting a structured, free Docker tutorial with exercises", "you prefer learning by building progressively complex projects", "you want starter and completed code to compare against"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/docker-handbook-projects", "repo": "fhsinchy/docker-handbook-projects", "role": "main", "score": 66}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.543442+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:39:22.755132+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4122eeba58f9afb6412312a2f95e0a412d4a09af6d65a502ab789519ac7f4d6f", "fetched_at": "2026-08-28T04:04:36.543442+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fhsinchy/docker-handbook-projects"}, {"content_hash": "d7bda394fb3146b7b15921d7015c21cf64d6355525f3a6ed9c9e995a7f02a2e6", "fetched_at": "2026-08-29T11:54:21.068969+00:00", "kind": "homepage", "missing": false, "url": "https://freecodecamp.org/news/the-docker-handbook/"}, {"content_hash": "2e97e630295774794250510a66ceb33df2b9233d1e06bd77f9d2ac87276fe6c8", "fetched_at": "2026-08-29T11:54:21.075770+00:00", "kind": "site_page", "missing": false, "url": "https://www.freecodecamp.org/news/about"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.543442+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:39:22.755132+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4122eeba58f9afb6412312a2f95e0a412d4a09af6d65a502ab789519ac7f4d6f", "fetched_at": "2026-08-28T04:04:36.543442+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fhsinchy/docker-handbook-projects"}, {"content_hash": "d7bda394fb3146b7b15921d7015c21cf64d6355525f3a6ed9c9e995a7f02a2e6", "fetched_at": "2026-08-29T11:54:21.068969+00:00", "kind": "homepage", "missing": false, "url": "https://freecodecamp.org/news/the-docker-handbook/"}, {"content_hash": "2e97e630295774794250510a66ceb33df2b9233d1e06bd77f9d2ac87276fe6c8", "fetched_at": "2026-08-29T11:54:21.075770+00:00", "kind": "site_page", "missing": false, "url": "https://www.freecodecamp.org/news/about"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:39:22.755132+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4122eeba58f9afb6412312a2f95e0a412d4a09af6d65a502ab789519ac7f4d6f", "fetched_at": "2026-08-28T04:04:36.543442+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fhsinchy/docker-handbook-projects"}, {"content_hash": "d7bda394fb3146b7b15921d7015c21cf64d6355525f3a6ed9c9e995a7f02a2e6", "fetched_at": "2026-08-29T11:54:21.068969+00:00", "kind": "homepage", "missing": false, "url": "https://freecodecamp.org/news/the-docker-handbook/"}, {"content_hash": "2e97e630295774794250510a66ceb33df2b9233d1e06bd77f9d2ac87276fe6c8", "fetched_at": "2026-08-29T11:54:21.075770+00:00", "kind": "site_page", "missing": false, "url": "https://www.freecodecamp.org/news/about"}], "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:36.543442+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.543442+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.543442+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:39:22.755132+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4122eeba58f9afb6412312a2f95e0a412d4a09af6d65a502ab789519ac7f4d6f", "fetched_at": "2026-08-28T04:04:36.543442+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fhsinchy/docker-handbook-projects"}, {"content_hash": "d7bda394fb3146b7b15921d7015c21cf64d6355525f3a6ed9c9e995a7f02a2e6", "fetched_at": "2026-08-29T11:54:21.068969+00:00", "kind": "homepage", "missing": false, "url": "https://freecodecamp.org/news/the-docker-handbook/"}, {"content_hash": "2e97e630295774794250510a66ceb33df2b9233d1e06bd77f9d2ac87276fe6c8", "fetched_at": "2026-08-29T11:54:21.075770+00:00", "kind": "site_page", "missing": false, "url": "https://www.freecodecamp.org/news/about"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.543442+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.543442+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:39:22.755132+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4122eeba58f9afb6412312a2f95e0a412d4a09af6d65a502ab789519ac7f4d6f", "fetched_at": "2026-08-28T04:04:36.543442+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fhsinchy/docker-handbook-projects"}, {"content_hash": "d7bda394fb3146b7b15921d7015c21cf64d6355525f3a6ed9c9e995a7f02a2e6", "fetched_at": "2026-08-29T11:54:21.068969+00:00", "kind": "homepage", "missing": false, "url": "https://freecodecamp.org/news/the-docker-handbook/"}, {"content_hash": "2e97e630295774794250510a66ceb33df2b9233d1e06bd77f9d2ac87276fe6c8", "fetched_at": "2026-08-29T11:54:21.075770+00:00", "kind": "site_page", "missing": false, "url": "https://www.freecodecamp.org/news/about"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.543442+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.543442+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.543442+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:39:22.755132+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4122eeba58f9afb6412312a2f95e0a412d4a09af6d65a502ab789519ac7f4d6f", "fetched_at": "2026-08-28T04:04:36.543442+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fhsinchy/docker-handbook-projects"}, {"content_hash": "d7bda394fb3146b7b15921d7015c21cf64d6355525f3a6ed9c9e995a7f02a2e6", "fetched_at": "2026-08-29T11:54:21.068969+00:00", "kind": "homepage", "missing": false, "url": "https://freecodecamp.org/news/the-docker-handbook/"}, {"content_hash": "2e97e630295774794250510a66ceb33df2b9233d1e06bd77f9d2ac87276fe6c8", "fetched_at": "2026-08-29T11:54:21.075770+00:00", "kind": "site_page", "missing": false, "url": "https://www.freecodecamp.org/news/about"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.543442+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.543442+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:39:22.755132+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4122eeba58f9afb6412312a2f95e0a412d4a09af6d65a502ab789519ac7f4d6f", "fetched_at": "2026-08-28T04:04:36.543442+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fhsinchy/docker-handbook-projects"}, {"content_hash": "d7bda394fb3146b7b15921d7015c21cf64d6355525f3a6ed9c9e995a7f02a2e6", "fetched_at": "2026-08-29T11:54:21.068969+00:00", "kind": "homepage", "missing": false, "url": "https://freecodecamp.org/news/the-docker-handbook/"}, {"content_hash": "2e97e630295774794250510a66ceb33df2b9233d1e06bd77f9d2ac87276fe6c8", "fetched_at": "2026-08-29T11:54:21.075770+00:00", "kind": "site_page", "missing": false, "url": "https://www.freecodecamp.org/news/about"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:39:22.755132+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4122eeba58f9afb6412312a2f95e0a412d4a09af6d65a502ab789519ac7f4d6f", "fetched_at": "2026-08-28T04:04:36.543442+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fhsinchy/docker-handbook-projects"}, {"content_hash": "d7bda394fb3146b7b15921d7015c21cf64d6355525f3a6ed9c9e995a7f02a2e6", "fetched_at": "2026-08-29T11:54:21.068969+00:00", "kind": "homepage", "missing": false, "url": "https://freecodecamp.org/news/the-docker-handbook/"}, {"content_hash": "2e97e630295774794250510a66ceb33df2b9233d1e06bd77f9d2ac87276fe6c8", "fetched_at": "2026-08-29T11:54:21.075770+00:00", "kind": "site_page", "missing": false, "url": "https://www.freecodecamp.org/news/about"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:39:22.755132+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4122eeba58f9afb6412312a2f95e0a412d4a09af6d65a502ab789519ac7f4d6f", "fetched_at": "2026-08-28T04:04:36.543442+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fhsinchy/docker-handbook-projects"}, {"content_hash": "d7bda394fb3146b7b15921d7015c21cf64d6355525f3a6ed9c9e995a7f02a2e6", "fetched_at": "2026-08-29T11:54:21.068969+00:00", "kind": "homepage", "missing": false, "url": "https://freecodecamp.org/news/the-docker-handbook/"}, {"content_hash": "2e97e630295774794250510a66ceb33df2b9233d1e06bd77f9d2ac87276fe6c8", "fetched_at": "2026-08-29T11:54:21.075770+00:00", "kind": "site_page", "missing": false, "url": "https://www.freecodecamp.org/news/about"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:39:22.755132+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4122eeba58f9afb6412312a2f95e0a412d4a09af6d65a502ab789519ac7f4d6f", "fetched_at": "2026-08-28T04:04:36.543442+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fhsinchy/docker-handbook-projects"}, {"content_hash": "d7bda394fb3146b7b15921d7015c21cf64d6355525f3a6ed9c9e995a7f02a2e6", "fetched_at": "2026-08-29T11:54:21.068969+00:00", "kind": "homepage", "missing": false, "url": "https://freecodecamp.org/news/the-docker-handbook/"}, {"content_hash": "2e97e630295774794250510a66ceb33df2b9233d1e06bd77f9d2ac87276fe6c8", "fetched_at": "2026-08-29T11:54:21.075770+00:00", "kind": "site_page", "missing": false, "url": "https://www.freecodecamp.org/news/about"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 75, "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": 2248, "days_push": 153, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 66, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}