
Map journal service features to http endpoints to show editor and admin interactions, and discuss clean architecture, vertical slice patterns, and integration with submission service via gRPC and domain events.
Implement the invite reviewer endpoint with Carter and fluent validation, coordinating the article invitation flow via mediator, generating a token and URL, and sending the invitation email.
In this course we build real C# microservices and a modular monolith in a .NET 9 solution from scratch: a full MVP for managing scientific articles. You’ll learn how to apply Domain-Driven Design (DDD) and Vertical Slice Architecture to real business workflows — not toy examples.
You'll see how to turn business requirements into bounded contexts, aggregates, value objects and domain events, then implement them end-to-end with C#, ASP.NET Core, EF Core, gRPC, messaging and Docker. Each feature is built as a vertical slice: from the API contract and validation, through command handlers and domain logic, down to persistence and tests.
We implement both synchronous and asynchronous communication between services. You'll learn to differentiate between Core/Critical services (using direct gRPC for reliability) and Domain services (using event-driven architecture with messaging). This gives you practical experience with CQRS and event-driven patterns in a real distributed system.
Along the way we focus on practical architecture decisions: when to use microservices vs a modular monolith, how to design rich domains instead of "anemic" models, how to apply CQRS with MediatR, and how to keep code clean, simple and testable while services communicate over gRPC and messaging.
By the end of this course you will be able to:
Design and implement .NET 9 microservices and a modular monolith with DDD and Clean Architecture
Apply Vertical Slice, CQRS and event-driven architecture in a real project
Model solid aggregates, value objects and domain events
Implement sync (gRPC) and async (messaging) communication between services
Structure solutions for long-term maintainability and clear boundaries
Make pragmatic architecture trade-offs, instead of just following theory
Who is this course for?
Intermediate to senior C# / .NET developers who have already built at least one Web API and want to learn how to design real systems with DDD and microservices/modular monolith.
Ambitious junior developers who are comfortable with C#, ASP.NET Core Web APIs and SQL, and want to move to the next level into architecture and system design.
Software architects who want a concrete end-to-end .NET 9 example of modern architecture patterns.
You should be comfortable with C# fundamentals, have some experience with ASP.NET Core Web APIs, and know basic SQL (tables, relationships, CRUD). It is recommended that this is not your very first C# project, nevertheless I will guide you step by step from an empty solution to a working, production-style architecture.