{"adoption": {"forks": 703, "observed_at": "2026-08-28T04:09:42.923873+00:00", "stars": 6376}, "canonical_url": "https://ross.abutalabs.com/products/server-survival", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Tower defense game that teaches cloud architecture. Build infrastructure, survive traffic, learn scaling.", "domain": ["cloud-computing", "education", "gaming-tools", "simulation"], "enriched": true, "function": ["simulation", "game", "developer-tools", "monitoring"], "health_score": 100, "homepage": "https://pshenok.github.io/server-survival/", "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["pshenok/server-survival"], "name": "pshenok/server-survival", "platform": ["browser"], "pushed_at": "2026-08-26T06:24:23+00:00", "repo": "pshenok/server-survival", "stars": 6376, "tags": ["tower-defense", "cloud-architecture", "threejs", "educational-game", "aws", "auto-scaling", "ddos", "sandbox", "browser-game", "education", "devops", "web", "javascript"], "topics": ["aws", "cloud", "devops", "education", "game", "javascript", "learning", "open-source", "simulation", "threejs", "tower-defense"], "urls": [], "use_cases": ["learn cloud architecture by playing a game", "teach devops and scaling concepts interactively", "practice handling DDoS attacks and traffic surges", "understand auto-scaling and cold starts", "experiment with cloud infrastructure designs in a sandbox", "train junior engineers on cloud concepts", "learn GPU inference serving and batching"], "what_it_is": "Server Survival is an interactive 3D tower defense game in the browser where players act as a cloud architect, building and scaling infrastructure to survive escalating traffic, DDoS attacks, and budget constraints. Each game mechanic maps to a real cloud concept such as auto-scaling, circuit breaking, multi-region failover, observability, and GPU inference serving.", "when_to_avoid": ["you need real cloud deployment or production tooling", "you want formal courses or certification prep", "you need accurate AWS console or IaC practice", "you're looking for a serious tower defense game rather than a learning tool"], "when_to_choose": ["you want a gamified, hands-on way to learn cloud architecture", "you're teaching cloud/devops concepts to students or juniors", "you prefer browser-based learning with no setup", "you want to explore scaling, failover, and observability trade-offs safely"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/server-survival", "repo": "pshenok/server-survival", "role": "main", "score": 71}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.923873+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:21:26.625968+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1be9f05f879a17376909d3357670c3962835b4aaa9e93cb69141752d859a65", "fetched_at": "2026-08-28T04:09:42.923873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pshenok/server-survival"}, {"content_hash": "a7cb0b5f7c79a400e5652a63e92b927c054b675abf8c378965dc15470cbb9d80", "fetched_at": "2026-08-29T08:42:27.428693+00:00", "kind": "homepage", "missing": false, "url": "https://pshenok.github.io/server-survival/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.923873+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:21:26.625968+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1be9f05f879a17376909d3357670c3962835b4aaa9e93cb69141752d859a65", "fetched_at": "2026-08-28T04:09:42.923873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pshenok/server-survival"}, {"content_hash": "a7cb0b5f7c79a400e5652a63e92b927c054b675abf8c378965dc15470cbb9d80", "fetched_at": "2026-08-29T08:42:27.428693+00:00", "kind": "homepage", "missing": false, "url": "https://pshenok.github.io/server-survival/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:21:26.625968+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1be9f05f879a17376909d3357670c3962835b4aaa9e93cb69141752d859a65", "fetched_at": "2026-08-28T04:09:42.923873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pshenok/server-survival"}, {"content_hash": "a7cb0b5f7c79a400e5652a63e92b927c054b675abf8c378965dc15470cbb9d80", "fetched_at": "2026-08-29T08:42:27.428693+00:00", "kind": "homepage", "missing": false, "url": "https://pshenok.github.io/server-survival/"}], "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:09:42.923873+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.923873+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.923873+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:21:26.625968+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1be9f05f879a17376909d3357670c3962835b4aaa9e93cb69141752d859a65", "fetched_at": "2026-08-28T04:09:42.923873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pshenok/server-survival"}, {"content_hash": "a7cb0b5f7c79a400e5652a63e92b927c054b675abf8c378965dc15470cbb9d80", "fetched_at": "2026-08-29T08:42:27.428693+00:00", "kind": "homepage", "missing": false, "url": "https://pshenok.github.io/server-survival/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.923873+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.923873+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:21:26.625968+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1be9f05f879a17376909d3357670c3962835b4aaa9e93cb69141752d859a65", "fetched_at": "2026-08-28T04:09:42.923873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pshenok/server-survival"}, {"content_hash": "a7cb0b5f7c79a400e5652a63e92b927c054b675abf8c378965dc15470cbb9d80", "fetched_at": "2026-08-29T08:42:27.428693+00:00", "kind": "homepage", "missing": false, "url": "https://pshenok.github.io/server-survival/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.923873+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.923873+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.923873+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:21:26.625968+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1be9f05f879a17376909d3357670c3962835b4aaa9e93cb69141752d859a65", "fetched_at": "2026-08-28T04:09:42.923873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pshenok/server-survival"}, {"content_hash": "a7cb0b5f7c79a400e5652a63e92b927c054b675abf8c378965dc15470cbb9d80", "fetched_at": "2026-08-29T08:42:27.428693+00:00", "kind": "homepage", "missing": false, "url": "https://pshenok.github.io/server-survival/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.923873+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.923873+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:21:26.625968+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1be9f05f879a17376909d3357670c3962835b4aaa9e93cb69141752d859a65", "fetched_at": "2026-08-28T04:09:42.923873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pshenok/server-survival"}, {"content_hash": "a7cb0b5f7c79a400e5652a63e92b927c054b675abf8c378965dc15470cbb9d80", "fetched_at": "2026-08-29T08:42:27.428693+00:00", "kind": "homepage", "missing": false, "url": "https://pshenok.github.io/server-survival/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:21:26.625968+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1be9f05f879a17376909d3357670c3962835b4aaa9e93cb69141752d859a65", "fetched_at": "2026-08-28T04:09:42.923873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pshenok/server-survival"}, {"content_hash": "a7cb0b5f7c79a400e5652a63e92b927c054b675abf8c378965dc15470cbb9d80", "fetched_at": "2026-08-29T08:42:27.428693+00:00", "kind": "homepage", "missing": false, "url": "https://pshenok.github.io/server-survival/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:21:26.625968+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1be9f05f879a17376909d3357670c3962835b4aaa9e93cb69141752d859a65", "fetched_at": "2026-08-28T04:09:42.923873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pshenok/server-survival"}, {"content_hash": "a7cb0b5f7c79a400e5652a63e92b927c054b675abf8c378965dc15470cbb9d80", "fetched_at": "2026-08-29T08:42:27.428693+00:00", "kind": "homepage", "missing": false, "url": "https://pshenok.github.io/server-survival/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:21:26.625968+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec1be9f05f879a17376909d3357670c3962835b4aaa9e93cb69141752d859a65", "fetched_at": "2026-08-28T04:09:42.923873+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pshenok/server-survival"}, {"content_hash": "a7cb0b5f7c79a400e5652a63e92b927c054b675abf8c378965dc15470cbb9d80", "fetched_at": "2026-08-29T08:42:27.428693+00:00", "kind": "homepage", "missing": false, "url": "https://pshenok.github.io/server-survival/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 20, "rhythm": 63}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 286, "days_push": 7, "days_rel": 36, "gap_med": null, "n_releases_24m": 1}, "score": 71, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}