{"adoption": {"forks": 19, "observed_at": "2026-08-28T04:04:33.884487+00:00", "stars": 1380}, "canonical_url": "https://ross.abutalabs.com/products/hattip", "card": {"archived": false, "artifact_type": "framework", "description": "Like Express, but for the future", "domain": ["web-development", "backend", "apis"], "enriched": true, "function": ["web-framework", "http-server", "middleware", "routing"], "health_score": 78, "homepage": null, "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["hattipjs/hattip"], "name": "hattipjs/hattip", "platform": ["bun", "cloud"], "pushed_at": "2026-08-10T05:31:10+00:00", "repo": "hattipjs/hattip", "stars": 1380, "tags": ["fetch-api", "edge-computing", "serverless", "wintercg", "universal-runtime", "express-alternative", "nodejs", "deno", "web-server", "typescript"], "topics": [], "urls": [], "use_cases": ["build an http server that deploys to cloudflare workers and node.js", "express alternative based on fetch api standards", "write portable server middleware for edge runtimes", "run the same api handler on vercel and deno", "build serverless http apps with web standard request/response", "create universal javascript backend middleware"], "what_it_is": "Hattip is a set of TypeScript packages for building HTTP server applications using web-standard Fetch API Request/Response objects. Handlers written once can run on Node.js, Deno, Bun, Cloudflare Workers, Vercel, Fastly, Netlify, and more via runtime adapters.", "when_to_avoid": ["you need Express's massive middleware ecosystem today", "your team only targets classic Node.js and prefers mature frameworks", "you need batteries-included features like built-in ORM or auth"], "when_to_choose": ["you want server code portable across node, edge, and serverless platforms", "you prefer Fetch API Request/Response over Express req/res", "you're targeting Cloudflare Workers, Deno Deploy, or Vercel Edge", "you want a minimalist, modular http framework"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/hattip", "repo": "hattipjs/hattip", "role": "main", "score": 76}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.884487+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:40:14.734089+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "15e9acdd67dcb16df5b955f03b02aab6a2157164a7fc2af04609a9eb39bffd2d", "fetched_at": "2026-08-28T04:04:33.884487+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hattipjs/hattip"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.884487+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:40:14.734089+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "15e9acdd67dcb16df5b955f03b02aab6a2157164a7fc2af04609a9eb39bffd2d", "fetched_at": "2026-08-28T04:04:33.884487+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hattipjs/hattip"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:40:14.734089+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "15e9acdd67dcb16df5b955f03b02aab6a2157164a7fc2af04609a9eb39bffd2d", "fetched_at": "2026-08-28T04:04:33.884487+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hattipjs/hattip"}], "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:04:33.884487+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.884487+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.884487+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:40:14.734089+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "15e9acdd67dcb16df5b955f03b02aab6a2157164a7fc2af04609a9eb39bffd2d", "fetched_at": "2026-08-28T04:04:33.884487+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hattipjs/hattip"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.884487+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.884487+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:40:14.734089+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "15e9acdd67dcb16df5b955f03b02aab6a2157164a7fc2af04609a9eb39bffd2d", "fetched_at": "2026-08-28T04:04:33.884487+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hattipjs/hattip"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.884487+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.884487+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.884487+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:40:14.734089+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "15e9acdd67dcb16df5b955f03b02aab6a2157164a7fc2af04609a9eb39bffd2d", "fetched_at": "2026-08-28T04:04:33.884487+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hattipjs/hattip"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.884487+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.884487+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:40:14.734089+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "15e9acdd67dcb16df5b955f03b02aab6a2157164a7fc2af04609a9eb39bffd2d", "fetched_at": "2026-08-28T04:04:33.884487+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hattipjs/hattip"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:40:14.734089+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "15e9acdd67dcb16df5b955f03b02aab6a2157164a7fc2af04609a9eb39bffd2d", "fetched_at": "2026-08-28T04:04:33.884487+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hattipjs/hattip"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:40:14.734089+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "15e9acdd67dcb16df5b955f03b02aab6a2157164a7fc2af04609a9eb39bffd2d", "fetched_at": "2026-08-28T04:04:33.884487+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hattipjs/hattip"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:40:14.734089+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "15e9acdd67dcb16df5b955f03b02aab6a2157164a7fc2af04609a9eb39bffd2d", "fetched_at": "2026-08-28T04:04:33.884487+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hattipjs/hattip"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1653, "days_push": 23, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 76, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}