What Seasoned Software Engineers Are Saying About PCA

WHAT'S INSIDE

Everything you need to build production-ready applications.

Clean Architecture: Introduction

We'll start with the fundmentals. Clean Architecture is based on sound architectural principles. You'll learn how to apply them to design applications that stand the test of time.

START WATCHING
Course snippet

Domain Layer and Domain-Driven Design

You will learn how to build a rich domain model with Domain-Driven Design. We will discuss domain modeling best practices. This is where we'll introduce the application we will build.

START WATCHING
Course snippet

Application Layer and CQRS

How do you implement CQRS and solve cross-cutting concerns with ease? Here, you're going to learn how to design your application's use cases.

START WATCHING
Course snippet

Infrastructure Layer

How do you implement a blazing fast persistence layer? We'll explore how to use the most advanced EF Core features. We will also discuss concurrency problems and possible solutions.

START WATCHING
Course snippet

Presentation Layer

How do you add API endpoints efficiently? How do you set up dependency injection the right way? You'll find all the answers (and more) here.

START WATCHING
Course snippet

Authentication and API Security

Implementing robust JWT authentication is a must to secure your API. You will learn how to integrate an external identity provider called Keycloak.

START WATCHING
Course snippet

Authorization, Roles and Permissions

What good is authentication without fine-grained access control? You will learn how to implement role-based authorization. Then, we'll pair it with custom permission-based authorization policies.

START WATCHING
Course snippet

Outbox, Structured Logging, Redis

How do you reliably publish messages? The Outbox pattern elegantly solves this problem. You'll see how to implement cross-cutting concerns like structured logging, health checks, and distributed caching with Redis.

START WATCHING
Course snippet

Testing Clean Architecture

How can you have maximum confidence in your system? We'll cover unit testing, integration testing, and functional testing. You'll learn how to enforce your software architecture with architecture tests.

START WATCHING
Course snippet

Cloud Deployment, .NET AspireCOMING SOON

Building an application that runs smoothly on your machine is great. But deploying it to a production environment? That's a different challenge. You'll learn how to use .NET Aspire to easily deploy your application to Azure.

START WATCHING

More Than Just Theory

Pragmatic Clean Architecture includes more than just video lessons.

I built the course with bonus resources to make sure you apply what you learn.

Course snippet

Clean Architecture Template

I created a Clean Architecture Template that gives you a good starting point to start delivering value to your users faster.

Course snippet

Code Quality Shortcut

To help you write quality code, you'll get access to the Code Quality Shortcut to easily enforce standards across your team.

Course snippet

CI/CD Blueprint

If you're new to CI/CD, I created a blueprint you can plug into your project to start consistently releasing software.

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

What Students Are Saying About PCA

START WATCHING
Course student
Course student
Course student
Course student
Course student
Course student
4.98/5 from 3,150+ students

Ready to Join Pragmatic Clean Architecture?

PCA

$247

10 in-depth chapters

90+ lessons of video training content

Complete source code with bonus features

Cloud Deployment (soon)

Bonus CA Template

Bonus Code Quality Shortcut

Bonus CI/CD Blueprint

Lifetime access

Lifetime updates

BEST VALUE

PCA + Community

$397

10 in-depth chapters

90+ lessons of video training content

Complete source code with bonus features

Cloud Deployment (soon)

Bonus Advanced CA Template

Bonus Code Quality Shortcut

Bonus CI/CD Blueprint

Lifetime access

Lifetime updates

Community Access

The Full Curriculum

Introduction

Clean Architecture Fundamentals

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

Domain Layer and Domain-Driven Design

  • 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

Application Layer and CQRS

  • 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

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

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

Authentication and API Security

  • 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

Authorization, Roles and Permissions

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

Advanced Topics: Serilog, Redis, Outbox

  • 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

Testing Clean Architecture

  • Introduction
  • Domain Layer Unit Testing
  • Application Layer Unit Testing
  • Integration Testing
  • Functional Testing
  • Architecture Testing
  • Chapter recap

Cloud Deployment, .NET Aspire (coming soon)

  • Introduction
  • Integrating .NET Aspire
  • Deploying to Azure
  • Chapter recap

BONUS - Get Started Faster

  • Clean Architecture Template
  • Code Quality Shortcut
  • CI/CD Blueprint
START WATCHING
Course student
Course student
Course student
Course student
Course student
Course student
4.98/5 from 3,150+ 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.

Microsoft MVP Badge.

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 START WATCHING button below and get started today.

START WATCHING