Clean Architecture: How I Build Flexible and Testable .NET Applications