Here's What Software Engineers Love About The Course

START WATCHING
Course student
Course student
Course student
Course student
Course student
Course student
4.98/5 from 2,800+ students

WHAT'S INSIDE

Everything You Need To Build Production-Ready Applications With Clean Architecture

Clean Architecture Deep-Dive

  • Learn the architectural principles to make better decisions
  • How to design applications that stand the test of time
  • Where should you use Clean Architecture
START WATCHING
Course snippet

Build a Rich Domain Layer with DDD

  • A practical guide to using Domain-Driven Design
  • Learn the most important DDD tactical patterns
  • Best practices for designing a rich domain model
START WATCHING
Course snippet

Clean Application Layer use cases

  • Learn how to implement clean use cases with CQRS
  • Solve cros-cutting concerns with ease
  • How to achieve blazing query speed
START WATCHING
Course snippet

Powerful Infrastructure Layer

  • How to implement a blazing fast persistence layer
  • Get the most from advanced EF Core features
  • Learn how to solve concurrency issues
START WATCHING
Course snippet

Elegant Presentation Layer

  • How to set up dependency injection the right way
  • Configuration management and documentation
  • Adding API and endpoints efficiently
START WATCHING
Course snippet

Bulletproof Authentication

  • Implement robust JWT authentication to secure your API
  • Learn how to integrate an external identity provider
  • How to apply modern security best practices
START WATCHING
Course snippet

Robust AuthorizationNEW

  • Learn how to implement custom authorization policies
  • Role-based and permission-based authorization
  • Why you need resource-based authorization
START WATCHING
Course snippet

Production-Ready Advanced FeaturesNEW

  • Structured logging, health checks, API versioning
  • Improve scalability with background jobs
  • Distributed caching with Redis
START WATCHING
Course snippet

High-Quality TestingNEW

  • Learn how to test complex systems the right way
  • Unit testing, Integration testing, Functional (E2E) testing
  • Enforce your software architecture with architecture tests
START WATCHING
Course snippet

After Completing This Course You Will

  • Confidently use Clean Architecture to build amazing projects at your work
  • Build a rich domain model with Domain-Driven Design fundamentals
  • Set up production-ready applications with industry best practices
  • Understand the most important architectural principles

More Positive Reviews for Pragmatic Clean Architecture

START WATCHING
Course student
Course student
Course student
Course student
Course student
Course student
4.98/5 from 2,800+ students

Ready to Elevate Your .NET Skills to Architectural Mastery?

PCA

$247

10 in-depth chapters

90+ lessons of video training content

Complete source code with bonus features

Bonus CA Template

Bonus Code Quality Shortcut

Bonus CI/CD Blueprint

Lifetime access

Lifetime updates

PCA + Community

$397

10 in-depth chapters

90+ lessons of video training content

Complete source code with bonus features

Bonus Advanced CA Template

Bonus Code Quality Shortcut

Bonus CI/CD Blueprint

Lifetime access

Lifetime updates

Community Access

The Full Curriculum

Chapter 1: Course Introduction

Chapter 2: Clean Architecture Fundamentals

  • Architectural principles & Design principles
  • Clean Architecture layers
  • What we are building & why
  • Chapter recap

Chapter 3: Domain Layer

  • Introduction
  • Creating the Domain project
  • Defining our first domain entity
  • What is an Entity in Domain-Driven Design?
  • Introducing Value Objects for solving primitive obsession
  • The importance of private setters in the domain model and encapsulation
  • Using the Static Factory pattern in the domain
  • Introducing the Domain Events pattern to the solution (free preview)
  • Adding Repositories and the Unit of Work to the domain
  • Creating the Booking entity
  • Implementing a Domain service
  • Using Double Dispatch for a better domain model
  • Introducing the Result class to the project
  • Defining a dictionary of domain errors
  • Chapter recap

Chapter 4: Application Layer

  • Introduction
  • Creating the Application project
  • Configuring dependency injection and installing MediatR
  • Adding the required abstractions for CQRS (free preview)
  • Implementing Commands with the rich domain model & repositories
  • Defining a domain event handler
  • Implementing Queries with Dapper for blazing performance
  • Solving logging as a cross-cutting concern
  • Creating a Validation pipeline for commands
  • Chapter recap

Chapter 5: Infrastructure Layer

  • Introduction
  • Creating the Infrastructure project
  • Configuring infrastructure services with dependency injection
  • Adding Entity Framework Core to the solution
  • Configuring Entity Framework Core with dependency injection (free preview)
  • Creating the Domain entity configurations
  • Automatically applying entity configurations
  • Implementing repository interfaces using a generic repository
  • Implementing the SQL connection factory
  • Publishing domain events inside the Unit of Work
  • Solving race conditions with optimistic concurrency
  • Chapter recap

