{"adoption": {"forks": 1285, "observed_at": "2026-08-28T04:08:54.896987+00:00", "stars": 4603}, "canonical_url": "https://ross.abutalabs.com/products/util", "card": {"archived": false, "artifact_type": "framework", "description": "Util是一个.Net平台下的应用框架，旨在提升中小团队的开发能力，由工具类、分层架构基类、Ui组件，配套代码生成模板，权限等组成。", "domain": ["web-development", "backend", "frontend", "developer-tools", "cross-platform"], "enriched": true, "function": ["web-framework", "auth", "authorization", "orm", "ui-components", "templating", "middleware", "error-handling", "developer-tools"], "health_score": 27, "homepage": null, "language": "C#", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["dotnetcore/Util"], "name": "dotnetcore/Util", "platform": ["dotnet", "cross-platform"], "pushed_at": "2024-10-14T20:44:40+00:00", "repo": "dotnetcore/Util", "stars": 4603, "tags": ["application-framework", "aspnetcore", "efcore", "angular", "ng-zorro", "code-generation", "layered-architecture", "nuget-packages", "chinese-documentation", "web-server"], "topics": ["dotnetcore", "aspnetcore", "efcore", "angular", "taghelper", "framework", "ng-zorro"], "urls": [], "use_cases": ["build enterprise web apps on asp.net core faster", "bootstrap a layered .net application architecture", "add authentication and authorization to a .net web app", "generate boilerplate code for a small dev team", "integrate ef core, automapper, and aop with simple apis", "build admin ui with angular and ng-zorro"], "what_it_is": "Util is an application framework for the .NET platform aimed at boosting the productivity of small and medium development teams. It combines utility classes, layered architecture base classes, UI components, code generation templates, and authentication/authorization built on top of ASP.NET Core, EF Core, and Angular.", "when_to_avoid": ["you need a lightweight micro-library rather than a full-stack framework", "you want to avoid framework lock-in or heavy dependency on one team's architectural choices", "your stack is not .NET/C#"], "when_to_choose": ["you are a small or medium .NET team wanting to start business development quickly", "you want a thin, easy-to-learn facade over ASP.NET Core, EF Core, Identity, and AutoMapper", "you prefer simple APIs with minimal configuration and low learning cost"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/util", "repo": "dotnetcore/Util", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.896987+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:19:45.930596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25e7fcd30bbe97b2e07115ca65e6a321b477a995cc3cc619b585a1d20f4da7fc", "fetched_at": "2026-08-28T04:08:54.896987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/Util"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.896987+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:19:45.930596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25e7fcd30bbe97b2e07115ca65e6a321b477a995cc3cc619b585a1d20f4da7fc", "fetched_at": "2026-08-28T04:08:54.896987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/Util"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:19:45.930596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25e7fcd30bbe97b2e07115ca65e6a321b477a995cc3cc619b585a1d20f4da7fc", "fetched_at": "2026-08-28T04:08:54.896987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/Util"}], "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:08:54.896987+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.896987+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.896987+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:19:45.930596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25e7fcd30bbe97b2e07115ca65e6a321b477a995cc3cc619b585a1d20f4da7fc", "fetched_at": "2026-08-28T04:08:54.896987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/Util"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.896987+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.896987+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:19:45.930596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25e7fcd30bbe97b2e07115ca65e6a321b477a995cc3cc619b585a1d20f4da7fc", "fetched_at": "2026-08-28T04:08:54.896987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/Util"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.896987+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.896987+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.896987+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:19:45.930596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25e7fcd30bbe97b2e07115ca65e6a321b477a995cc3cc619b585a1d20f4da7fc", "fetched_at": "2026-08-28T04:08:54.896987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/Util"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.896987+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.896987+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:19:45.930596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25e7fcd30bbe97b2e07115ca65e6a321b477a995cc3cc619b585a1d20f4da7fc", "fetched_at": "2026-08-28T04:08:54.896987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/Util"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:19:45.930596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25e7fcd30bbe97b2e07115ca65e6a321b477a995cc3cc619b585a1d20f4da7fc", "fetched_at": "2026-08-28T04:08:54.896987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/Util"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:19:45.930596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25e7fcd30bbe97b2e07115ca65e6a321b477a995cc3cc619b585a1d20f4da7fc", "fetched_at": "2026-08-28T04:08:54.896987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/Util"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:19:45.930596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25e7fcd30bbe97b2e07115ca65e6a321b477a995cc3cc619b585a1d20f4da7fc", "fetched_at": "2026-08-28T04:08:54.896987+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/Util"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3346, "days_push": 688, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}