{"adoption": {"forks": 816, "observed_at": "2026-08-28T04:06:16.959219+00:00", "stars": 2127}, "canonical_url": "https://ross.abutalabs.com/products/100-days-of-javascript", "card": {"archived": false, "artifact_type": "learning-resource", "description": "AsmrProg Youtube Channel 100 days of javascript codes collection", "domain": ["web-development", "frontend", "education", "tutorials", "gaming-tools"], "enriched": true, "function": ["developer-tools", "gui", "chatbot", "image-processing", "speech-recognition", "tts", "browser-extension", "data-visualization"], "health_score": 42, "homepage": null, "language": "JavaScript", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["AsmrProg-YT/100-days-of-javascript"], "name": "AsmrProg-YT/100-days-of-javascript", "platform": ["browser", "browser-extension", "cross-platform"], "pushed_at": "2025-08-13T13:53:27+00:00", "repo": "AsmrProg-YT/100-days-of-javascript", "stars": 2127, "tags": ["tutorial-projects", "javascript-examples", "video-course-companion", "mini-projects", "beginner-friendly", "code-collection", "youtube-channel", "javascript", "web-server"], "topics": [], "urls": [], "use_cases": ["learn javascript by building small projects", "find example code for a javascript tutorial video", "get starter code for a weather app or todo app in javascript", "study how to build browser extensions in javascript", "find simple javascript game source code like snake or tetris", "practice javascript with guided mini projects", "see examples of calling APIs like GitHub, Google Maps, or ChatGPT from javascript"], "what_it_is": "A collection of 80+ small JavaScript projects accompanying the AsmrProg YouTube channel's '100 Days of JavaScript' tutorial series. Each project is a self-contained mini-app (games, generators, API integrations, browser extensions) with source code matching the video tutorials.", "when_to_avoid": ["you need a production-ready library or framework to install via npm", "you need maintained, tested software with a license for commercial use (the repo has no license)", "you want a structured curriculum with exercises rather than a code dump tied to videos"], "when_to_choose": ["you follow the AsmrProg YouTube tutorials and want the matching code", "you are a beginner looking for many small, self-contained JavaScript examples", "you want inspiration or reference implementations for simple web apps, games, and extensions"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/100-days-of-javascript", "repo": "AsmrProg-YT/100-days-of-javascript", "role": "main", "score": 48}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.959219+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:52:28.154369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f2d6e58f14116e298d89c9c5a02abebfcf65c292173e45d2ee4ac77db1194f3", "fetched_at": "2026-08-28T04:06:16.959219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AsmrProg-YT/100-days-of-javascript"}, {"content_hash": "8a0cf0f44a32b44ce2c5f4de4c5e3a13e264e3998df5fa97b9f638ec29723c32", "fetched_at": "2026-08-29T10:32:42.727858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/100-days-of-javascript"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.959219+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:52:28.154369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f2d6e58f14116e298d89c9c5a02abebfcf65c292173e45d2ee4ac77db1194f3", "fetched_at": "2026-08-28T04:06:16.959219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AsmrProg-YT/100-days-of-javascript"}, {"content_hash": "8a0cf0f44a32b44ce2c5f4de4c5e3a13e264e3998df5fa97b9f638ec29723c32", "fetched_at": "2026-08-29T10:32:42.727858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/100-days-of-javascript"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:52:28.154369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f2d6e58f14116e298d89c9c5a02abebfcf65c292173e45d2ee4ac77db1194f3", "fetched_at": "2026-08-28T04:06:16.959219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AsmrProg-YT/100-days-of-javascript"}, {"content_hash": "8a0cf0f44a32b44ce2c5f4de4c5e3a13e264e3998df5fa97b9f638ec29723c32", "fetched_at": "2026-08-29T10:32:42.727858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/100-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:06:16.959219+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.959219+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.959219+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:52:28.154369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f2d6e58f14116e298d89c9c5a02abebfcf65c292173e45d2ee4ac77db1194f3", "fetched_at": "2026-08-28T04:06:16.959219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AsmrProg-YT/100-days-of-javascript"}, {"content_hash": "8a0cf0f44a32b44ce2c5f4de4c5e3a13e264e3998df5fa97b9f638ec29723c32", "fetched_at": "2026-08-29T10:32:42.727858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/100-days-of-javascript"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.959219+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.959219+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:52:28.154369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f2d6e58f14116e298d89c9c5a02abebfcf65c292173e45d2ee4ac77db1194f3", "fetched_at": "2026-08-28T04:06:16.959219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AsmrProg-YT/100-days-of-javascript"}, {"content_hash": "8a0cf0f44a32b44ce2c5f4de4c5e3a13e264e3998df5fa97b9f638ec29723c32", "fetched_at": "2026-08-29T10:32:42.727858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/100-days-of-javascript"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.959219+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.959219+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.959219+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:52:28.154369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f2d6e58f14116e298d89c9c5a02abebfcf65c292173e45d2ee4ac77db1194f3", "fetched_at": "2026-08-28T04:06:16.959219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AsmrProg-YT/100-days-of-javascript"}, {"content_hash": "8a0cf0f44a32b44ce2c5f4de4c5e3a13e264e3998df5fa97b9f638ec29723c32", "fetched_at": "2026-08-29T10:32:42.727858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/100-days-of-javascript"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.959219+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.959219+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:52:28.154369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f2d6e58f14116e298d89c9c5a02abebfcf65c292173e45d2ee4ac77db1194f3", "fetched_at": "2026-08-28T04:06:16.959219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AsmrProg-YT/100-days-of-javascript"}, {"content_hash": "8a0cf0f44a32b44ce2c5f4de4c5e3a13e264e3998df5fa97b9f638ec29723c32", "fetched_at": "2026-08-29T10:32:42.727858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/100-days-of-javascript"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:52:28.154369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f2d6e58f14116e298d89c9c5a02abebfcf65c292173e45d2ee4ac77db1194f3", "fetched_at": "2026-08-28T04:06:16.959219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AsmrProg-YT/100-days-of-javascript"}, {"content_hash": "8a0cf0f44a32b44ce2c5f4de4c5e3a13e264e3998df5fa97b9f638ec29723c32", "fetched_at": "2026-08-29T10:32:42.727858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/100-days-of-javascript"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:52:28.154369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f2d6e58f14116e298d89c9c5a02abebfcf65c292173e45d2ee4ac77db1194f3", "fetched_at": "2026-08-28T04:06:16.959219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AsmrProg-YT/100-days-of-javascript"}, {"content_hash": "8a0cf0f44a32b44ce2c5f4de4c5e3a13e264e3998df5fa97b9f638ec29723c32", "fetched_at": "2026-08-29T10:32:42.727858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/100-days-of-javascript"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:52:28.154369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f2d6e58f14116e298d89c9c5a02abebfcf65c292173e45d2ee4ac77db1194f3", "fetched_at": "2026-08-28T04:06:16.959219+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AsmrProg-YT/100-days-of-javascript"}, {"content_hash": "8a0cf0f44a32b44ce2c5f4de4c5e3a13e264e3998df5fa97b9f638ec29723c32", "fetched_at": "2026-08-29T10:32:42.727858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/100-days-of-javascript"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 36, "longevity": 96, "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": 1346, "days_push": 385, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 48, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}