Chapter 6: Presentation Layer

  • Introduction
  • Creating the Presentation project
  • Configuring services with dependency injection
  • Adding Controllers and endpoints
  • Setting up Docker Compose and running the API
  • Creating EF migrations and applying them
  • Seeding initial data
  • Adding Middleware - Global exception handler
  • Demo: Presentation layer & API
  • Chapter recap

Chapter 7: Authentication

  • Introduction
  • Keycloak identity provider setup
  • Keycloak admin panel overview
  • Demo: Obtaining JWTs using Keycloak
  • Configuring authentication middleware & services (free preview)
  • Configuring JWT authentication options
  • Demo: Authentication in action
  • Implementing the user registration feature
  • Adding an API endpoint for registering a user
  • Implementing the authentication service
  • Configuring the authentication service as a typed HTTP client
  • Demo: User registration with Keycloak
  • Implementing the user login feature
  • Demo: User login with Keycloak
  • Chapter recap

Chapter 8: Authorization NEW

  • Introduction
  • Implementing Role-based Authorization
  • Implementing Permission-based Authorization
  • Implementing Resource-based Authorization
  • Chapter recap

Chapter 9: Advanced Topics NEW

  • Introduction
  • Structured Logging with Serilog and Seq
  • Distributed Caching with Redis
  • Health Checks in Clean Architecture
  • Implementing API Versioning
  • Transactional Outbox Pattern
  • Minimal APIs
  • Chapter recap

Chapter 10: Testing NEW

  • Introduction
  • Domain Layer Unit Testing
  • Application Layer Unit Testing
  • Integration Testing
  • Functional Testing
  • Architecture Testing
  • Chapter recap
START WATCHING
Course student
Course student
Course student
Course student
Course student
Course student
4.98/5 from 2,800+ students
Milan Jovanović

WHO'S BEHIND THIS

Hi – I'm Milan Jovanović. I help software engineers improve their .NET and software architecture skills.

I'm a Software Architect and Microsoft MVP for Developer Technologies with years of experience building large-scale systems.


I've helped thousands of people become better software engineers through my practical tips on social media, The .NET Weekly newsletter, and YouTube channel.


My goal is to teach you everything I learned while building and maintaining production-ready applications using Clean Architecture.

Frequently Asked Questions

  • Who is this course for?

    This course is for anyone who wants to learn how to apply Clean Architecture in the real world. And how you can use it to create testable, maintainable, large-scale systems.


    This course is also for anyone who wants to learn the principles of Domain-Driven Design. The course focuses on tactical DDD patterns and how to apply them in practice.

  • What will I learn in this course?

    You'll learn the best practices for building production-ready applications using Clean Architecture.
    These are the same core principles I've used to build many large-scale systems in the past 6 years.

    • Clean Architecture Fundamentals
    • Domain-Driven Design
    • CQRS
    • Authentication
    • Authorization
    • Testing

    All the course contents are updated to .NET 8.

  • How long is the course?

    The course is 6 hours and 21 minutes long and is a video course. It has a lot of value packed into a few hours, and I designed it to be easy to follow.

  • What does Community Access mean?

    If you purchase the PCA + Community Access plan, you will gain access to the Community section. If you don't want to go through the course alone, it's a great way to enhance your learning experience. The Community is where like-minded engineers like yourself can get together and collaborate. If you get stuck at any point, this is where you will find help. Of course, I'll also be there to answer any questions.

  • What is the Advanced CA template?

    This is a bonus for students who enroll in the PCA + Community Access course. It's a Clean Architecture template that helps you quickly get started on new projects.


    What makes it advanced? It comes with more features built-in like messaging over a message broker, telemetry, Minimal APIs setup, and more.

  • Got it. This must be expensive, right?

    No. It's $247 on the basic plan.


    And if you want to have Community access with like-minded engineers, then it's $397.

  • Do I get lifetime access?

    Absolutely, YES! You can access the course forever, including any future updates, with no extra payment.

  • What are the prerequisites for taking this course?

    You should have at least 1 year of experience with ASP.NET Core and (preferably) Entity Framework Core. If you are a beginner, this course will help you improve regardless, but it will be slightly harder to follow. You should also be familiar with Docker, as that is what we will use for running external services.

  • Ok. What should I do next if I want to enroll?

    Click the ENROLL NOW button below and get started today.

START WATCHING