{"adoption": {"forks": 610, "observed_at": "2026-08-28T04:06:53.270580+00:00", "stars": 2457}, "canonical_url": "https://ross.abutalabs.com/products/practicalcleanarchitecture", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Full-stack .Net 10 Clean Architecture (Microservices, Modular Monolith, Monolith), Blazor, Angular 22, React 19, Vue 3.5, BFF with YARP, NextJs 16, Domain-Driven Design, CQRS, SOLID, Asp.Net Core Identity Custom Storage, OpenID Connect, EF Core, OpenTelemetry, SignalR, Background Services, Health Checks, Rate Limiting, Clouds (Azure, AWS, GCP), ...", "domain": ["web-development", "backend", "developer-tools", "tutorials", "microservices", "cloud-computing"], "enriched": true, "function": ["web-framework", "api-framework", "auth", "middleware", "monitoring", "rate-limiting", "microservices", "developer-tools"], "health_score": 94, "homepage": null, "language": "C#", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["phongnguyend/Practical.CleanArchitecture"], "name": "phongnguyend/Practical.CleanArchitecture", "platform": ["dotnet", "cloud", "cross-platform"], "pushed_at": "2026-08-04T23:59:11+00:00", "repo": "phongnguyend/Practical.CleanArchitecture", "stars": 2457, "tags": ["clean-architecture", "domain-driven-design", "cqrs", "blazor", "angular", "react", "vue", "nextjs", "ef-core", "openid-connect", "yarp", "signalr", "opentelemetry", "sample-app", "reference-architecture", "solid-principles", "modular-monolith", "aspnet-core-identity", "azure", "aws", "gcp", "docker", "kubernetes", "web-server"], "topics": ["cqrs", "domain-driven-design", "clean-architecture", "oauth2", "signalr", "docker", "azure", "aws", "rabbitmq", "kafka", "blazor", "kubernetes", "microservices", "angular", "reactjs", "vuejs", "devops", "opentelemetry", "owasp"], "urls": [], "use_cases": ["learn clean architecture in .net", "example of cqrs and domain-driven design in asp.net core", "full-stack dotnet reference app with angular or react", "how to structure a modular monolith in c#", "asp.net core identity custom storage example", "microservices template with yarp bff and rabbitmq", "study guide for solid principles and layered architecture", "opentelemetry and health checks setup in dotnet"], "what_it_is": "A full-stack .NET sample repository demonstrating Clean Architecture patterns (Microservices, Modular Monolith, Monolith) with multiple frontend frameworks like Blazor, Angular, React, Vue, and Next.js. It serves as a practical reference for Domain-Driven Design, CQRS, SOLID principles, and modern ASP.NET Core features including Identity, OpenID Connect, EF Core, OpenTelemetry, and cloud deployments.", "when_to_avoid": ["you need a production-ready starter kit with opinionated defaults rather than educational samples", "you want a minimal, single-pattern template instead of many alternative approaches", "you are not working in the .NET ecosystem", "you expect every pattern shown to be a recommended best practice, since the repo explicitly warns some samples are illustrative only"], "when_to_choose": ["you want a comprehensive, actively maintained codebase to study architectural patterns in .NET", "you need side-by-side comparisons of monolith, modular monolith, and microservices styles", "you are building a full-stack app and want working examples of auth, messaging, and observability wiring", "you want to see the same backend consumed by Blazor, Angular, React, Vue, and Next.js clients"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/practicalcleanarchitecture", "repo": "phongnguyend/Practical.CleanArchitecture", "role": "main", "score": 72}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.270580+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:30:02.603661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3de81757dd23dc38dfadda86f4af37e1f6da57324c9140c678c248579940c5d7", "fetched_at": "2026-08-28T04:06:53.270580+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phongnguyend/Practical.CleanArchitecture"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.270580+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:30:02.603661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3de81757dd23dc38dfadda86f4af37e1f6da57324c9140c678c248579940c5d7", "fetched_at": "2026-08-28T04:06:53.270580+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phongnguyend/Practical.CleanArchitecture"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:30:02.603661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3de81757dd23dc38dfadda86f4af37e1f6da57324c9140c678c248579940c5d7", "fetched_at": "2026-08-28T04:06:53.270580+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phongnguyend/Practical.CleanArchitecture"}], "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:53.270580+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.270580+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.270580+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:30:02.603661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3de81757dd23dc38dfadda86f4af37e1f6da57324c9140c678c248579940c5d7", "fetched_at": "2026-08-28T04:06:53.270580+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phongnguyend/Practical.CleanArchitecture"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.270580+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.270580+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:30:02.603661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3de81757dd23dc38dfadda86f4af37e1f6da57324c9140c678c248579940c5d7", "fetched_at": "2026-08-28T04:06:53.270580+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phongnguyend/Practical.CleanArchitecture"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.270580+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.270580+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.270580+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:30:02.603661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3de81757dd23dc38dfadda86f4af37e1f6da57324c9140c678c248579940c5d7", "fetched_at": "2026-08-28T04:06:53.270580+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phongnguyend/Practical.CleanArchitecture"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.270580+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.270580+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:30:02.603661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3de81757dd23dc38dfadda86f4af37e1f6da57324c9140c678c248579940c5d7", "fetched_at": "2026-08-28T04:06:53.270580+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phongnguyend/Practical.CleanArchitecture"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:30:02.603661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3de81757dd23dc38dfadda86f4af37e1f6da57324c9140c678c248579940c5d7", "fetched_at": "2026-08-28T04:06:53.270580+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phongnguyend/Practical.CleanArchitecture"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:30:02.603661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3de81757dd23dc38dfadda86f4af37e1f6da57324c9140c678c248579940c5d7", "fetched_at": "2026-08-28T04:06:53.270580+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phongnguyend/Practical.CleanArchitecture"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:30:02.603661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3de81757dd23dc38dfadda86f4af37e1f6da57324c9140c678c248579940c5d7", "fetched_at": "2026-08-28T04:06:53.270580+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phongnguyend/Practical.CleanArchitecture"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 96, "longevity": 100, "rhythm": 24}, "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": 2830, "days_push": 29, "days_rel": 293, "gap_med": 331, "n_releases_24m": 2}, "score": 72, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}