{"adoption": {"forks": 197, "observed_at": "2026-08-28T04:06:52.694823+00:00", "stars": 2446}, "canonical_url": "https://ross.abutalabs.com/products/carter", "card": {"archived": false, "artifact_type": "framework", "description": "Carter is framework that is a thin layer of extension methods and functionality over ASP.NET Core allowing code to be more explicit and most importantly more enjoyable.", "domain": ["web-development", "backend", "apis"], "enriched": true, "function": ["web-framework", "routing", "middleware", "form-handling", "file-upload"], "health_score": 74, "homepage": null, "language": "C#", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["CarterCommunity/Carter"], "name": "CarterCommunity/Carter", "platform": ["dotnet", "cross-platform"], "pushed_at": "2026-07-04T09:47:53+00:00", "repo": "CarterCommunity/Carter", "stars": 2446, "tags": ["aspnet-core", "minimal-apis", "fluentvalidation", "content-negotiation", "nancy-inspired", "csharp", "web-server"], "topics": ["nancy", "asp-net-core", "csharp", "asp-net", "mit-license", "dotnet-core", "middleware"], "urls": [], "use_cases": ["build rest apis with asp.net core minimal apis", "validate incoming http requests with fluentvalidation", "handle file uploads in asp.net core", "content negotiation based on accept header", "replace nancyfx for dotnet apis", "model bind form posts to routes"], "what_it_is": "Carter is a thin framework layer of extension methods over ASP.NET Core that makes building HTTP APIs more explicit and enjoyable. It adds conveniences like request validation with FluentValidation, file upload binding, form binding, and content negotiation on top of Minimal APIs.", "when_to_avoid": ["you prefer plain ASP.NET Core without extra abstractions", "you need a full-featured framework like Nancy or a microservice framework with built-in hosting", "you are not on the .NET ecosystem"], "when_to_choose": ["you want a lightweight, Nancy-like API layer on ASP.NET Core Minimal APIs", "you need built-in request validation returning Problem Details responses", "you want automatic DI registration of framework components"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/carter", "repo": "CarterCommunity/Carter", "role": "main", "score": 73}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.694823+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:30:32.070984+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0ccc2a112d0e46f7f19851937e72f4d0c4c097a743f04459068b4fe6b602fdb", "fetched_at": "2026-08-28T04:06:52.694823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CarterCommunity/Carter"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.694823+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:30:32.070984+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0ccc2a112d0e46f7f19851937e72f4d0c4c097a743f04459068b4fe6b602fdb", "fetched_at": "2026-08-28T04:06:52.694823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CarterCommunity/Carter"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:30:32.070984+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0ccc2a112d0e46f7f19851937e72f4d0c4c097a743f04459068b4fe6b602fdb", "fetched_at": "2026-08-28T04:06:52.694823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CarterCommunity/Carter"}], "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:06:52.694823+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.694823+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.694823+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:30:32.070984+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0ccc2a112d0e46f7f19851937e72f4d0c4c097a743f04459068b4fe6b602fdb", "fetched_at": "2026-08-28T04:06:52.694823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CarterCommunity/Carter"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.694823+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.694823+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:30:32.070984+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0ccc2a112d0e46f7f19851937e72f4d0c4c097a743f04459068b4fe6b602fdb", "fetched_at": "2026-08-28T04:06:52.694823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CarterCommunity/Carter"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.694823+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.694823+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.694823+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:30:32.070984+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0ccc2a112d0e46f7f19851937e72f4d0c4c097a743f04459068b4fe6b602fdb", "fetched_at": "2026-08-28T04:06:52.694823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CarterCommunity/Carter"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.694823+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:52.694823+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:30:32.070984+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0ccc2a112d0e46f7f19851937e72f4d0c4c097a743f04459068b4fe6b602fdb", "fetched_at": "2026-08-28T04:06:52.694823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CarterCommunity/Carter"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:30:32.070984+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0ccc2a112d0e46f7f19851937e72f4d0c4c097a743f04459068b4fe6b602fdb", "fetched_at": "2026-08-28T04:06:52.694823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CarterCommunity/Carter"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:30:32.070984+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0ccc2a112d0e46f7f19851937e72f4d0c4c097a743f04459068b4fe6b602fdb", "fetched_at": "2026-08-28T04:06:52.694823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CarterCommunity/Carter"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:30:32.070984+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0ccc2a112d0e46f7f19851937e72f4d0c4c097a743f04459068b4fe6b602fdb", "fetched_at": "2026-08-28T04:06:52.694823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CarterCommunity/Carter"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 90, "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": 3432, "days_push": 60, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 73, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}