{"adoption": {"forks": 10464, "observed_at": "2026-08-28T04:12:11.112054+00:00", "stars": 46739}, "canonical_url": "https://ross.abutalabs.com/products/30-days-of-javascript", "card": {"archived": false, "artifact_type": "learning-resource", "description": "30 days of JavaScript programming challenge is a step-by-step guide to learn JavaScript programming language in 30 days. This challenge may take more than 100 days,  please just follow your own pace. These videos may help too: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw", "domain": ["web-development", "programming-languages", "tutorials", "education"], "enriched": true, "function": ["developer-tools"], "health_score": 53, "homepage": null, "language": "JavaScript", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["Asabeneh/30-Days-Of-JavaScript"], "name": "Asabeneh/30-Days-Of-JavaScript", "platform": ["cross-platform", "browser"], "pushed_at": "2025-12-06T11:12:48+00:00", "repo": "Asabeneh/30-Days-Of-JavaScript", "stars": 46739, "tags": ["javascript", "tutorial", "challenge", "beginner-friendly", "self-paced", "html", "css", "frontend", "nodejs"], "topics": ["30daysofjavascript", "javascript-for-everyone", "css", "html", "javascript", "react", "angular", "js", "json", "node", "nodejs", "typescript", "vue", "d3", "d3js", "redux", "challenge", "programming", "webdevelopment", "website"], "urls": [], "use_cases": ["learn javascript from scratch", "step by step javascript tutorial for beginners", "30 day javascript challenge", "practice javascript with exercises", "learn dom manipulation and browser apis", "refresher on modern javascript concepts", "self-paced web development learning path"], "what_it_is": "A free, step-by-step 30-day JavaScript programming challenge that teaches the language from basics to advanced topics, including HTML, CSS, DOM, JSON, async programming, and introductions to frameworks like React, Angular, and Vue. It is structured as a self-paced curriculum with exercises and examples.", "when_to_avoid": ["you need an official reference or certification", "you want deep, production-level framework training rather than an introduction", "you need interactive mentorship or graded assignments"], "when_to_choose": ["you are a beginner wanting a structured, free JavaScript curriculum", "you prefer self-paced learning with daily lessons and exercises", "you want to cover both fundamentals and a taste of frameworks in one resource"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/30-days-of-javascript", "repo": "Asabeneh/30-Days-Of-JavaScript", "role": "main", "score": 57}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:12:11.112054+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.308435+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "842e96fe06dc91ccb7061451029be6101a299c34e6f4d70c59e6389baffcbec3", "fetched_at": "2026-08-29T07:45:04.825544+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/30-days-of-javascript"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:12:11.112054+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.308435+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "842e96fe06dc91ccb7061451029be6101a299c34e6f4d70c59e6389baffcbec3", "fetched_at": "2026-08-29T07:45:04.825544+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/30-days-of-javascript"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.308435+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "842e96fe06dc91ccb7061451029be6101a299c34e6f4d70c59e6389baffcbec3", "fetched_at": "2026-08-29T07:45:04.825544+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/30-days-of-javascript"}], "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:12:11.112054+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:12:11.112054+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:12:11.112054+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.308435+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "842e96fe06dc91ccb7061451029be6101a299c34e6f4d70c59e6389baffcbec3", "fetched_at": "2026-08-29T07:45:04.825544+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/30-days-of-javascript"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:12:11.112054+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:12:11.112054+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.308435+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "842e96fe06dc91ccb7061451029be6101a299c34e6f4d70c59e6389baffcbec3", "fetched_at": "2026-08-29T07:45:04.825544+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/30-days-of-javascript"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:12:11.112054+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:12:11.112054+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:12:11.112054+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.308435+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "842e96fe06dc91ccb7061451029be6101a299c34e6f4d70c59e6389baffcbec3", "fetched_at": "2026-08-29T07:45:04.825544+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/30-days-of-javascript"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:12:11.112054+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:12:11.112054+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.308435+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "842e96fe06dc91ccb7061451029be6101a299c34e6f4d70c59e6389baffcbec3", "fetched_at": "2026-08-29T07:45:04.825544+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/30-days-of-javascript"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.308435+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "842e96fe06dc91ccb7061451029be6101a299c34e6f4d70c59e6389baffcbec3", "fetched_at": "2026-08-29T07:45:04.825544+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/30-days-of-javascript"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.308435+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "842e96fe06dc91ccb7061451029be6101a299c34e6f4d70c59e6389baffcbec3", "fetched_at": "2026-08-29T07:45:04.825544+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/30-days-of-javascript"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.308435+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "842e96fe06dc91ccb7061451029be6101a299c34e6f4d70c59e6389baffcbec3", "fetched_at": "2026-08-29T07:45:04.825544+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/30-days-of-javascript"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 55, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license", "no_readme"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2445, "days_push": 270, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 57, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}