{"adoption": {"forks": 181, "observed_at": "2026-08-28T04:03:31.194589+00:00", "stars": 1083}, "canonical_url": "https://ross.abutalabs.com/products/javaweb-sec", "card": {"archived": false, "artifact_type": "learning-resource", "description": null, "domain": ["security", "tutorials", "web-development", "developer-tools"], "enriched": true, "function": ["security", "penetration-testing", "documentation"], "health_score": 71, "homepage": null, "language": "Java", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["javaweb-sec/javaweb-sec"], "name": "javaweb-sec/javaweb-sec", "platform": ["jvm"], "pushed_at": "2026-05-31T15:00:24+00:00", "repo": "javaweb-sec/javaweb-sec", "stars": 1083, "tags": ["java-web-security", "vulnerability-research", "exploitation", "free-training", "gitbook", "chinese-language"], "topics": [], "urls": [], "use_cases": ["learn java web security from scratch", "understand java deserialization vulnerabilities", "study common java web attack techniques", "find java security training material", "reference for java code auditing", "learn how to exploit java web applications"], "what_it_is": "An open-source knowledge base and training project summarizing Java Web security topics, published as a GitBook at javasec.org. It explains complex Java security techniques (vulnerabilities and attacks on Java web applications) in a clear, accessible way.", "when_to_avoid": ["you need a runnable security scanning or testing tool rather than educational content", "you need English-language documentation", "you need guaranteed-correct, peer-reviewed material (authors note possible errors)"], "when_to_choose": ["you want a free, structured introduction to Java security concepts", "you need reference material on Java-specific vulnerabilities and exploitation", "you prefer learning in Chinese with community discussion channels"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/javaweb-sec", "repo": "javaweb-sec/javaweb-sec", "role": "main", "score": 70}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.194589+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:51:10.955169+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d242319180fac045e5353f34b0673b83e7d0a07089270e8f80f00d0fe7a48c9", "fetched_at": "2026-08-28T04:03:31.194589+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javaweb-sec/javaweb-sec"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.194589+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:51:10.955169+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d242319180fac045e5353f34b0673b83e7d0a07089270e8f80f00d0fe7a48c9", "fetched_at": "2026-08-28T04:03:31.194589+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javaweb-sec/javaweb-sec"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:51:10.955169+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d242319180fac045e5353f34b0673b83e7d0a07089270e8f80f00d0fe7a48c9", "fetched_at": "2026-08-28T04:03:31.194589+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javaweb-sec/javaweb-sec"}], "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:03:31.194589+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.194589+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.194589+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:51:10.955169+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d242319180fac045e5353f34b0673b83e7d0a07089270e8f80f00d0fe7a48c9", "fetched_at": "2026-08-28T04:03:31.194589+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javaweb-sec/javaweb-sec"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.194589+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.194589+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:51:10.955169+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d242319180fac045e5353f34b0673b83e7d0a07089270e8f80f00d0fe7a48c9", "fetched_at": "2026-08-28T04:03:31.194589+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javaweb-sec/javaweb-sec"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.194589+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.194589+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.194589+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:51:10.955169+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d242319180fac045e5353f34b0673b83e7d0a07089270e8f80f00d0fe7a48c9", "fetched_at": "2026-08-28T04:03:31.194589+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javaweb-sec/javaweb-sec"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.194589+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.194589+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:51:10.955169+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d242319180fac045e5353f34b0673b83e7d0a07089270e8f80f00d0fe7a48c9", "fetched_at": "2026-08-28T04:03:31.194589+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javaweb-sec/javaweb-sec"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:51:10.955169+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d242319180fac045e5353f34b0673b83e7d0a07089270e8f80f00d0fe7a48c9", "fetched_at": "2026-08-28T04:03:31.194589+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javaweb-sec/javaweb-sec"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:51:10.955169+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d242319180fac045e5353f34b0673b83e7d0a07089270e8f80f00d0fe7a48c9", "fetched_at": "2026-08-28T04:03:31.194589+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javaweb-sec/javaweb-sec"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:51:10.955169+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6d242319180fac045e5353f34b0673b83e7d0a07089270e8f80f00d0fe7a48c9", "fetched_at": "2026-08-28T04:03:31.194589+00:00", "kind": "readme", "missing": false, "url": "https://github.com/javaweb-sec/javaweb-sec"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 85, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+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": 1990, "days_push": 94, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 70, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}