The Real Difference Between Domain and Application Layer in Clean Architecture

I’ve lost count of how many times I’ve seen developers struggle with this question: “Should this logic go in the Domain layer or the Application layer?” Clean Architecture diagrams make it look simple, but when you’re staring at your actual codebase, the lines blur fast. You know the situation. You’ve got a business rule to implement. You open your project, see both folders, and pause. Put it in the wrong place, and six months later you’re wrestling with a mess of tangled dependencies and logic that’s impossible to test. ...

November 22, 2025 · 12 min
An illustration of a Swiss Army knife with an absurd number of impractical tools, representing the "generic hell" of over-engineered generic repositories.

Building Maintainable EF Core Repositories Without Generic Hell

Most EF Core projects start with a generic repository that soon turns into a mess of type parameters and leaky abstractions. In this post, learn how to design maintainable, aggregate-specific repositories that are clean, testable, and production-ready.

November 13, 2025 · Last modified: November 25, 2025 · 10 min

How to Structure Your ASP.NET Core API for Clean Testing

A practical guide to structuring ASP.NET Core APIs for reliable integration and unit testing using clean architecture principles and minimal, production-ready C# code.

November 7, 2025 · 7 min

Why I Avoid Static Helpers in Modern C# Projects

Most projects I review have a Utils or Helpers class packed with static methods. At first glance, static helpers look like the fastest way to solve problems. You don’t need to new up objects or wire dependencies. Just call Helper.DoSomething() and move on. That convenience is exactly why they sneak into codebases. But over time, static helpers turn into a source of pain, especially in production systems that need to evolve. ...

September 30, 2025 · 4 min

ASP.NET Core: Auth with Middleware or Filters?

Discover how using custom middleware for authentication in ASP.NET Core SaaS APIs leads to cleaner, faster, and more maintainable code compared to traditional authorization filters.

September 12, 2025 · Last modified: September 19, 2025 · 3 min

3 Signs Your Code Needs Middleware

TL;DR Repeating logic across controllers (like logging or header checks)? Move it to middleware. Modifying requests/responses in controllers? Middleware handles that cleanly and early. Your services use HttpContext? Extract that logic into middleware for cleaner, testable code. If your services are bloated or you’re duplicating logic across controllers, middleware might be the extension point you actually need. Many developers reach for filters or services first, when middleware would’ve been faster, simpler, and more maintainable. ...

August 21, 2025 · 2 min

Why Constructor Injection Matters in Clean Architecture

Constructor injection is your first clean architecture decision. Learn how to write testable, decoupled ASP.NET Core code using built-in DI, scoped lifetimes, and mocking techniques.

August 18, 2025 · Last modified: September 19, 2025 · 8 min

Applying OOP in ASP.NET Core

This post explores the four pillars of OOP in ASP.NET Core: encapsulation, abstraction, inheritance, and polymorphism. It provides practical examples and explains how these principles improve code maintainability, testability, and architecture in modern C# web APIs.

August 10, 2025 · Last modified: September 3, 2025 · 8 min
×