You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**Full-Stack Development with Angular 20, .NET 10, and OAuth 2.0 with Duende IdentityServer**
4
+
5
+
📖 **Main Tutorial:**[Building Modern Web Applications with Angular, .NET, and OAuth 2.0](https://medium.com/scrum-and-coke/building-modern-web-applications-with-angular-net-and-oauth-2-0-complete-tutorial-series-7ea97ed3fc56)
6
+
7
+
📁 **Repository:**[AngularNetTutorial on GitHub](https://github.com/workcontrolgit/AngularNetTutorial)
8
+
9
+
---
10
+
11
+
## 📝 Series 0: Architecture & Workspace
12
+
13
+
*[0.1 — Stop Juggling Multiple Repos: Manage Your Full-Stack App Like a Workspace](#) — Git Submodules
14
+
*[0.2 — End-to-End Testing Made Simple: How Playwright Transforms Testing](#) — Playwright Overview
15
+
16
+
---
17
+
18
+
## 🔐 Series 1: Authentication & Security
19
+
20
+
*[1.1 — Why Your Angular App Needs PKCE: OAuth 2.0 Explained with a Working Demo](#) — OAuth 2.0 PKCE Flow
21
+
*[1.2 — Lock Down Your Angular Routes: Auth Guards with OIDC in 5 Minutes](#) — Route Guards
22
+
*[1.3 — Never Forget a Bearer Token Again: Angular's HTTP Interceptor Explained](#) — HTTP Interceptor
23
+
*[1.4 — Show the Right Buttons to the Right People: Role-Based UI in Angular](#) — Role-Based UI
24
+
25
+
---
26
+
27
+
## 🔧 Series 2: .NET 10 Web API
28
+
29
+
*[2.1 — How to Structure a .NET 10 API So It Doesn't Become a Mess](#) — Clean Architecture
30
+
*[2.2 — How Your .NET API Knows to Trust Angular: JWT Validation Explained](#) — JWT Validation
31
+
*[2.3 — Future-Proof Your .NET API: Add Versioning Without Breaking Existing Clients](#) — API Versioning
32
+
*[2.4 — Test Your Secured .NET API Without Writing a Single Line of Frontend Code](#) — Swagger with JWT
33
+
34
+
---
35
+
36
+
## 🎨 Series 3: Angular Material UI
37
+
38
+
*[3.1 — Build a Production-Ready Data Table in Angular Material: Sort, Filter, Page](#) — Data Tables
39
+
*[3.2 — Reactive Forms Done Right: Validation Patterns Every Angular Developer Should Know](#) — Reactive Forms
40
+
*[3.3 — The Right Way to Ask "Are You Sure?" — Angular Material Dialogs for Confirm Actions](#) — Dialogs
41
+
*[3.4 — Why We Didn't Build the Admin Shell from Scratch: ng-matero Explained](#) — Admin Shell
42
+
43
+
---
44
+
45
+
## 🎭 Series 4: Playwright Testing Deep Dives
46
+
47
+
*[4.1 — Your First Playwright Test for an Angular App — From Zero to Green in 15 Minutes](#) — First Test
48
+
*[4.2 — Stop Copy-Pasting Selectors: The Page Object Model for Angular Material](#) — Page Object Model
49
+
*[4.3 — One Feature, Three Users: Testing Role-Based Access Control with Playwright](#) — Role-Based Testing
50
+
*[4.4 — How to Extract and Verify JWT Tokens in Playwright Tests](#) — JWT Token Testing
51
+
*[4.5 — Skip the UI: Test Your .NET API Directly with Playwright's Request Fixture](#) — API Testing
52
+
53
+
---
54
+
55
+
## 🛠️ Series 5: DevOps & Data
56
+
57
+
*[5.1 — 1,000 Test Employees in 3 Seconds: Database Seeding for Development and Testing](#) — Database Seeding
58
+
*[5.2 — Run Your Playwright Tests Automatically: CI/CD for a Full-Stack Angular/.NET App](#) — CI/CD
59
+
60
+
---
61
+
62
+
*Links marked `(#)` will be updated when the article is published on Medium.*
**Author's Note:** This pattern emerged from real-world pain managing enterprise applications split across dozens of repositories. If you've ever lost an hour debugging version mismatches or spent a day onboarding a new developer, you'll appreciate the elegance of this approach. Give it a try—your future self will thank you.
483
+
---
484
+
485
+
📖 **Series:**[AngularNetTutorial Series Navigation](../SERIES-NAVIGATION-TOC.md)
*[Building Modern Web Applications with Angular, .NET, and OAuth 2.0](https://medium.com/scrum-and-coke/building-modern-web-applications-with-angular-net-and-oauth-2-0-complete-tutorial-series-7ea97ed3fc56) — Main tutorial
602
-
*[Stop Juggling Multiple Repos: Manage Your Full-Stack App Like a Workspace](#) — Git Submodules
603
-
*[End-to-End Testing Made Simple: How Playwright Transforms Testing](#) — Playwright Overview
604
-
***Why Your Angular App Needs PKCE** — This article
605
-
*[Lock Down Your Angular Routes: Auth Guards with OIDC in 5 Minutes](#) — Route Guards
*[Building Modern Web Applications with Angular, .NET, and OAuth 2.0](https://medium.com/scrum-and-coke/building-modern-web-applications-with-angular-net-and-oauth-2-0-complete-tutorial-series-7ea97ed3fc56) — Main tutorial
618
-
*[Stop Juggling Multiple Repos: Manage Your Full-Stack App Like a Workspace](#) — Git Submodules
619
-
*[End-to-End Testing Made Simple: How Playwright Transforms Testing](#) — Playwright Overview
620
-
*[Why Your Angular App Needs PKCE: OAuth 2.0 Explained with a Working Demo](#) — OAuth 2.0 PKCE Flow
*[Building Modern Web Applications with Angular, .NET, and OAuth 2.0](https://medium.com/scrum-and-coke/building-modern-web-applications-with-angular-net-and-oauth-2-0-complete-tutorial-series-7ea97ed3fc56) — Main tutorial
472
-
*[Stop Juggling Multiple Repos: Manage Your Full-Stack App Like a Workspace](#) — Git Submodules
473
-
*[End-to-End Testing Made Simple: How Playwright Transforms Testing](#) — Playwright Overview
474
-
*[Why Your Angular App Needs PKCE: OAuth 2.0 Explained with a Working Demo](#) — OAuth 2.0 PKCE Flow
475
-
*[Lock Down Your Angular Routes: Auth Guards with OIDC in 5 Minutes](#) — Route Guards
476
-
***Never Forget a Bearer Token Again** — This article
477
-
*[Show the Right Buttons to the Right People: Role-Based UI in Angular](#) — Role-Based UI
465
+
📖 **Series:**[AngularNetTutorial Series Navigation](../SERIES-NAVIGATION-TOC.md)
*[Building Modern Web Applications with Angular, .NET, and OAuth 2.0](https://medium.com/scrum-and-coke/building-modern-web-applications-with-angular-net-and-oauth-2-0-complete-tutorial-series-7ea97ed3fc56) — Main tutorial
578
-
*[Stop Juggling Multiple Repos: Manage Your Full-Stack App Like a Workspace](#) — Git Submodules
579
-
*[End-to-End Testing Made Simple: How Playwright Transforms Testing](#) — Playwright Overview
580
-
*[Why Your Angular App Needs PKCE: OAuth 2.0 Explained with a Working Demo](#) — OAuth 2.0 PKCE Flow
581
-
*[Lock Down Your Angular Routes: Auth Guards with OIDC in 5 Minutes](#) — Route Guards
Copy file name to clipboardExpand all lines: blogs/series-2-dotnet-api/2.1-dotnet-clean-architecture.md
+1-15Lines changed: 1 addition & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -860,21 +860,7 @@ No layer skips a step. No controller accesses the database directly. No handler
860
860
***Mapster** — Lightweight object mapping with explicit profiles for Value Object conversion
861
861
***Feature Management** — `AuthEnabled` and `UseInMemoryDatabase` flags for environment-specific behavior
862
862
863
-
---
864
-
865
-
## 📖 Series Navigation
866
-
867
-
**AngularNetTutorial Blog Series:**
868
-
869
-
*[Building Modern Web Applications with Angular, .NET, and OAuth 2.0](https://medium.com/scrum-and-coke/building-modern-web-applications-with-angular-net-and-oauth-2-0-complete-tutorial-series-7ea97ed3fc56) — Main tutorial
870
-
*[Stop Juggling Multiple Repos: Manage Your Full-Stack App Like a Workspace](#) — Git Submodules
871
-
*[End-to-End Testing Made Simple: How Playwright Transforms Testing](#) — Playwright Overview
872
-
*[Why Your Angular App Needs PKCE: OAuth 2.0 Explained with a Working Demo](#) — OAuth 2.0 PKCE Flow
873
-
*[Lock Down Your Angular Routes: Auth Guards with OIDC in 5 Minutes](#) — Route Guards
* Check the right `appsettings.json` file is loaded (Development vs Production)
496
496
* Verify `FeatureManagement:AuthEnabled` is `false`, not `"false"` (string)
497
497
498
-
---
499
-
500
-
## 📖 Series Navigation
501
-
502
-
**AngularNetTutorial Blog Series:**
503
-
504
-
*[Building Modern Web Applications with Angular, .NET, and OAuth 2.0](https://medium.com/scrum-and-coke/building-modern-web-applications-with-angular-net-and-oauth-2-0-complete-tutorial-series-7ea97ed3fc56) — Main tutorial
505
-
*[Stop Juggling Multiple Repos: Manage Your Full-Stack App Like a Workspace](#) — Git Submodules
506
-
*[End-to-End Testing Made Simple: How Playwright Transforms Testing](#) — Playwright Overview
507
-
*[Why Your Angular App Needs PKCE: OAuth 2.0 Explained with a Working Demo](#) — OAuth 2.0 PKCE Flow
508
-
*[Lock Down Your Angular Routes: Auth Guards with OIDC in 5 Minutes](#) — Route Guards
0 commit comments