K2 Junior full stack with .NET and Blazor
Build, test and deliver a web application to Azure with ASP.NET Core, Blazor, SQL and EF Core – the craft for a first junior position.
Who it is for
For everyone after K1 who wants to start in web development with .NET as a junior.
Prerequisites
K1 or the placement test.
Afterward, you can
- Build web pages with HTML and SCSS, accessible to WCAG
- Develop web APIs with ASP.NET Core
- Model and store data with SQL Server and EF Core
- Build user interfaces with Blazor, static and with interactive islands
- Add sign-in with Microsoft Entra ID and know the OWASP Top 10
- Test web applications automatically, up to an end-to-end test
- Build background work and integrations that hold up
- Deliver an application to Azure as a container, with a Dockerfile and a registry of your own
- Design and version APIs, with OpenAPI, gRPC and webhooks
- Build live views with SignalR
- Refactor code deliberately with SOLID and prove the gain with tests
Contents
- 2.1
35 h
Web fundamentals
HTTP, HTML, CSS and SCSS, accessibility (WCAG), browser tools
- 2.2
15 h
TypeScript, just what is needed
strict mode, the DOM, one script per page, no framework
- 2.3
40 h
ASP.NET Core
minimal APIs, routing, dependency injection, configuration and options, middleware, ProblemDetails, validation
- 2.4
45 h
Data
SQL (SQL Server), modeling, indexes, EF Core, migrations, transactions
- 2.5
55 h
Blazor
components, static SSR, forms without script, interactive islands (Server/WebAssembly), layouts, two languages
- 2.6
25 h
Sign-in and permissions
cookies, OpenID Connect with Microsoft Entra ID, roles, antiforgery, OWASP Top 10
- 2.7
30 h
Testing on the web
unit tests, integration tests with WebApplicationFactory, component tests, an end-to-end test with Playwright for .NET
- 2.8
20 h
Background work and integration
BackgroundService, HttpClientFactory, retrying without sending twice, the outbox pattern, mail
- 2.9
30 h
Containers and a first deployment
containers with dotnet publish and with a Dockerfile of your own (layers, multi-stage, small and secure images), Azure Container Registry, Docker Compose next to Aspire, Aspire locally, Azure Container Apps with azd
- 2.10
15 h
Working in a team
pull requests, reviews, issues, definition of done, SOLID day to day
- 2.12
20 h
Designing APIs
REST done well, OpenAPI as the contract, versioning, gRPC, webhooks, Azure API Management
- 2.13
10 h
Real time with SignalR
hubs and clients, groups, sign-in and permissions in the hub, scaling with Azure SignalR Service or a backplane
- 2.14
15 h
SOLID with real examples
each principle as a refactoring of the Kladde: the smell that shows it, the test that proves the gain, and when not to apply it
- 2.11
60 h
Final project
the Kladde as a web application
About 415 hours in all (indicative).
Lessons
You see the text and video of every lesson here on the site after buying the course; the titles and goals are already shown. A self-study course: you work through the lessons in order and check your exercises yourself against the solutions.
You can read the first module (2.1) for free, with text and video, without signing in: so you see how the course works before you buy.
The lessons stand under their modules, in the order of the course. Click a module to open or close its lessons.
2.10 Working in a team
Indicative: 15 hours · 4 lessons
Lesson 1 · about 180 minutes
Issues and definition of done
Lesson 2 · about 180 minutes
Rules in the repository
Lesson 3 · about 180 minutes
Reviews that help
Lesson 4 · about 240 minutes
SOLID in everyday work: the core gets a second interface
2.1 Web fundamentals
Indicative: 35 hours · 8 lessonsfree to read
Lesson 5 · about 240 minutes
How the web talks: HTTP
Lesson 6 · about 240 minutes
HTML with meaning
Lesson 7 · about 240 minutes
Forms without script
Lesson 8 · about 300 minutes
CSS: the cascade, the box model and layout
Lesson 9 · about 180 minutes
The browser’s tools
Lesson 10 · about 180 minutes
SCSS in the build
Lesson 11 · about 300 minutes
Accessibility with WCAG 2.2
Lesson 12 · about 240 minutes
Fast pages
2.2 TypeScript, just what is needed
Indicative: 15 hours · 4 lessons
Lesson 13 · about 180 minutes
Script in moderation: TypeScript in the build
Lesson 14 · about 180 minutes
Types in TypeScript for C# developers
Lesson 15 · about 240 minutes
The DOM: read, react, change
Lesson 16 · about 180 minutes
One script per page, cleanly cut
2.3 ASP.NET Core
Indicative: 40 hours · 10 lessons
Lesson 17 · about 180 minutes
The first web API
Lesson 18 · about 240 minutes
Routing and results
Lesson 19 · about 240 minutes
Dependency injection
Lesson 20 · about 240 minutes
Configuration and options
Lesson 21 · about 300 minutes
Middleware and logging
Lesson 22 · about 180 minutes
Async on the web
Lesson 23 · about 180 minutes
Errors as ProblemDetails
Lesson 24 · about 240 minutes
Validation at the edge, rules in the model
Lesson 25 · about 180 minutes
Time on the web
Lesson 26 · about 180 minutes
OpenAPI and API design
2.4 Data
Indicative: 45 hours · 11 lessons
Lesson 27 · about 180 minutes
SQL Server in a container
Lesson 28 · about 300 minutes
SQL: querying
Lesson 29 · about 240 minutes
SQL: changing data, data types, constraints
Lesson 30 · about 240 minutes
Modeling data
Lesson 31 · about 240 minutes
Indexes and execution plans
Lesson 32 · about 300 minutes
EF Core: DbContext and mapping
Lesson 33 · about 240 minutes
Migrations
Lesson 34 · about 120 minutes
Test data and seeding
Lesson 35 · about 240 minutes
Queries with EF Core
Lesson 36 · about 240 minutes
Concurrency and transactions
Lesson 37 · about 180 minutes
The store as an adapter
2.5 Blazor
Indicative: 55 hours · 13 lessons
Lesson 38 · about 180 minutes
The Blazor Web App
Lesson 39 · about 300 minutes
Components
Lesson 40 · about 180 minutes
Layouts and navigation
Lesson 41 · about 240 minutes
Showing data with static SSR
Lesson 42 · about 300 minutes
Forms without script
Lesson 43 · about 300 minutes
The public appointment booking
Lesson 44 · about 180 minutes
Errors, empty lists and “not found”
Lesson 45 · about 300 minutes
Interactive islands with InteractiveServer
Lesson 46 · about 180 minutes
Lists with QuickGrid
Lesson 47 · about 240 minutes
Interactive islands with WebAssembly
Lesson 48 · about 180 minutes
State, events and page scripts
Lesson 49 · about 300 minutes
Two languages
Lesson 50 · about 180 minutes
Accessible components
2.7 Testing on the web
Indicative: 30 hours · 8 lessons
Lesson 51 · about 120 minutes
Which test for what
Lesson 52 · about 180 minutes
Unit tests for rules and endpoints
Lesson 53 · about 300 minutes
Integration tests with WebApplicationFactory
Lesson 54 · about 240 minutes
Against the real database
Lesson 55 · about 120 minutes
Testing registrations
Lesson 56 · about 240 minutes
Component tests with bUnit
Lesson 57 · about 300 minutes
An end-to-end test with Playwright
Lesson 58 · about 120 minutes
All tests in every pull request
2.6 Sign-in and permissions
Indicative: 25 hours · 6 lessons
Lesson 59 · about 180 minutes
Who are you, what may you do: cookies and claims
Lesson 60 · about 300 minutes
OpenID Connect with Microsoft Entra ID
Lesson 61 · about 240 minutes
Roles and policies
Lesson 62 · about 180 minutes
Testing permissions
Lesson 63 · about 180 minutes
Antiforgery, XSS and security headers
Lesson 64 · about 240 minutes
The OWASP Top 10 on the Kladde
2.8 Background work and integration
Indicative: 20 hours · 5 lessons
Lesson 65 · about 240 minutes
HttpClientFactory and an external API
Lesson 66 · about 240 minutes
Background services
Lesson 67 · about 180 minutes
Retrying without sending twice
Lesson 68 · about 240 minutes
The outbox pattern
Lesson 69 · about 180 minutes
Sending mail, confirmed
2.9 Containers and a first deployment
Indicative: 30 hours · 9 lessons
Lesson 70 · about 180 minutes
Understanding containers
Lesson 71 · about 180 minutes
Containers with dotnet publish
Lesson 72 · about 240 minutes
Aspire locally
Lesson 73 · about 180 minutes
Azure before the first deploy: subscription, budget, target
Lesson 74 · about 240 minutes
Shipping with azd
Lesson 75 · about 180 minutes
Your own Dockerfile: images and layers
Lesson 76 · about 180 minutes
Multi-stage, small and secure
Lesson 77 · about 120 minutes
Azure Container Registry
Lesson 78 · about 120 minutes
Docker Compose next to Aspire
2.12 Designing APIs
Indicative: 20 hours · 6 lessons
Lesson 79 · about 240 minutes
REST done right: resources, methods, state
Lesson 80 · about 180 minutes
Contract first: OpenAPI
Lesson 81 · about 180 minutes
Versioning without breaking callers
Lesson 82 · about 180 minutes
gRPC between services
Lesson 83 · about 180 minutes
Sending and receiving webhooks
Lesson 84 · about 120 minutes
Azure API Management
2.13 Real time with SignalR
Indicative: 10 hours · 3 lessons
Lesson 85 · about 180 minutes
Hubs and clients
Lesson 86 · about 180 minutes
Sign-in, permissions and limits in the hub
Lesson 87 · about 120 minutes
Scaling SignalR
2.14 SOLID with real examples
Indicative: 15 hours · 6 lessons
Lesson 88 · about 120 minutes
Recognizing smells before quoting principles
Lesson 89 · about 180 minutes
S: one responsibility, one reason to change
Lesson 90 · about 120 minutes
O: extend without touching what works
Lesson 91 · about 180 minutes
L: substitutability that tests prove
Lesson 92 · about 120 minutes
I: narrow interfaces by caller
Lesson 93 · about 120 minutes
D: dependencies point to abstractions the core owns
2.11 Final project
Indicative: 60 hours · 13 lessons
Lesson 94 · about 180 minutes
Planning: the way to the finished Kladde
Lesson 95 · about 300 minutes
Milestone 1: Contacts and companies
Lesson 96 · about 300 minutes
Milestone 2: Appointments in the office
Lesson 97 · about 300 minutes
Milestone 3: Free times and booking
Lesson 98 · about 300 minutes
Milestone 4: Confirmation and outbox
Lesson 99 · about 300 minutes
Milestone 5: Importing tenders
Lesson 100 · about 240 minutes
Milestone 6: Searching tenders
Lesson 101 · about 240 minutes
Milestone 7: Two languages
Lesson 102 · about 300 minutes
Milestone 8: Accessibility and security
Lesson 103 · about 240 minutes
Milestone 9: Completing the tests
Lesson 104 · about 300 minutes
Milestone 10: Delivering to Azure
Lesson 105 · about 300 minutes
Review and polish
Lesson 106 · about 300 minutes
Wrapping up: demo, code reading and practice questions
Final project: the Kladde
What the Kladde can do after this course
A web application with contacts, a public appointment booking with free slots and public tenders from the EU's TED interface, with sign-in through Entra ID, in two languages and delivered to Azure.
At the end you present the application in a demo, explain a part of your code and quiz yourself with practice questions and their answers – on your own or in front of someone you know.
Certifications
An offer, never a requirement: these Microsoft exams fit this stage. You take them at Microsoft; we are not a Microsoft training partner.
The entry point to the Azure certifications.
Keep learning with Microsoft Learn
Microsoft's learning paths and documentation that go with this course.
- Build web apps with Blazor
- Create web apps and services with ASP.NET Core, minimal API, and .NET
- Create a web API with ASP.NET Core controllers
- Persist and retrieve relational data by using Entity Framework Core
- Introduction to .NET and Docker
- Overview of ASP.NET Core SignalR
- What is Azure API Management?