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.
The lessons are only in German for now.
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 und Definition of Done
-
Lesson 2 · about 180 minutes
Regeln im Repository
-
Lesson 3 · about 180 minutes
Reviews, die weiterhelfen
-
Lesson 4 · about 240 minutes
SOLID im Alltag: der Kern bekommt eine zweite Oberfläche
2.1 Web fundamentals
Indicative: 35 hours · 8 lessons
-
Lesson 5 · about 240 minutes
Wie das Web spricht: HTTP
-
Lesson 6 · about 240 minutes
HTML mit Bedeutung
-
Lesson 7 · about 240 minutes
Formulare ohne Skript
-
Lesson 8 · about 300 minutes
CSS: Kaskade, Box-Modell und Layout
-
Lesson 9 · about 180 minutes
Die Werkzeuge des Browsers
-
Lesson 10 · about 180 minutes
SCSS im Build
-
Lesson 11 · about 300 minutes
Barrierefreiheit nach WCAG 2.2
-
Lesson 12 · about 240 minutes
Schnelle Seiten
2.2 TypeScript, just what is needed
Indicative: 15 hours · 4 lessons
-
Lesson 13 · about 180 minutes
Skript mit Maß: TypeScript im Build
-
Lesson 14 · about 180 minutes
Typen in TypeScript für C#-Kenner
-
Lesson 15 · about 240 minutes
Das DOM: lesen, reagieren, ändern
-
Lesson 16 · about 180 minutes
Ein Skript pro Seite, sauber geschnitten
2.3 ASP.NET Core
Indicative: 40 hours · 10 lessons
-
Lesson 17 · about 180 minutes
Die erste Web-API
-
Lesson 18 · about 240 minutes
Routing und Ergebnisse
-
Lesson 19 · about 240 minutes
Dependency Injection
-
Lesson 20 · about 240 minutes
Konfiguration und Options
-
Lesson 21 · about 300 minutes
Middleware und Logging
-
Lesson 22 · about 180 minutes
Asynchron im Web
-
Lesson 23 · about 180 minutes
Fehler als ProblemDetails
-
Lesson 24 · about 240 minutes
Validierung am Rand, Regeln im Modell
-
Lesson 25 · about 180 minutes
Zeit im Web
-
Lesson 26 · about 180 minutes
OpenAPI und API-Design
2.4 Data
Indicative: 45 hours · 11 lessons
-
Lesson 27 · about 180 minutes
SQL Server im Container
-
Lesson 28 · about 300 minutes
SQL: abfragen
-
Lesson 29 · about 240 minutes
SQL: ändern, Datentypen, Einschränkungen
-
Lesson 30 · about 240 minutes
Daten modellieren
-
Lesson 31 · about 240 minutes
Indexe und Ausführungspläne
-
Lesson 32 · about 300 minutes
EF Core: DbContext und Abbildung
-
Lesson 33 · about 240 minutes
Migrationen
-
Lesson 34 · about 120 minutes
Testdaten und Seeding
-
Lesson 35 · about 240 minutes
Abfragen mit EF Core
-
Lesson 36 · about 240 minutes
Nebenläufigkeit und Transaktionen
-
Lesson 37 · about 180 minutes
Der Speicher als Adapter
2.5 Blazor
Indicative: 55 hours · 13 lessons
-
Lesson 38 · about 180 minutes
Die Blazor Web App
-
Lesson 39 · about 300 minutes
Komponenten
-
Lesson 40 · about 180 minutes
Layouts und Navigation
-
Lesson 41 · about 240 minutes
Daten anzeigen mit statischem SSR
-
Lesson 42 · about 300 minutes
Formulare ohne Skript
-
Lesson 43 · about 300 minutes
Die öffentliche Terminbuchung
-
Lesson 44 · about 180 minutes
Fehler, leere Listen und „nicht gefunden“
-
Lesson 45 · about 300 minutes
Interaktive Inseln mit InteractiveServer
-
Lesson 46 · about 180 minutes
Listen mit QuickGrid
-
Lesson 47 · about 240 minutes
Interaktive Inseln mit WebAssembly
-
Lesson 48 · about 180 minutes
Zustand, Ereignisse und Seitenskripte
-
Lesson 49 · about 300 minutes
Zwei Sprachen
-
Lesson 50 · about 180 minutes
Barrierefreie Komponenten
2.7 Testing on the web
Indicative: 30 hours · 8 lessons
-
Lesson 51 · about 120 minutes
Welcher Test wofür
-
Lesson 52 · about 180 minutes
Unit-Tests für Regeln und Endpunkte
-
Lesson 53 · about 300 minutes
Integrationstests mit WebApplicationFactory
-
Lesson 54 · about 240 minutes
Gegen die echte Datenbank
-
Lesson 55 · about 120 minutes
Registrierungen testen
-
Lesson 56 · about 240 minutes
Komponententests mit bUnit
-
Lesson 57 · about 300 minutes
Ein End-to-End-Test mit Playwright
-
Lesson 58 · about 120 minutes
Alle Tests in jedem Pull Request
2.6 Sign-in and permissions
Indicative: 25 hours · 6 lessons
-
Lesson 59 · about 180 minutes
Wer bist du, was darfst du: Cookies und Claims
-
Lesson 60 · about 300 minutes
OpenID Connect mit Microsoft Entra ID
-
Lesson 61 · about 240 minutes
Rollen und Richtlinien
-
Lesson 62 · about 180 minutes
Rechte testen
-
Lesson 63 · about 180 minutes
Antiforgery, XSS und Sicherheits-Header
-
Lesson 64 · about 240 minutes
Die OWASP Top 10 an der Kladde
2.8 Background work and integration
Indicative: 20 hours · 5 lessons
-
Lesson 65 · about 240 minutes
HttpClientFactory und eine fremde Schnittstelle
-
Lesson 66 · about 240 minutes
Hintergrunddienste
-
Lesson 67 · about 180 minutes
Wiederholen, ohne doppelt zu senden
-
Lesson 68 · about 240 minutes
Das Outbox-Muster
-
Lesson 69 · about 180 minutes
Mails verschicken, bestätigt
2.9 Containers and a first deployment
Indicative: 30 hours · 5 lessons
-
Lesson 70 · about 180 minutes
Container verstehen
-
Lesson 71 · about 180 minutes
Container mit dotnet publish
-
Lesson 72 · about 240 minutes
Aspire lokal
-
Lesson 73 · about 180 minutes
Azure vor dem ersten Deploy: Abo, Budget, Ziel
-
Lesson 74 · about 240 minutes
Ausliefern mit azd
2.11 Final project
Indicative: 60 hours · 13 lessons
-
Lesson 75 · about 180 minutes
Planen: der Weg zur fertigen Kladde
-
Lesson 76 · about 300 minutes
Meilenstein 1: Kontakte und Firmen
-
Lesson 77 · about 300 minutes
Meilenstein 2: Termine im Büro
-
Lesson 78 · about 300 minutes
Meilenstein 3: Freie Zeiten und Buchung
-
Lesson 79 · about 300 minutes
Meilenstein 4: Bestätigung und Postausgang
-
Lesson 80 · about 300 minutes
Meilenstein 5: Ausschreibungen importieren
-
Lesson 81 · about 240 minutes
Meilenstein 6: Ausschreibungen durchsuchen
-
Lesson 82 · about 240 minutes
Meilenstein 7: Zwei Sprachen
-
Lesson 83 · about 300 minutes
Meilenstein 8: Barrierefreiheit und Sicherheit
-
Lesson 84 · about 240 minutes
Meilenstein 9: Tests vervollständigen
-
Lesson 85 · about 300 minutes
Meilenstein 10: Ausliefern nach Azure
-
Lesson 86 · about 300 minutes
Review und Feinschliff
-
Lesson 87 · about 300 minutes
Abschluss: Demo, Code-Lesung und Fachgespräch
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?