{"adoption": {"forks": 139, "observed_at": "2026-08-28T04:05:28.283630+00:00", "stars": 1727}, "canonical_url": "https://ross.abutalabs.com/products/go-tagexpr", "card": {"archived": true, "artifact_type": "library", "description": "An interesting go struct tag expression syntax for field validation, etc.", "domain": ["developer-tools", "web-development", "backend", "apis"], "enriched": true, "function": ["form-handling", "serialization", "parser", "developer-tools"], "health_score": 10, "homepage": null, "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "stable", "member_repos": ["bytedance/go-tagexpr"], "name": "bytedance/go-tagexpr", "platform": ["go", "cross-platform"], "pushed_at": "2024-03-13T21:29:28+00:00", "repo": "bytedance/go-tagexpr", "stars": 1727, "tags": ["struct-tags", "expression-language", "dsl", "field-validation", "request-binding", "validator"], "topics": ["struct-tag", "go", "dsl", "expression", "validator", "binding"], "urls": [], "use_cases": ["validate struct fields with expressive rules in go struct tags", "bind and validate http request parameters in go", "evaluate expressions against nested struct fields", "write custom validation rules referencing other fields in a struct", "replace go-playground validator with a tag expression dsl"], "what_it_is": "go-tagexpr is a Go library that implements an expression syntax evaluated via struct tags, enabling declarative field validation and value evaluation. It includes a powerful struct-tag-based validator and an HTTP request parameter binder built on the same expression engine.", "when_to_avoid": ["you only need simple required/type checks that standard validators cover", "your project is not written in go", "you prefer validation rules defined in code rather than struct tags"], "when_to_choose": ["you need cross-field or conditional validation logic expressed directly in struct tags", "you want a single library for both validation and http parameter binding in go", "you need to evaluate custom expressions over struct data at runtime"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/go-tagexpr", "repo": "bytedance/go-tagexpr", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.283630+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:32:15.891223+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "62da66baf7874c1919c4062570d5d49a041ef76c60c914c73bf59303a94528a6", "fetched_at": "2026-08-28T04:05:28.283630+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/go-tagexpr"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.283630+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:32:15.891223+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "62da66baf7874c1919c4062570d5d49a041ef76c60c914c73bf59303a94528a6", "fetched_at": "2026-08-28T04:05:28.283630+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/go-tagexpr"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:32:15.891223+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "62da66baf7874c1919c4062570d5d49a041ef76c60c914c73bf59303a94528a6", "fetched_at": "2026-08-28T04:05:28.283630+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/go-tagexpr"}], "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:05:28.283630+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.283630+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.283630+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:32:15.891223+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "62da66baf7874c1919c4062570d5d49a041ef76c60c914c73bf59303a94528a6", "fetched_at": "2026-08-28T04:05:28.283630+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/go-tagexpr"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.283630+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.283630+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:32:15.891223+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "62da66baf7874c1919c4062570d5d49a041ef76c60c914c73bf59303a94528a6", "fetched_at": "2026-08-28T04:05:28.283630+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/go-tagexpr"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.283630+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.283630+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.283630+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:32:15.891223+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "62da66baf7874c1919c4062570d5d49a041ef76c60c914c73bf59303a94528a6", "fetched_at": "2026-08-28T04:05:28.283630+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/go-tagexpr"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.283630+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.283630+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:32:15.891223+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "62da66baf7874c1919c4062570d5d49a041ef76c60c914c73bf59303a94528a6", "fetched_at": "2026-08-28T04:05:28.283630+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/go-tagexpr"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:32:15.891223+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "62da66baf7874c1919c4062570d5d49a041ef76c60c914c73bf59303a94528a6", "fetched_at": "2026-08-28T04:05:28.283630+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/go-tagexpr"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:32:15.891223+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "62da66baf7874c1919c4062570d5d49a041ef76c60c914c73bf59303a94528a6", "fetched_at": "2026-08-28T04:05:28.283630+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/go-tagexpr"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:32:15.891223+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "62da66baf7874c1919c4062570d5d49a041ef76c60c914c73bf59303a94528a6", "fetched_at": "2026-08-28T04:05:28.283630+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/go-tagexpr"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2784, "days_push": 903, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}