Idempotency in APIs: Making Retries Safe
How to implement idempotent API endpoints in .NET using idempotency keys, preventing duplicate operations from network retries.
Strongly-Typed SignalR Hubs: Eliminating Magic Strings
Replace fragile SendAsync calls with compile-time safe interfaces using strongly-typed SignalR hubs in .NET.
FluentValidation: Expressive Input Validation for .NET
Build readable, testable validation rules with FluentValidation instead of scattering data annotations across your models.
HATEOAS in Practice: Hypermedia Links in .NET APIs
A pragmatic approach to implementing HATEOAS in ASP.NET Core APIs, adding discoverable links without over-engineering.
SignalR Hub Patterns: Structuring Real-Time Endpoints in .NET
Explore common patterns for organising SignalR hubs in .NET applications, from simple chat examples to well-structured production code.
Pagination Patterns: Cursor vs Offset in .NET APIs
A comparison of cursor-based and offset-based pagination in .NET APIs, with implementation examples and guidance on when to use each.
Automatic Versioning with Nerdbank.GitVersioning
Use Nerdbank.GitVersioning to derive deterministic, semver-compliant versions from your Git history without manual version bumps.
Refit: Typed HTTP Clients for .NET
How to use Refit to generate strongly typed HTTP clients from interface definitions, eliminating boilerplate HttpClient code.
.NET SDK Container Publishing: No Dockerfile Required
Publish .NET applications as container images directly from the SDK without writing a Dockerfile.
API Documentation with Scalar and OpenAPI in .NET
How to generate interactive API documentation in ASP.NET Core using OpenAPI and Scalar as a modern alternative to Swagger UI.
Code Coverage in CI for .NET Projects
Collect, report, and enforce code coverage thresholds in your .NET CI pipeline using Coverlet and ReportGenerator.
SourceLink: Debug NuGet Packages Like Your Own Code
Enable SourceLink in your .NET libraries so consumers can step into your source code directly from the debugger.
Directory.Build.props Patterns for .NET Solutions
Use Directory.Build.props to centralise build settings, enforce standards, and reduce duplication across .NET projects.
Central Package Management in .NET
Manage NuGet package versions in one place using Directory.Packages.props to eliminate version drift across projects.
REST API Design Conventions That Actually Matter
Practical REST API design conventions for .NET APIs covering resource naming, HTTP methods, status codes, and common pitfalls.
dotnet-tools and Local Tool Manifests
Use local tool manifests to version and share .NET CLI tools across your team without global installs.
Building GraphQL APIs with Hot Chocolate in .NET
A hands-on guide to building a GraphQL API in ASP.NET Core using Hot Chocolate's annotation-based and code-first approaches.
PeriodicTimer for Clean Background Work in .NET
Replace Task.Delay loops with PeriodicTimer for reliable, cancellable periodic background work in .NET hosted services.
Building a NuGet Package Publishing Pipeline
Automate NuGet package building, versioning, and publishing with GitHub Actions and best practices for package metadata.
Docker Compose for Local .NET Development
Set up a Docker Compose environment for .NET development with databases, caches, and hot reload.
ThreadPool Tuning in .NET: What You Can (and Cannot) Control
Understand how the .NET ThreadPool manages threads, when to adjust minimum threads, and how to diagnose starvation.
gRPC-Web: Bringing gRPC to the Browser
How to expose gRPC services to browser clients using gRPC-Web middleware in ASP.NET Core.
Dockerfile Best Practices for .NET Projects
Practical Dockerfile patterns that improve build speed, image size, and security for .NET applications.
.NET Container Images Explained: Chiselled, Alpine, and More
Understand the differences between .NET's container image variants — standard, Alpine, chiselled, and AOT — and when to use each.
Getting Started with gRPC in .NET
A practical introduction to building high-performance gRPC services in .NET using Protocol Buffers and the Grpc.AspNetCore package.