{"adoption": {"forks": 318, "observed_at": "2026-08-28T04:09:48.742969+00:00", "stars": 6808}, "canonical_url": "https://ross.abutalabs.com/products/io-ts", "card": {"archived": false, "artifact_type": "library", "description": "Runtime type system for IO decoding/encoding", "domain": ["developer-tools", "web-development", "apis"], "enriched": true, "function": ["serialization", "type-system", "form-handling"], "health_score": 30, "homepage": "https://gcanti.github.io/io-ts/", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["gcanti/io-ts"], "name": "gcanti/io-ts", "platform": ["cross-platform"], "pushed_at": "2024-12-10T11:53:31+00:00", "repo": "gcanti/io-ts", "stars": 6808, "tags": ["runtime-type-system", "codec", "decoder", "encoder", "fp-ts", "type-guards", "nodejs", "typescript"], "topics": ["typescript", "validation", "inference", "types", "runtime"], "urls": [], "use_cases": ["validate untrusted JSON against a TypeScript type at runtime", "decode API responses into typed values", "encode domain objects before sending them over the wire", "create custom type guards for unknown inputs", "define runtime-checked schemas shared between frontend and backend"], "what_it_is": "io-ts is a TypeScript library providing a runtime type system for decoding and encoding data at IO boundaries. Codecs combine static types with runtime validation, type guards, and encoding via fp-ts's Either type.", "when_to_avoid": ["you want a simple schema validator without functional programming concepts like Either and monads", "you prefer Zod-style ergonomic APIs with less boilerplate", "your project is plain JavaScript without TypeScript"], "when_to_choose": ["you want static TypeScript types and runtime validation from a single definition", "your codebase already uses fp-ts and functional programming patterns", "you need precise, composable decoders with detailed error contexts"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/io-ts", "repo": "gcanti/io-ts", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.742969+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:42:04.105967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ac3935379b29ee68e17fbc71c4ead4f658357450b5a18d7657c297a587517cc", "fetched_at": "2026-08-28T04:09:48.742969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/io-ts"}, {"content_hash": "5d1c00122a2acad0e4a50f8abc2eda979012b5a6fa9ec599b5873c8c16c83149", "fetched_at": "2026-08-29T08:38:24.173405+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/io-ts/"}, {"content_hash": "3f36aa02e0f1b5c566cc196093b1963dc6e33784500e8733166a89058c5d038b", "fetched_at": "2026-08-29T08:38:24.182665+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/io-ts"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.742969+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:42:04.105967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ac3935379b29ee68e17fbc71c4ead4f658357450b5a18d7657c297a587517cc", "fetched_at": "2026-08-28T04:09:48.742969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/io-ts"}, {"content_hash": "5d1c00122a2acad0e4a50f8abc2eda979012b5a6fa9ec599b5873c8c16c83149", "fetched_at": "2026-08-29T08:38:24.173405+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/io-ts/"}, {"content_hash": "3f36aa02e0f1b5c566cc196093b1963dc6e33784500e8733166a89058c5d038b", "fetched_at": "2026-08-29T08:38:24.182665+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/io-ts"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:42:04.105967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ac3935379b29ee68e17fbc71c4ead4f658357450b5a18d7657c297a587517cc", "fetched_at": "2026-08-28T04:09:48.742969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/io-ts"}, {"content_hash": "5d1c00122a2acad0e4a50f8abc2eda979012b5a6fa9ec599b5873c8c16c83149", "fetched_at": "2026-08-29T08:38:24.173405+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/io-ts/"}, {"content_hash": "3f36aa02e0f1b5c566cc196093b1963dc6e33784500e8733166a89058c5d038b", "fetched_at": "2026-08-29T08:38:24.182665+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/io-ts"}], "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:48.742969+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.742969+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.742969+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:42:04.105967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ac3935379b29ee68e17fbc71c4ead4f658357450b5a18d7657c297a587517cc", "fetched_at": "2026-08-28T04:09:48.742969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/io-ts"}, {"content_hash": "5d1c00122a2acad0e4a50f8abc2eda979012b5a6fa9ec599b5873c8c16c83149", "fetched_at": "2026-08-29T08:38:24.173405+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/io-ts/"}, {"content_hash": "3f36aa02e0f1b5c566cc196093b1963dc6e33784500e8733166a89058c5d038b", "fetched_at": "2026-08-29T08:38:24.182665+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/io-ts"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.742969+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.742969+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:42:04.105967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ac3935379b29ee68e17fbc71c4ead4f658357450b5a18d7657c297a587517cc", "fetched_at": "2026-08-28T04:09:48.742969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/io-ts"}, {"content_hash": "5d1c00122a2acad0e4a50f8abc2eda979012b5a6fa9ec599b5873c8c16c83149", "fetched_at": "2026-08-29T08:38:24.173405+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/io-ts/"}, {"content_hash": "3f36aa02e0f1b5c566cc196093b1963dc6e33784500e8733166a89058c5d038b", "fetched_at": "2026-08-29T08:38:24.182665+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/io-ts"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.742969+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.742969+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.742969+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:42:04.105967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ac3935379b29ee68e17fbc71c4ead4f658357450b5a18d7657c297a587517cc", "fetched_at": "2026-08-28T04:09:48.742969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/io-ts"}, {"content_hash": "5d1c00122a2acad0e4a50f8abc2eda979012b5a6fa9ec599b5873c8c16c83149", "fetched_at": "2026-08-29T08:38:24.173405+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/io-ts/"}, {"content_hash": "3f36aa02e0f1b5c566cc196093b1963dc6e33784500e8733166a89058c5d038b", "fetched_at": "2026-08-29T08:38:24.182665+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/io-ts"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.742969+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.742969+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:42:04.105967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ac3935379b29ee68e17fbc71c4ead4f658357450b5a18d7657c297a587517cc", "fetched_at": "2026-08-28T04:09:48.742969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/io-ts"}, {"content_hash": "5d1c00122a2acad0e4a50f8abc2eda979012b5a6fa9ec599b5873c8c16c83149", "fetched_at": "2026-08-29T08:38:24.173405+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/io-ts/"}, {"content_hash": "3f36aa02e0f1b5c566cc196093b1963dc6e33784500e8733166a89058c5d038b", "fetched_at": "2026-08-29T08:38:24.182665+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/io-ts"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:42:04.105967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ac3935379b29ee68e17fbc71c4ead4f658357450b5a18d7657c297a587517cc", "fetched_at": "2026-08-28T04:09:48.742969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/io-ts"}, {"content_hash": "5d1c00122a2acad0e4a50f8abc2eda979012b5a6fa9ec599b5873c8c16c83149", "fetched_at": "2026-08-29T08:38:24.173405+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/io-ts/"}, {"content_hash": "3f36aa02e0f1b5c566cc196093b1963dc6e33784500e8733166a89058c5d038b", "fetched_at": "2026-08-29T08:38:24.182665+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/io-ts"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:42:04.105967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ac3935379b29ee68e17fbc71c4ead4f658357450b5a18d7657c297a587517cc", "fetched_at": "2026-08-28T04:09:48.742969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/io-ts"}, {"content_hash": "5d1c00122a2acad0e4a50f8abc2eda979012b5a6fa9ec599b5873c8c16c83149", "fetched_at": "2026-08-29T08:38:24.173405+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/io-ts/"}, {"content_hash": "3f36aa02e0f1b5c566cc196093b1963dc6e33784500e8733166a89058c5d038b", "fetched_at": "2026-08-29T08:38:24.182665+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/io-ts"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:42:04.105967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ac3935379b29ee68e17fbc71c4ead4f658357450b5a18d7657c297a587517cc", "fetched_at": "2026-08-28T04:09:48.742969+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gcanti/io-ts"}, {"content_hash": "5d1c00122a2acad0e4a50f8abc2eda979012b5a6fa9ec599b5873c8c16c83149", "fetched_at": "2026-08-29T08:38:24.173405+00:00", "kind": "homepage", "missing": false, "url": "https://gcanti.github.io/io-ts/"}, {"content_hash": "3f36aa02e0f1b5c566cc196093b1963dc6e33784500e8733166a89058c5d038b", "fetched_at": "2026-08-29T08:38:24.182665+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/io-ts"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3504, "days_push": 631, "days_rel": 631, "gap_med": null, "n_releases_24m": 1}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}