DotNet Fullstack + Angular Tutorial
📂 Chapter 1: C# Fundamentals
1010
C# and .NET — The Platform, the Language and the Toolchain
Beginner
→
1020
Variables and Types — C#'s Type System
Beginner
→
1030
Strings — Interpolation, Verbatim Literals and Common Methods
Beginner
→
1040
Arrays — Fixed-Size Collections and Iteration
Beginner
→
1050
Console I/O and Top-Level Statements — Writing Your First Programs
Beginner
→
📂 Chapter 2: Control Flow
2010
If/Else and Ternary — Conditional Branching
Beginner
→
2020
Switch Statement and Switch Expressions — Modern Pattern Matching
Beginner
→
2030
For and Foreach Loops — Iterating Collections
Beginner
→
2040
While and Do-While — Condition-Based Loops
Beginner
→
2050
Logical Operators and Guard Clauses — Clean Conditional Code
Beginner
→
📂 Chapter 3: Methods, Parameters and Scope
3010
Declaring and Calling Methods — The Building Blocks of Reuse
Beginner
→
3020
Parameters and Return Values — Passing Data In and Out
Beginner
→
3030
Ref, Out and In — Passing by Reference
Beginner
→
3040
Method Overloading — Multiple Signatures, One Name
Beginner
→
3050
Scope, Local Variables and Local Functions
Beginner
→
📂 Chapter 4: OOP — Classes, Objects and Constructors
4010
Classes and Objects — Defining Types and Creating Instances
Beginner
→
4020
Properties — Encapsulation with Getters and Setters
Beginner
→
4030
Constructors — Initialising Objects Correctly
Beginner
→
4040
Static Members and Static Classes — Shared State and Utilities
Beginner
→
4050
Records — Immutable Data Types and Value Semantics
Beginner
→
📂 Chapter 5: Inheritance and Polymorphism
5010
Inheritance — Extending Classes with Base and Derived Types
Intermediate
→
5020
Virtual, Override and Sealed — Customising Inherited Behaviour
Intermediate
→
5030
Abstract Classes — Enforcing Structure in Derived Types
Intermediate
→
5040
Polymorphism — Writing Code That Works with Many Types
Intermediate
→
5050
Casting and Type Checking — is, as, and Pattern Matching
Intermediate
→
📂 Chapter 6: Interfaces and Abstract Classes
6010
Defining and Implementing Interfaces — Contracts Without Implementation
Intermediate
→
6020
Interfaces and Dependency Injection — The Foundation of Testable Code
Intermediate
→
6030
Explicit Interface Implementation — Resolving Conflicts and Hiding Members
Intermediate
→
6040
Default Interface Methods and Interface Evolution
Intermediate
→
6050
Interfaces vs Abstract Classes — Choosing the Right Abstraction
Intermediate
→
📂 Chapter 7: Collections — List, Dictionary, HashSet, Queue
7010
List<T> — The Go-To Dynamic Collection
Intermediate
→
7020
Dictionary<TKey, TValue> — Fast Key-Based Lookup
Intermediate
→
7030
HashSet<T> and Sorted Collections — Uniqueness and Ordering
Intermediate
→
7040
Queue<T>, Stack<T> and LinkedList<T> — Specialised Sequences
Intermediate
→
7050
Collection Interfaces and Choosing the Right Collection
Intermediate
→
📂 Chapter 8: Generics — Type-Safe Reusable Code
8010
Generic Classes and Methods — Writing Once, Using Many Types
Intermediate
→
8020
Generic Constraints — Restricting What T Can Be
Intermediate
→
8030
Generic Interfaces, Covariance and Contravariance
Intermediate
→
8040
The Result Pattern — Generic Error Handling Without Exceptions
Intermediate
→
8050
Generic Repository — Reusable Data Access with Type Safety
Intermediate
→
📂 Chapter 9: LINQ — Language Integrated Query
9010
LINQ Fundamentals — Querying Collections with Method Syntax
Intermediate
→
9020
LINQ Transformations — SelectMany, GroupBy, Join and Zip
Intermediate
→
9030
LINQ Aggregation and Set Operations
Intermediate
→
9040
LINQ Query Syntax and Advanced Patterns
Intermediate
→
9050
LINQ and EF Core — From In-Memory to SQL
Intermediate
→
📂 Chapter 10: Exception Handling — try/catch/finally
10010
Try, Catch and Finally — The Exception Handling Fundamentals
Intermediate
→
10020
Exception Types and Hierarchy — Choosing the Right Exception
Intermediate
→
10030
Custom Exceptions — Domain-Specific Error Types
Intermediate
→
10040
Exception Filters and the When Clause
Intermediate
→
10050
Global Exception Handling in ASP.NET Core
Intermediate
→
📂 Chapter 11: File I/O and Streams
11010
File and Directory Classes — Working with the Filesystem
Intermediate
→
11020
Streams — StreamReader, StreamWriter and FileStream
Intermediate
→
11030
Async File I/O — Non-Blocking File Operations
Intermediate
→
11040
JSON Serialisation — System.Text.Json in Depth
Intermediate
→
11050
CSV and Binary Files — Processing Structured File Formats
Intermediate
→
📂 Chapter 12: Delegates, Events and Lambdas
12010
Delegates — Type-Safe Function Pointers
Advanced
→
12020
Lambda Expressions — Inline Anonymous Functions
Advanced
→
12030
Action, Func and Predicate — Built-In Delegate Types
Advanced
→
12040
Events — The Publisher-Subscriber Pattern
Advanced
→
12050
Expression Trees and Func vs Expression
Advanced
→
📂 Chapter 13: Async/Await and the Task Parallel Library
13010
Task and Async/Await — Non-Blocking Asynchronous Code
Advanced
→
13020
Task Combinators — WhenAll, WhenAny and Concurrent Operations
Advanced
→
13030
CancellationToken — Cooperative Cancellation and Timeouts
Advanced
→
13040
Parallel Class and PLINQ — CPU-Bound Parallelism
Advanced
→
13050
Async Patterns and Common Pitfalls — Deadlocks, Exceptions, Async Void
Advanced
→
📂 Chapter 14: Pattern Matching, Records and C# 10-12 Features
14010
Pattern Matching Deep Dive — is, switch Expressions and Patterns
Advanced
→
14020
Records in Depth — Immutability, Equality and Inheritance
Advanced
→
14030
C# 10 and 11 Features — Global Usings, File-Scoped Namespaces, Required Members
Advanced
→
14040
C# 12 Features — Primary Constructors, Collection Expressions and Aliases
Advanced
→
14050
Nullable Reference Types — Eliminating Null Reference Exceptions
Advanced
→
📂 Chapter 15: Advanced C# — Span, Memory and Reflection
15010
Span and Memory — Zero-Allocation Slicing
Advanced
→
15020
ArrayPool and stackalloc — Avoiding Heap Allocations
Advanced
→
15030
Reflection — Inspecting Types and Members at Runtime
Advanced
→
15040
Custom Attributes — Metadata Annotations for Your Types
Advanced
→
15050
Source Generators and Compile-Time Code Generation
Advanced
→
📂 Chapter 16: Project Structure, NuGet and Solution Files
16010
The .NET Project — csproj, Program.cs and the SDK
Intermediate
→
16020
Solution Files and Multi-Project Structure
Intermediate
→
16030
NuGet Packages — Finding, Installing and Managing Dependencies
Intermediate
→
16040
Layered Architecture — Organising a Clean Solution
Intermediate
→
16050
dotnet CLI, Global Tools and Project Settings
Intermediate
→
📂 Chapter 17: .NET Core Architecture and the Generic Host
17010
.NET Runtime Overview — CLR, JIT and the SDK vs Runtime
Intermediate
→
17020
The Generic Host — IHost, IHostBuilder and Application Lifetime
Intermediate
→
17030
Startup and Program.cs — The Modern Minimal API Bootstrap
Intermediate
→
17040
Environments and Configuration Bootstrap
Intermediate
→
17050
IHostedService and Application Lifetime
Intermediate
→
📂 Chapter 18: Dependency Injection — Built-In IoC Container
18010
DI Fundamentals — Service Registration and Constructor Injection
Intermediate
→
18020
Service Lifetimes — Transient, Scoped and Singleton
Intermediate
→
18030
Advanced Registration — Factories, Open Generics and Decorators
Intermediate
→
18040
Resolving Services — GetRequiredService, Scopes and Service Locator
Intermediate
→
18050
IOptions Pattern — Strongly-Typed Configuration Binding
Intermediate
→
📂 Chapter 19: Configuration — appsettings, Environments, Secrets
19010
The Configuration System — IConfiguration and Providers
Intermediate
→
19020
appsettings.json — Structure, Hierarchy and Type Binding
Intermediate
→
19030
Environment Variables and User Secrets
Intermediate
→
19040
Custom Configuration Providers and Azure Key Vault
Intermediate
→
19050
Configuration Validation and Fail-Fast Startup
Intermediate
→
📂 Chapter 20: Logging — Built-In Logging and Serilog
20010
ILogger Fundamentals — Log Levels, Messages and Injection
Intermediate
→
20020
Structured Logging — Properties, Scopes and Correlation
Intermediate
→
20030
Serilog — Setup, Sinks and Enrichers
Intermediate
→
20040
Request Logging and Performance Logging
Intermediate
→
20050
Log Filtering, Sinks and Production Configuration
Intermediate
→
📂 Chapter 21: Middleware Pipeline — Built-In and Custom
21010
Middleware Pipeline Fundamentals — Request and Response Flow
Intermediate
→
21020
Built-In Middleware — HTTPS, CORS, Static Files and Routing
Intermediate
→
21030
Custom Middleware — Writing Reusable Request Processing Components
Intermediate
→
21040
Pipeline Branching — Map, MapWhen and UseWhen
Intermediate
→
21050
Endpoint Routing — MapControllers, MapGet and Endpoint Metadata
Intermediate
→
📂 Chapter 22: Background Services and IHostedService
22010
IHostedService Lifecycle — StartAsync, StopAsync and Graceful Shutdown
Intermediate
→
22020
BackgroundService — The Long-Running Loop Pattern
Intermediate
→
22030
Periodic Tasks — Timers, Cron and PeriodicTimer
Intermediate
→
22040
Channel<T> — Async Producer-Consumer Queues
Intermediate
→
22050
Worker Service — Standalone Background Processing
Intermediate
→
📂 Chapter 23: .NET Core Security — Data Protection and HTTPS
23010
HTTPS, HSTS and Certificate Management
Advanced
→
23020
Data Protection API — Encrypting Sensitive Data
Advanced
→
23030
Anti-Forgery Tokens and Security Headers
Advanced
→
23040
Secret Management and Key Rotation
Advanced
→
23050
Secure Coding Practices — Input Validation, SQL Injection and XSS Prevention
Advanced
→
📂 Chapter 24: Publishing — Self-Contained, Docker and IIS
24010
Publishing Modes — Framework-Dependent, Self-Contained and Single File
Advanced
→
24020
Docker Containerisation — Dockerfile and Multi-Stage Builds
Advanced
→
24030
Docker Compose — Local Multi-Service Development
Advanced
→
24040
IIS and Windows Deployment — The ASP.NET Core Module
Advanced
→
24050
CI/CD Pipeline — GitHub Actions for Build, Test and Deploy
Advanced
→
📂 Chapter 25: ASP.NET MVC — Pattern and Project Setup
25010
The MVC Pattern — Model, View and Controller Roles
Beginner
→
25020
Creating an ASP.NET Core MVC Project
Beginner
→
25030
MVC Request Lifecycle — Routing to Response
Beginner
→
25040
Conventional Routing — Route Templates and Constraints
Beginner
→
25050
MVC Program.cs — Services, Middleware and Static Files
Beginner
→
📂 Chapter 26: Controllers and Action Methods
26010
Controller Basics — Naming, Inheritance and DI
Beginner
→
26020
Action Methods — Return Types, Parameters and HTTP Verbs
Beginner
→
26030
Action Results — ViewResult, RedirectResult and All Result Types
Beginner
→
26040
Model Binding Basics — Forms, Route Values and Query Strings
Beginner
→
26050
TempData, ViewBag and ViewData — Passing Data to Views
Beginner
→
📂 Chapter 27: Razor Views, Layouts and Partial Views
27010
Razor Syntax — C# in HTML Templates
Intermediate
→
27020
Layouts and Sections — Master Page Templates
Intermediate
→
27030
Partial Views — Reusable HTML Fragments
Intermediate
→
27040
Tag Helpers — HTML-Friendly ASP.NET Core Helpers
Intermediate
→
27050
View Components — Reusable UI with DI and Logic
Intermediate
→
📂 Chapter 28: Models, Data Annotations and Validation
28010
ViewModels — Designing Data Contracts for Views
Intermediate
→
28020
Data Annotations — Declarative Validation Rules
Intermediate
→
28030
Custom Validation — IValidatableObject and Custom Attributes
Intermediate
→
28040
Client-Side Validation — Unobtrusive jQuery Validation
Intermediate
→
28050
ModelState Patterns — Errors, Display and AJAX Validation
Intermediate
→
📂 Chapter 29: Routing and URL Generation
29010
Attribute Routing — Route Templates on Controllers and Actions
Intermediate
→
29020
URL Generation — Url.Action, Url.RouteUrl and Tag Helpers
Intermediate
→
29030
Route Constraints and Defaults — Fine-Tuning URL Matching
Intermediate
→
29040
Areas — Organising Large MVC Applications
Intermediate
→
29050
SEO-Friendly Routing — Slugs, Canonical URLs and Redirects
Intermediate
→
📂 Chapter 30: Tag Helpers and View Components
30010
Custom Tag Helpers — Building Reusable HTML Components
Intermediate
→
30020
Advanced Form Tag Helpers — Select, Checkbox and File Upload
Intermediate
→
30030
Environment, Cache and Script Tag Helpers
Intermediate
→
30040
Advanced View Components — Parameters, Caching and Testing
Intermediate
→
30050
Razor Pages vs MVC — Choosing the Right Pattern
Intermediate
→
📂 Chapter 31: ASP.NET Core Identity — Authentication and Roles
31010
ASP.NET Core Identity Setup — Users, Roles and Database
Advanced
→
31020
User Registration and Login — UserManager and SignInManager
Advanced
→
31030
Role-Based Authorization — Roles, Claims and Policies
Advanced
→
31040
Email Confirmation and Password Reset
Advanced
→
31050
External Login and Two-Factor Authentication
Advanced
→
📂 Chapter 32: Action Filters, Error Handling and MVC Middleware
32010
Action Filters — OnActionExecuting and OnActionExecuted
Advanced
→
32020
Result Filters and Exception Filters
Advanced
→
32030
Global Error Handling — UseExceptionHandler and ProblemDetails
Advanced
→
32040
Resource and Authorization Filters
Advanced
→
32050
Filter Pipeline, Order and Cross-Cutting Concerns
Advanced
→
📂 Chapter 33: Web API Fundamentals — REST and Project Setup
33010
REST Principles — Resources, Verbs and Status Codes
Beginner
→
33020
ASP.NET Core Web API Project Setup
Beginner
→
33030
The [ApiController] Attribute — Automatic Behaviour
Beginner
→
33040
ControllerBase — HTTP Responses and Helper Methods
Beginner
→
33050
Swagger and OpenAPI — Auto-Generated API Documentation
Beginner
→
📂 Chapter 34: Controllers, Routing and HTTP Methods
34010
Web API Controller Structure — Route Prefixes and Action Names
Beginner
→
34020
HTTP GET Patterns — Collections, Single Resources and Filtering
Beginner
→
34030
HTTP POST, PUT and PATCH — Creating and Updating Resources
Beginner
→
34040
HTTP DELETE and Special Actions — Soft Delete and Custom Operations
Beginner
→
34050
Versioning Strategies and HTTP Headers
Beginner
→
📂 Chapter 35: Request and Response — DTOs and Content Negotiation
35010
Request DTOs — Designing Input Contracts
Beginner
→
35020
Response DTOs — Shaping API Output
Beginner
→
35030
Advanced Model Binding — Sources, Custom Binders and Complex Types
Beginner
→
35040
Content Negotiation — JSON, XML and Custom Formatters
Beginner
→
35050
DTO Mapping Patterns — Manual, AutoMapper and Projection
Beginner
→
📂 Chapter 36: Model Binding, Validation and FluentValidation
36010
The Validation Pipeline — DataAnnotations and ModelState in Web APIs
Intermediate
→
36020
FluentValidation — Setup and Basic Rules
Intermediate
→
36030
Advanced FluentValidation — Cross-Property Rules and Async Validators
Intermediate
→
36040
Validation Error Response Shapes — Consistent 400 Responses
Intermediate
→
36050
Validation Best Practices — Layered Validation and Domain Rules
Intermediate
→
📂 Chapter 37: Entity Framework Core — Setup and DbContext
37010
EF Core Fundamentals — ORM Concepts and the DbContext
Intermediate
→
37020
Entity Configuration — Data Annotations and Fluent API
Intermediate
→
37030
Relationships — One-to-Many, Many-to-Many and One-to-One
Intermediate
→
37040
DbContext Lifetime, Scoping and Connection Pooling
Intermediate
→
37050
EF Core Querying Basics — LINQ, AsNoTracking and Eager Loading
Intermediate
→
📂 Chapter 38: EF Core Migrations, Seeding and CRUD Operations
38010
EF Core Migrations — Creating, Applying and Managing Schema Changes
Intermediate
→
38020
Data Seeding — HasData, Custom Seeds and Migration Seeds
Intermediate
→
38030
CRUD Operations — Create, Read, Update and Delete with EF Core
Intermediate
→
38040
Transactions — Explicit Transactions and SaveChanges Behaviour
Intermediate
→
38050
Raw SQL and Stored Procedures — When to Go Beyond LINQ
Intermediate
→
📂 Chapter 39: Repository Pattern and Unit of Work
39010
The Repository Pattern — Abstractions Over Data Access
Intermediate
→
39020
Generic Repository — IRepository and Specification Pattern
Intermediate
→
39030
Unit of Work — Coordinating Multiple Repositories
Intermediate
→
39040
Testing with Repository Abstractions — In-Memory and Mocking
Intermediate
→
39050
CQRS Intro — Separating Read and Write Models
Intermediate
→
📂 Chapter 40: JWT Authentication and Role-Based Authorisation
40010
JWT Fundamentals — Structure, Claims and Validation
Intermediate
→
40020
Token Generation — Issuing Access and Refresh Tokens
Intermediate
→
40030
Protecting Endpoints — [Authorize] and Role-Based Access
Intermediate
→
40040
Refresh Tokens — Sliding Expiry and Token Rotation
Intermediate
→
40050
JWT Security Best Practices — Secrets, Storage and Revocation
Intermediate
→
📂 Chapter 41: Middleware, Action Filters and Global Error Handling
41010
The Web API Middleware Pipeline — Request Context and Short-Circuiting
Advanced
→
41020
Web API Action Filters — Logging, Rate Limiting and Idempotency
Advanced
→
41030
Global Exception Handling — IExceptionHandler and ProblemDetails
Advanced
→
41040
Request and Response Logging — Structured Logs for API Observability
Advanced
→
41050
Health Checks, Readiness and Liveness Probes
Advanced
→
📂 Chapter 42: API Versioning and Swagger/OpenAPI Documentation
42010
API Versioning Strategies — URL, Header and Query String
Advanced
→
42020
Versioned Controllers — Maintaining Multiple API Versions
Advanced
→
42030
Advanced OpenAPI — Schemas, Examples and Custom Operations
Advanced
→
42040
NSwag — Generating TypeScript Clients for Angular
Advanced
→
42050
API Documentation Best Practices — Contracts and Changelogs
Advanced
→
📂 Chapter 43: Caching — In-Memory, Redis and Response Caching
43010
In-Memory Caching — IMemoryCache and Cache-Aside Pattern
Advanced
→
43020
Distributed Caching — Redis with IDistributedCache and StackExchange.Redis
Advanced
→
43030
Output Caching — ASP.NET Core 7+ Response Caching
Advanced
→
43040
Cache Invalidation — Strategies and Patterns
Advanced
→
43050
Caching Best Practices — TTL, Stampedes and Consistency
Advanced
→
📂 Chapter 44: SignalR — Real-Time Web Communication
44010
SignalR Fundamentals — Hubs, Connections and Transport Fallback
Advanced
→
44020
Hub Methods — Server Methods, Client Invocations and Groups
Advanced
→
44030
Hub Authentication — JWT Bearer and User-Specific Channels
Advanced
→
44040
Scaling SignalR — Redis Backplane for Multi-Server Deployments
Advanced
→
44050
SignalR Patterns — Notifications, Live Updates and Presence
Advanced
→
📂 Chapter 45: File Uploads, Email and Background Tasks
45010
File Uploads — IFormFile, Storage Abstraction and Validation
Advanced
→
45020
Azure Blob Storage — Uploading, Downloading and Generating SAS URLs
Advanced
→
45030
Email — Sending Transactional Email with MailKit and Templates
Advanced
→
45040
Background Tasks — IHostedService, BackgroundService and Channels
Advanced
→
45050
Hangfire — Persistent Job Scheduling and Retry
Advanced
→
📂 Chapter 46: Performance, Rate Limiting and Security Hardening
46010
Rate Limiting — ASP.NET Core Built-In Policies and Per-User Limits
Advanced
→
46020
Response Compression and Minimal API Performance
Advanced
→
46030
Security Headers — HTTP Security Headers and HTTPS Enforcement
Advanced
→
46040
API Security Hardening — OWASP Top 10 for Web APIs
Advanced
→
46050
Performance Profiling — Benchmarking, Profiling and Production Tuning
Advanced
→
📂 Chapter 47: Angular Setup, TypeScript and Project Structure
47010
Angular CLI and Workspace — ng new, Project Structure and Configuration
Beginner
→
47020
TypeScript Essentials for Angular — Types, Interfaces and Generics
Beginner
→
47030
Angular Modules vs Standalone Components — Angular 18 Architecture
Beginner
→
47040
Feature-Based Project Structure — Organising a Large Angular App
Beginner
→
47050
Angular 18 Features — Signals, Control Flow and Deferrable Views
Beginner
→
📂 Chapter 48: Angular Components
48010
Component Anatomy — @Component, Template, Styles and Metadata
Beginner
→
48020
@Input and @Output — Parent-Child Component Communication
Beginner
→
48030
Component Lifecycle Hooks — ngOnInit, ngOnChanges and ngOnDestroy
Beginner
→
48040
Content Projection and ViewChild — ng-content and Template References
Beginner
→
48050
Change Detection — OnPush Strategy and Signal-Based Optimisation
Beginner
→
📂 Chapter 49: Data Binding and Event Handling
49010
Interpolation and Property Binding — Displaying Data in Templates
Beginner
→
49020
Event Binding — Handling User Interactions and the $event Object
Beginner
→
49030
Two-Way Binding — ngModel and Signal-Based Alternatives
Beginner
→
49040
Pipes — Transforming Data in Templates
Beginner
→
49050
Template Reference Variables and Host Binding
Beginner
→
📂 Chapter 50: Built-in Directives — NgIf, NgFor, NgClass, NgStyle
50010
New Built-In Control Flow — @if, @for, @switch in Angular 17+
Beginner
→
50020
Legacy *ngIf and *ngFor — Structural Directives
Beginner
→
50030
NgClass and NgStyle — Dynamic Classes and Styles
Beginner
→
50040
Custom Attribute Directives — Building Reusable DOM Behaviours
Beginner
→
50050
ng-container, ng-template and Structural Directive Patterns
Beginner
→
📂 Chapter 51: Angular Services and Dependency Injection
51010
Services and @Injectable — Creating Singleton Services
Intermediate
→
51020
Dependency Injection Providers — useClass, useValue, useFactory, useExisting
Intermediate
→
51030
Service Patterns — State Management, Error Handling and Caching
Intermediate
→
51040
Hierarchical DI — Component-Level Providers and Scoped Services
Intermediate
→
51050
NgModules — Understanding and Using Third-Party Module-Based Libraries
Intermediate
→
📂 Chapter 52: HttpClient — Calling the ASP.NET Core Web API
52010
HttpClient Basics — GET, POST, PUT, DELETE and Response Types
Intermediate
→
52020
HTTP Interceptors — Auth Headers, Error Handling and Retry
Intermediate
→
52030
Typed HTTP Service — Complete API Client Pattern
Intermediate
→
52040
File Upload and Download — FormData and Blob Responses
Intermediate
→
52050
Loading States, Error Boundaries and Offline Handling
Intermediate
→
📂 Chapter 53: Routing, Navigation, Guards and Lazy Loading
53010
Router Setup — Routes, RouterOutlet and Navigation
Intermediate
→
53020
Route Guards — CanActivate, CanDeactivate and Resolve
Intermediate
→
53030
Lazy Loading — loadComponent and loadChildren
Intermediate
→
53040
Router State — ActivatedRoute, QueryParams and Navigation Extras
Intermediate
→
53050
Router Patterns — Breadcrumbs, Scroll Restoration and Route Animations
Intermediate
→
📂 Chapter 54: Template-Driven Forms
54010
NgModel and FormsModule — Wiring Up Template-Driven Forms
Intermediate
→
54020
Template-Driven Validation — Built-In Validators and Error Display
Intermediate
→
54030
Template-Driven Form Patterns — Multi-Step Forms and Dynamic Fields
Intermediate
→
54040
Template-Driven vs Reactive Forms — Choosing the Right Approach
Intermediate
→
54050
Template-Driven Forms with Angular Material
Intermediate
→
📂 Chapter 55: Reactive Forms and Custom Validators
55010
FormGroup and FormControl — Building the Reactive Form Model
Intermediate
→
55020
Reactive Validation — Built-In Validators, Composition and Error Display
Intermediate
→
55030
Custom Validators — Sync and Async Validation Functions
Intermediate
→
55040
Dynamic Forms — FormArray and Programmatic Control Management
Intermediate
→
55050
Complete Post Form — Full BlogApp Create and Edit Form
Intermediate
→
📂 Chapter 56: RxJS — Observables, Operators and Subjects
56010
Observables and Subscriptions — Cold vs Hot and the Subscription Lifecycle
Advanced
→
56020
Core RxJS Operators — Transformation, Filtering and Combination
Advanced
→
56030
Subjects — BehaviorSubject, ReplaySubject and EventBus Patterns
Advanced
→
56040
RxJS Patterns — Search, Polling and Request Cancellation
Advanced
→
56050
RxJS and Signals — Bridging with toSignal and toObservable
Advanced
→
📂 Chapter 57: NgRx — Redux State Management for Angular
57010
Redux Pattern and NgRx — Actions, Reducers and Store
Advanced
→
57020
Selectors and Effects — Derived State and Side Effects
Advanced
→
57030
NgRx ComponentStore — Lightweight Local State
Advanced
→
57040
NgRx Entity — Normalised Collection State
Advanced
→
57050
NgRx Signal Store — Modern State Management with Signals
Advanced
→
📂 Chapter 58: Angular Material and Responsive Layouts
58010
Angular Material Setup — Theming, Typography and Global Styles
Intermediate
→
58020
Core Material Components — Navigation, Cards, Tables and Dialogs
Intermediate
→
58030
Responsive Layout — Angular CDK Layout and Breakpoint Observer
Intermediate
→
58040
Material Form Components — mat-form-field, mat-select and mat-datepicker
Intermediate
→
58050
Material Feedback — Snackbar, Progress Indicators and Loading States
Intermediate
→
📂 Chapter 59: Custom Directives, Pipes and Advanced Components
59010
Advanced Attribute Directives — Injecting Services, Input Aliasing and Exportable Directives
Advanced
→
59020
Custom Structural Directives — *appIf, *appRepeat and Context Variables
Advanced
→
59030
Advanced Pipes — Impure Pipes, Pipe Composition and Pipe with Injection
Advanced
→
59040
Dynamic Components — ComponentRef, ViewContainerRef and CDK Portal
Advanced
→
59050
Advanced Component Patterns — Control Value Accessor and Compound Components
Advanced
→
📂 Chapter 60: Angular Security — JWT, Auth Guards and Best Practices
60010
Auth Service — JWT Storage, Token Refresh and Session Management
Advanced
→
60020
Secure Token Storage — Memory vs localStorage vs httpOnly Cookies
Advanced
→
60030
Auth Interceptor — Token Injection, Refresh and Retry
Advanced
→
60040
XSS Prevention — Angular's Security Model and Safe HTML Handling
Advanced
→
60050
Angular Security Checklist — CSRF, Route Protection and Pre-Deployment Review
Advanced
→
📂 Chapter 61: SQL Server Setup — LocalDB, SSMS and sqlcmd
61010
SQL Server Editions — Developer, Express, LocalDB and Azure SQL
Beginner
→
61020
SSMS and Azure Data Studio — Connecting and Managing the Database
Beginner
→
61030
sqlcmd and Command-Line Tools — Scripting Database Operations
Beginner
→
61040
Database Creation — CREATE DATABASE, File Groups and Configuration
Beginner
→
61050
Connection Strings — LocalDB, Full Instance and Azure SQL
Beginner
→
📂 Chapter 62: T-SQL Fundamentals — DDL and DML
62010
T-SQL Data Types — Choosing the Right Type for Each Column
Beginner
→
62020
DDL — CREATE TABLE, ALTER TABLE and Constraints
Beginner
→
62030
DML — INSERT, UPDATE, DELETE and OUTPUT
Beginner
→
62040
Transactions — BEGIN TRANSACTION, COMMIT, ROLLBACK and TRY/CATCH
Beginner
→
62050
BlogApp Schema — Complete DDL Script and Seed Data
Beginner
→
📂 Chapter 63: Querying — SELECT, WHERE, ORDER BY and GROUP BY
63010
SELECT and WHERE — Retrieving and Filtering Data
Beginner
→
63020
ORDER BY and Pagination — Sorted Results and OFFSET/FETCH
Beginner
→
63030
Aggregate Functions and GROUP BY — Counting, Summing and Grouping
Beginner
→
63040
Built-In Functions — String, Date and Conversion Functions
Beginner
→
63050
BlogApp SELECT Queries — Published Posts, Search and Analytics
Beginner
→
📂 Chapter 64: Joins, Subqueries and Common Table Expressions
64010
INNER JOIN and OUTER JOINs — Combining Related Tables
Intermediate
→
64020
Subqueries — Correlated, Derived Tables and EXISTS
Intermediate
→
64030
Common Table Expressions — WITH Clause for Readable Recursive Queries
Intermediate
→
64040
Window Functions — ROW_NUMBER, RANK, LEAD and LAG
Intermediate
→
64050
Advanced BlogApp Queries — CTEs, Window Functions and Analytical Patterns
Intermediate
→
📂 Chapter 65: Stored Procedures and User-Defined Functions
65010
Stored Procedures — CREATE, ALTER, Parameters and Error Handling
Intermediate
→
65020
Stored Procedure Patterns — Upsert, Paging and Audit Logging
Intermediate
→
65030
Scalar Functions — Reusable Calculations and Formatting
Intermediate
→
65040
Table-Valued Functions — Inline TVFs and Multi-Statement TVFs
Intermediate
→
65050
Stored Procedures vs ORM — Choosing the Right Approach for the BlogApp
Intermediate
→
📂 Chapter 66: Views, Triggers and Sequences
66010
Views — CREATE VIEW, Updatable Views and Indexed Views
Intermediate
→
66020
INSTEAD OF Triggers — Intercepting INSERT, UPDATE and DELETE
Intermediate
→
66030
AFTER Triggers — Audit Logging and Cascading Operations
Intermediate
→
66040
Sequences — CREATE SEQUENCE and Application-Level ID Generation
Intermediate
→
66050
Views, Triggers and Sequences — Production Patterns and EF Core Integration
Intermediate
→
📂 Chapter 67: Indexes, Execution Plans and Query Optimisation
67010
Index Fundamentals — Clustered, Non-Clustered and Composite Indexes
Advanced
→
67020
Reading Execution Plans — Identifying Scans, Seeks and Key Lookups
Advanced
→
67030
Query Optimisation — Rewriting Queries for Better Execution Plans
Advanced
→
67040
Index Maintenance — Fragmentation, Rebuild and Reorganise
Advanced
→
67050
BlogApp Index Strategy — Designing and Validating the Complete Index Set
Advanced
→
📂 Chapter 68: Transactions, Concurrency and Isolation Levels
68010
Isolation Levels — READ COMMITTED, SNAPSHOT and SERIALIZABLE
Advanced
→
68020
Locking — Shared, Exclusive and Update Locks
Advanced
→
68030
Deadlocks — Detection, Prevention and Resolution
Advanced
→
68040
Optimistic Concurrency — rowversion, Timestamp and Application Patterns
Advanced
→
68050
Concurrency Patterns — Preventing Double Submissions and Race Conditions
Advanced
→
📂 Chapter 69: Entity Framework Core Deep Dive with SQL Server
69010
EF Core SQL Generation — What EF Core Sends to SQL Server
Advanced
→
69020
EF Core Performance — N+1 Queries, Projections and Compiled Queries
Advanced
→
69030
Advanced Migrations — Custom SQL, Data Migrations and Squashing
Advanced
→
69040
Advanced EF Core Mapping — Value Objects, Owned Types and Table Splitting
Advanced
→
69050
EF Core Interceptors — Audit Logging, Soft Delete and Query Tagging
Advanced
→
📂 Chapter 70: SQL Server Security, Backup and Maintenance
70010
SQL Server Security — Logins, Users, Roles and Row-Level Security
Advanced
→
70020
Backup and Restore — Full, Differential and Transaction Log Backups
Advanced
→
70030
SQL Server Monitoring — DMVs, Extended Events and Performance Baselines
Advanced
→
70040
Database Maintenance — DBCC, Statistics and Automated Jobs
Advanced
→
70050
Production Readiness — Azure SQL, Connection Resilience and Pre-Deployment Checklist
Advanced
→
📂 Chapter 71: Connecting Angular to ASP.NET Core — CORS and Environments
71010
CORS Configuration — Allowing Angular to Call the ASP.NET Core API
Intermediate
→
71020
Angular Environments — environment.ts, Build Configurations and API URLs
Intermediate
→
71030
Angular Development Proxy — Eliminating CORS in Local Development
Intermediate
→
71040
API Client Service — Typed HttpClient Service with Error Handling
Intermediate
→
71050
End-to-End Connection — Verifying the Angular to API Pipeline
Intermediate
→
📂 Chapter 72: JWT Auth End-to-End — Angular Login to API Token
72010
ASP.NET Core JWT Setup — Issuing Tokens on Login
Intermediate
→
72020
Angular Login Flow — LoginComponent, AuthService and Token Storage
Intermediate
→
72030
Auth Interceptor End-to-End — Injecting Tokens and Handling 401s
Intermediate
→
72040
Route Guards End-to-End — Protecting Admin Routes with Roles
Intermediate
→
72050
Auth End-to-End Verification — Testing the Complete Auth Pipeline
Intermediate
→
📂 Chapter 73: Full CRUD — Angular + Web API + EF Core + SQL Server
73010
API CRUD Endpoints — Posts Controller with Validation and Authorization
Intermediate
→
73020
Angular Post List — Pagination, Filtering and State Management
Intermediate
→
73030
Angular Post Detail — Full Post View with Related Content
Intermediate
→
73040
Angular Admin CRUD — Post Create, Edit and Delete
Intermediate
→
73050
Full CRUD Verification — End-to-End Data Flow from Angular to SQL Server
Intermediate
→
📂 Chapter 74: File Uploads and Image Display Full Stack
74010
ASP.NET Core File Upload — IFormFile, Validation and Storage
Intermediate
→
74020
Azure Blob Storage — Production File Storage with SAS URLs
Intermediate
→
74030
Angular File Upload — Drag-and-Drop, Progress Tracking and Preview
Intermediate
→
74040
Image Display — Responsive Images, Lazy Loading and CDN Optimisation
Intermediate
→
74050
File Upload End-to-End — Cover Image and Avatar Full Flow
Intermediate
→
📂 Chapter 75: SignalR Real-Time — Angular Client to .NET Hub
75010
ASP.NET Core SignalR Hub — Groups, Authentication and Method Invocation
Advanced
→
75020
Angular SignalR Service — HubConnection, Reconnection and RxJS Integration
Advanced
→
75030
Live Comments — Real-Time Comment Feed with Optimistic Updates
Advanced
→
75040
SignalR Notifications — User-Specific Push and Admin Broadcasts
Advanced
→
75050
SignalR End-to-End — Verifying Real-Time Flow and Scaling Considerations
Advanced
→
📂 Chapter 76: Error Handling, Interceptors and Global UX Patterns
76010
ASP.NET Core Global Error Handling — ProblemDetails and Exception Middleware
Advanced
→
76020
Angular HTTP Interceptors — Logging, Loading State and Retry
Advanced
→
76030
Angular Error Boundaries — Global Error Handler and Component Error UI
Advanced
→
76040
Global Loading State and Optimistic UX Patterns
Advanced
→
76050
Part 7 Completion — Full Stack Integration Summary and Production Readiness
Advanced
→
📂 Chapter 77: Testing Strategy — Pyramid, Tools and Best Practices
77010
The Test Pyramid — Unit, Integration and End-to-End Tests
Intermediate
→
77020
C# Testing Tools — xUnit, FluentAssertions, Moq and Bogus
Intermediate
→
77030
Angular Testing Tools — Jasmine, Karma, TestBed and Testing Library
Intermediate
→
77040
What to Test — Coverage Strategy and Finding the Right Test Boundary
Intermediate
→
77050
TDD Workflow — Red-Green-Refactor for the BlogApp
Intermediate
→
📂 Chapter 78: Unit Testing C# with xUnit and FluentAssertions
78010
xUnit Fundamentals — Facts, Theories and Test Organisation
Intermediate
→
78020
FluentAssertions — Readable Assertions for Every Type
Intermediate
→
78030
Testing the BlogApp Service Layer — PostsService and AuthService
Intermediate
→
78040
Testing Edge Cases — Boundary Values, Null Handling and Concurrency
Intermediate
→
78050
Test Data Builders — Builder Pattern and AutoFixture for Maintainable Test Data
Intermediate
→
📂 Chapter 79: Mocking Dependencies with Moq and NSubstitute
79010
Moq Fundamentals — Setup, Returns, Callback and Verify
Intermediate
→
79020
Advanced Moq Patterns — Protected Members, Recursive Mocks and Moq.AutoMock
Intermediate
→
79030
NSubstitute — Simpler Mocking Syntax for the BlogApp
Intermediate
→
79040
Mocking HttpClient — Testing Services That Make External HTTP Calls
Intermediate
→
79050
Test Doubles Patterns — When to Mock vs Stub vs Fake vs Spy
Intermediate
→
📂 Chapter 80: Integration Testing ASP.NET Core Web API
80010
WebApplicationFactory — In-Memory API Testing
Advanced
→
80020
Testing API Endpoints — Requests, Responses and Status Codes
Advanced
→
80030
Test Database Strategies — Isolation, Seeding and Cleanup
Advanced
→
80040
Authentication Integration Tests — JWT, Roles and Forbidden Access
Advanced
→
80050
Integration Test Patterns — Shared Fixtures, Helpers and Maintainability
Advanced
→
📂 Chapter 81: Unit Testing Angular with Jasmine and Karma
81010
Jasmine Fundamentals — describe, it, expect and Spies
Intermediate
→
81020
Testing Angular Services — HttpClient, Signals and RxJS Observables
Intermediate
→
81030
Testing Pipes, Validators and Pure Functions
Intermediate
→
81040
Karma Configuration — Headless Chrome, Code Coverage and CI
Intermediate
→
81050
Jest for Angular — Faster Unit Tests with jest-preset-angular
Intermediate
→
📂 Chapter 82: Angular Component and Service Testing
82010
TestBed Component Testing — Rendering, Inputs and Outputs
Advanced
→
82020
Testing Angular Signals — State, Effects and Computed Values
Advanced
→
82030
Testing Reactive Forms — Validation, Submission and Error Messages
Advanced
→
82040
Testing Routing — Navigation, Guards and Route Parameters
Advanced
→
82050
Component Testing Patterns — Angular Testing Library and Page Objects
Advanced
→
📂 Chapter 83: End-to-End Testing with Cypress
83010
Cypress Setup — Installation, Configuration and First Test
Advanced
→
83020
Cypress Selectors and Interactions — Best Practices for Stable Tests
Advanced
→
83030
Cypress Authentication — Login Flow and Session Management
Advanced
→
83040
BlogApp E2E Flows — Critical User Journeys
Advanced
→
83050
Cypress in CI — GitHub Actions, Artifacts and Parallel Execution
Advanced
→
📂 Chapter 84: Coverage, CI Pipeline and Test Automation
84010
Code Coverage — Measuring, Reporting and Setting Meaningful Thresholds
Advanced
→
84020
GitHub Actions CI Pipeline — Complete Multi-Stage Workflow
Advanced
→
84030
Test Automation Quality — Preventing Flaky Tests and Maintaining Test Suites
Advanced
→
84040
Mutation Testing — Verifying Test Quality with Stryker.NET
Advanced
→
84050
Part 8 Completion — Testing Summary and Part 9 Preview
Advanced
→
📂 Chapter 86: Backend — Domain, Application and Infrastructure Layers
86010
Complete Domain Model — Listings, Users and Contact Requests
Advanced
→
86020
Application Layer — Command and Query Handlers
Advanced
→
86030
Infrastructure — EF Core Schema, Repositories and Migrations
Advanced
→
86040
API Controllers — Thin Adapters Over MediatR
Advanced
→
86050
Backend Integration Tests — Testing the Full Clean Architecture Stack
Advanced
→
📂 Chapter 87: Authentication, Roles and Listings Management
87010
ASP.NET Core Identity — Roles, Claims and Profile Extension
Advanced
→
87020
Listing Ownership and Authorisation — Policies and Resource Guards
Advanced
→
87030
Admin and Moderation — Listing Approval and User Management
Advanced
→
87040
My Listings Dashboard — Angular Admin View for Sellers
Advanced
→
87050
Seller Registration and Verification Flow
Advanced
→
📂 Chapter 88: Angular Frontend — Browse, Search and Post Listings
88010
Angular App Architecture — Feature Modules, Routing and State
Advanced
→
88020
Browse and Search — Listings Grid, Filters and Map View
Advanced
→
88030
Create Listing Wizard — Multi-Step Form with Photo Upload
Advanced
→
88040
Listing Detail — Photo Gallery, Contact Form and Seller Profile
Advanced
→
88050
Search State, URL Persistence and Mobile UX Patterns
Advanced
→
📂 Chapter 90: Deployment, CI/CD and Go-Live
90010
Azure Infrastructure — App Service, SQL, Redis and Storage
Advanced
→
90020
GitHub Actions CD Pipeline — Build, Test and Deploy to Azure
Advanced
→
90030
Database Migrations — Safe Schema Changes in Production
Advanced
→
90040
Monitoring, Alerting and Incident Response
Advanced
→
90050
Series Completion — Full-Stack Journey Review and Next Steps
Advanced
→