Vecka 1 · Mån + Tor
Lektion 01 — Helhetsbild & arkitektur
Helhetsbild av kursen och teknikvalen.
Vecka 1 · Tor
Lektion 02 — DDD-grunder
Bounded context, entity, value object, ubiquitous language.
Vecka 2 · Mån
Lektion 03 — Aggregate & AggregateRoot
Invarianter, Apply-pattern, AggregateRoot<TId>-basklass.
Vecka 2 · Tor
Lektion 04 — CQRS & commands
MediatR-pipeline, Minimal API, validering, idempotency.
Vecka 3 · Mån
Lektion 05 — Event sourcing från grunden
InMemoryEventStore, IEventStore, repository, upcasting.
Vecka 3 · Tor
Lektion 06 — SqlStreamStore & projektioner
MSSQL som event store + read models, checkpoints.
Vecka 4 · Mån
Lektion 07 — Transaktioner & concurrency
Optimistic concurrency, Polly-retry, TransactionScope.
Vecka 4 · Tor
Lektion 08 — Command-kö & undo
Channel<T> per stream, compensating events.
Vecka 5 · Mån
Lektion 09 — Snapshots & sagas
Snapshot-stöd, projection rebuild, process managers.
Vecka 5 · Tor
Lektion 10 — Blazor-klient
WebAssembly, typed HttpClient, optimistic UI, Ctrl+Z.
Vecka 7 · Fredag 23:59
Examinationsinlämning
TicketHub (grupp) + AggregateRoot<TId>-bibliotek (enskild).
Vecka 8
Muntlig redovisning
20 min per grupp. Slumpvis utvald medlem förklarar slumpvis utvald kod.
Lektion 01
Helhetsbild & arkitektur
MålFörstå hela teknikstacken och kursens röda tråd.
WorkshopKlona startkod, kör en hello-world genom Blazor → API → MSSQL.
HemuppgiftLäs DDD-kapitel 1 (Vernon).
Lektion 02
DDD-grunder
MålSkilja entity från value object, definiera bounded contexts.
WorkshopModellera "konto" + "transaktion" från ett kravdokument.
HemuppgiftÖvning 1–3 från lektion 02.
Lektion 03
Aggregate & AggregateRoot
MålImplementera ett aggregat med invarianter och Apply-pattern.
WorkshopBygg Account-aggregat från scratch.
HemuppgiftSoloprojekt 1 (lektion 03).
Lektion 04
CQRS & commands
MålImplementera commands, handlers, MediatR-pipeline.
WorkshopBygg DepositMoneyCommand + Minimal API-endpoint.
HemuppgiftÖvningar 1–4 lektion 04.
Lektion 05
Event sourcing
MålFörstå hur events blir sanning. Skriva en in-memory event store.
WorkshopInMemoryEventStore + repository + Given-When-Then-tester.
HemuppgiftSoloprojekt 1 (lektion 05).
Lektion 06
SqlStreamStore & projektioner
MålPersistera mot MSSQL. Bygga read model-projektion.
WorkshopMigrera InMemoryStore → MsSqlStreamStoreV3. Bygga AccountSummaryProjection.
HemuppgiftÖvningar 1–3 lektion 06. Starta gruppuppgift.
Lektion 07
Transaktioner & concurrency
MålHantera concurrency-konflikter, idempotency, TransactionScope.
WorkshopLägg in Polly-retry, idempotency-tabell, racetest.
HemuppgiftSoloprojekt 1 lektion 07.
Lektion 08
Command-kö & undo
MålSingle-writer per aggregat. Compensating events.
WorkshopBygg AggregateCommandQueue + revert-event.
HemuppgiftÖvning 1–3 lektion 08. Fortsätt gruppuppgift.
Lektion 09
Snapshots & sagas
MålSnapshot-stöd, projection rebuild, sagas.
WorkshopImplementera SnapshotStore + MoneyTransferSaga.
HemuppgiftÖvning 3 (transfer-saga) lektion 09.
Lektion 10
Blazor-klient
MålEnd-to-end-UI med typed HTTP, optimistic UI, undo-stack.
WorkshopBygg AccountPage.razor med Ctrl+Z.
HemuppgiftSlutför examinationsuppgifter.