{"adoption": {"forks": 506, "observed_at": "2026-08-28T04:04:46.570707+00:00", "stars": 1453}, "canonical_url": "https://ross.abutalabs.com/products/nanofabric", "card": {"archived": true, "artifact_type": "framework", "description": "基于Consul + .NET Core + Polly + Ocelot + Exceptionless + IdentityServer等开源项目的微服务开发框架", "domain": ["microservices", "backend", "web-development", "developer-tools"], "enriched": true, "function": ["microservices", "api-gateway", "auth", "service-discovery", "monitoring", "logging", "configuration-management", "rpc", "middleware", "web-framework"], "health_score": 10, "homepage": null, "language": "C#", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["geffzhang/NanoFabric"], "name": "geffzhang/NanoFabric", "platform": ["dotnet", "cross-platform", "cloud"], "pushed_at": "2020-03-13T00:40:13+00:00", "repo": "geffzhang/NanoFabric", "stars": 1453, "tags": ["consul", "ocelot", "polly", "identityserver", "exceptionless", "orleans", "grpc", "resilience", "api-gateway", "service-mesh", "archived", "devops", "docker"], "topics": [], "urls": [], "use_cases": ["build microservices in .NET Core", "set up an Ocelot API gateway with Consul service discovery", "add resilience and retry policies with Polly to service calls", "secure microservices with IdentityServer authentication", "centralize logging and APM for a distributed .NET system", "learn a reference architecture for .NET microservices"], "what_it_is": "NanoFabric is a .NET Core microservices development framework that integrates Consul, Ocelot, Polly, IdentityServer, Exceptionless, Orleans, and other open-source components. It provides an opinionated scaffold for building service discovery, API gateway, resilience, authentication, and monitoring into distributed .NET applications.", "when_to_avoid": ["you are starting a new .NET microservices project - the project is archived and unmaintained for over 16 months", "you want a mature, actively supported framework - the author recommends ABP vNext instead", "you need long-term security patches or community support"], "when_to_choose": ["you are maintaining or extending an existing NanoFabric-based codebase", "you want a curated example of wiring Consul, Ocelot, Polly, and IdentityServer together in .NET Core", "you need a study reference for .NET microservice architecture patterns"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/nanofabric", "repo": "geffzhang/NanoFabric", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:46.570707+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:35:45.000400+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7333c1816517fd44da867a759e074f17fbd19b26e26fc1afaeeef3c8f9203063", "fetched_at": "2026-08-28T04:04:46.570707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geffzhang/NanoFabric"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:46.570707+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:35:45.000400+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7333c1816517fd44da867a759e074f17fbd19b26e26fc1afaeeef3c8f9203063", "fetched_at": "2026-08-28T04:04:46.570707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geffzhang/NanoFabric"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:35:45.000400+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7333c1816517fd44da867a759e074f17fbd19b26e26fc1afaeeef3c8f9203063", "fetched_at": "2026-08-28T04:04:46.570707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geffzhang/NanoFabric"}], "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:46.570707+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:46.570707+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:46.570707+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:35:45.000400+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7333c1816517fd44da867a759e074f17fbd19b26e26fc1afaeeef3c8f9203063", "fetched_at": "2026-08-28T04:04:46.570707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geffzhang/NanoFabric"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:46.570707+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:46.570707+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:35:45.000400+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7333c1816517fd44da867a759e074f17fbd19b26e26fc1afaeeef3c8f9203063", "fetched_at": "2026-08-28T04:04:46.570707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geffzhang/NanoFabric"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:46.570707+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:46.570707+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:46.570707+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:35:45.000400+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7333c1816517fd44da867a759e074f17fbd19b26e26fc1afaeeef3c8f9203063", "fetched_at": "2026-08-28T04:04:46.570707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geffzhang/NanoFabric"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:46.570707+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:46.570707+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:35:45.000400+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7333c1816517fd44da867a759e074f17fbd19b26e26fc1afaeeef3c8f9203063", "fetched_at": "2026-08-28T04:04:46.570707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geffzhang/NanoFabric"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:35:45.000400+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7333c1816517fd44da867a759e074f17fbd19b26e26fc1afaeeef3c8f9203063", "fetched_at": "2026-08-28T04:04:46.570707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geffzhang/NanoFabric"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:35:45.000400+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7333c1816517fd44da867a759e074f17fbd19b26e26fc1afaeeef3c8f9203063", "fetched_at": "2026-08-28T04:04:46.570707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geffzhang/NanoFabric"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:35:45.000400+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7333c1816517fd44da867a759e074f17fbd19b26e26fc1afaeeef3c8f9203063", "fetched_at": "2026-08-28T04:04:46.570707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geffzhang/NanoFabric"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3507, "days_push": 2365, "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}}