{"adoption": {"forks": 1951, "observed_at": "2026-08-28T04:11:29.761879+00:00", "stars": 20146}, "canonical_url": "https://ross.abutalabs.com/products/js-stack-from-scratch", "card": {"archived": false, "artifact_type": "learning-resource", "description": "🛠️⚡ Step-by-step tutorial to build a modern JavaScript stack.", "domain": ["web-development", "frontend", "developer-tools", "tutorials"], "enriched": true, "function": ["developer-tools", "build-tool", "web-framework", "testing", "linter"], "health_score": 20, "homepage": null, "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["verekia/js-stack-from-scratch"], "name": "verekia/js-stack-from-scratch", "platform": ["cross-platform"], "pushed_at": "2024-06-05T18:20:56+00:00", "repo": "verekia/js-stack-from-scratch", "stars": 20146, "tags": ["tutorial", "javascript-stack", "react", "redux", "webpack", "boilerplate", "step-by-step-guide", "nodejs", "web-server"], "topics": ["tutorial", "stack", "javascript", "react", "redux", "webpack", "flow", "yarn", "eslint", "sinon", "immutablejs", "jest", "react-router", "bootstrap", "socket-io", "heroku", "jss", "pm2", "nodemon", "server-side-rendering"], "urls": [], "use_cases": ["learn how to set up a modern javascript toolchain from scratch", "understand how webpack babel and eslint fit together", "build my own react redux boilerplate instead of using create-react-app", "set up server-side rendering with react and express", "configure jest testing and eslint for a javascript project", "learn how to deploy a node app to heroku with pm2"], "what_it_is": "A step-by-step tutorial that teaches developers how to assemble a modern JavaScript web application stack from scratch, covering tools like React, Redux, Webpack, ESLint, Jest, and Yarn. It focuses on wiring tools together with minimal examples, effectively guiding readers to write their own boilerplate.", "when_to_avoid": ["you are a beginner who just wants a quick react playground - use create-react-app instead", "you need up-to-date tooling guidance, as parts of the stack are dated", "you want deep explanations of individual tools rather than wiring them together", "you need a production-ready boilerplate rather than a learning exercise"], "when_to_choose": ["you want to understand what happens under the hood of a javascript build setup", "you need to assemble a custom stack rather than use a pre-made boilerplate", "you already know javascript basics and want to learn tooling", "you prefer step-by-step guided tutorials with runnable code per chapter"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/js-stack-from-scratch", "repo": "verekia/js-stack-from-scratch", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.761879+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T16:59:20.179832+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccf737c616ffcd866a9f72cd73be1032618c1f7616290527d21fe2ea3e8afc7", "fetched_at": "2026-08-28T04:11:29.761879+00:00", "kind": "readme", "missing": false, "url": "https://github.com/verekia/js-stack-from-scratch"}, {"content_hash": "6f7b7519aeb0ec79028aba9847133b179773b4996a2768b3c0d2c7929149ec7a", "fetched_at": "2026-08-29T07:58:05.414216+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-stack-from-scratch"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.761879+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T16:59:20.179832+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccf737c616ffcd866a9f72cd73be1032618c1f7616290527d21fe2ea3e8afc7", "fetched_at": "2026-08-28T04:11:29.761879+00:00", "kind": "readme", "missing": false, "url": "https://github.com/verekia/js-stack-from-scratch"}, {"content_hash": "6f7b7519aeb0ec79028aba9847133b179773b4996a2768b3c0d2c7929149ec7a", "fetched_at": "2026-08-29T07:58:05.414216+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-stack-from-scratch"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T16:59:20.179832+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccf737c616ffcd866a9f72cd73be1032618c1f7616290527d21fe2ea3e8afc7", "fetched_at": "2026-08-28T04:11:29.761879+00:00", "kind": "readme", "missing": false, "url": "https://github.com/verekia/js-stack-from-scratch"}, {"content_hash": "6f7b7519aeb0ec79028aba9847133b179773b4996a2768b3c0d2c7929149ec7a", "fetched_at": "2026-08-29T07:58:05.414216+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-stack-from-scratch"}], "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:11:29.761879+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.761879+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.761879+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T16:59:20.179832+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccf737c616ffcd866a9f72cd73be1032618c1f7616290527d21fe2ea3e8afc7", "fetched_at": "2026-08-28T04:11:29.761879+00:00", "kind": "readme", "missing": false, "url": "https://github.com/verekia/js-stack-from-scratch"}, {"content_hash": "6f7b7519aeb0ec79028aba9847133b179773b4996a2768b3c0d2c7929149ec7a", "fetched_at": "2026-08-29T07:58:05.414216+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-stack-from-scratch"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.761879+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.761879+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T16:59:20.179832+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccf737c616ffcd866a9f72cd73be1032618c1f7616290527d21fe2ea3e8afc7", "fetched_at": "2026-08-28T04:11:29.761879+00:00", "kind": "readme", "missing": false, "url": "https://github.com/verekia/js-stack-from-scratch"}, {"content_hash": "6f7b7519aeb0ec79028aba9847133b179773b4996a2768b3c0d2c7929149ec7a", "fetched_at": "2026-08-29T07:58:05.414216+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-stack-from-scratch"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.761879+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.761879+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.761879+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T16:59:20.179832+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccf737c616ffcd866a9f72cd73be1032618c1f7616290527d21fe2ea3e8afc7", "fetched_at": "2026-08-28T04:11:29.761879+00:00", "kind": "readme", "missing": false, "url": "https://github.com/verekia/js-stack-from-scratch"}, {"content_hash": "6f7b7519aeb0ec79028aba9847133b179773b4996a2768b3c0d2c7929149ec7a", "fetched_at": "2026-08-29T07:58:05.414216+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-stack-from-scratch"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.761879+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.761879+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T16:59:20.179832+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccf737c616ffcd866a9f72cd73be1032618c1f7616290527d21fe2ea3e8afc7", "fetched_at": "2026-08-28T04:11:29.761879+00:00", "kind": "readme", "missing": false, "url": "https://github.com/verekia/js-stack-from-scratch"}, {"content_hash": "6f7b7519aeb0ec79028aba9847133b179773b4996a2768b3c0d2c7929149ec7a", "fetched_at": "2026-08-29T07:58:05.414216+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-stack-from-scratch"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T16:59:20.179832+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccf737c616ffcd866a9f72cd73be1032618c1f7616290527d21fe2ea3e8afc7", "fetched_at": "2026-08-28T04:11:29.761879+00:00", "kind": "readme", "missing": false, "url": "https://github.com/verekia/js-stack-from-scratch"}, {"content_hash": "6f7b7519aeb0ec79028aba9847133b179773b4996a2768b3c0d2c7929149ec7a", "fetched_at": "2026-08-29T07:58:05.414216+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-stack-from-scratch"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T16:59:20.179832+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccf737c616ffcd866a9f72cd73be1032618c1f7616290527d21fe2ea3e8afc7", "fetched_at": "2026-08-28T04:11:29.761879+00:00", "kind": "readme", "missing": false, "url": "https://github.com/verekia/js-stack-from-scratch"}, {"content_hash": "6f7b7519aeb0ec79028aba9847133b179773b4996a2768b3c0d2c7929149ec7a", "fetched_at": "2026-08-29T07:58:05.414216+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-stack-from-scratch"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T16:59:20.179832+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ccf737c616ffcd866a9f72cd73be1032618c1f7616290527d21fe2ea3e8afc7", "fetched_at": "2026-08-28T04:11:29.761879+00:00", "kind": "readme", "missing": false, "url": "https://github.com/verekia/js-stack-from-scratch"}, {"content_hash": "6f7b7519aeb0ec79028aba9847133b179773b4996a2768b3c0d2c7929149ec7a", "fetched_at": "2026-08-29T07:58:05.414216+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/js-stack-from-scratch"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "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": 3622, "days_push": 819, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}