Skip to content
View Moritz1708's full-sized avatar

Block or report Moritz1708

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
Moritz1708/README.md

Moritz Waldau — .NET · Azure · Agentic AI

IT consultant for .NET and Azure · Modernizing legacy systems · Building AI agents and MCP servers

LinkedIn  Portfolio  E-Mail


about.cs

var moritz = new Engineer
{
    Name      = "Moritz Waldau",
    Role      = "IT Consultant · .NET & Azure",
    Location  = "Hannover, Germany",
    Degree    = "B.Sc. Business Information Systems (dual study program)",

    Focus     = [".NET", "Azure", "Clean Architecture", "AI Agents"],
    Currently = "Owning the architecture of a .NET 4.8 → .NET 9 MAUI modernization",
    Track     = "Applications used daily by 13,000+ financial advisors",

    Daily     = ["Claude Code", "GitHub Copilot", "own MCP servers"],
    OffDuty   = ["Hiking in summer", "Skiing in winter"],
};

I design and modernize .NET systems that people depend on every day — and I spend a growing share of my time on where AI agents fit into that work: building agents, writing MCP servers, and using agentic tooling as a first-class part of the development loop rather than an add-on.


Tech Stack

Backend Cloud & DevOps Data Frontend
C#   .NET   ASP.NET Core   Java Azure   AWS   Docker   GitHub Actions   OpenTelemetry PostgreSQL   Redis Blazor   Vue.js

.NET Aspire .NET MAUI YARP Azure Service Bus Bicep / azd Auth0

AI & Agentic Development

Claude Code GitHub Copilot Model Context Protocol Azure OpenAI


Featured Project

.NET 10 License Last commit

A reference architecture for modern e-commerce systems: eight microservices on .NET 10, cut along Clean Architecture and DDD boundaries, CQRS over MediatR, and a Result<T> pattern throughout instead of exceptions.

  • Outbox/Inbox over Azure Service Bus, one PostgreSQL database per service
  • YARP gateway with BFF and Auth0 OIDC, Redis HybridCache
  • AI advisory agent on Azure OpenAI with a custom MCP server
  • CI with a 70 % coverage gate, CodeQL, Gitleaks and Trivy
  • .NET Aspire locally, azd / Bicep to Azure Container Apps

Blazor WebAssembly PWA GitHub Pages

My personal site — a Blazor WebAssembly PWA on .NET 10 with a service worker for offline use, built and deployed to GitHub Pages through GitHub Actions.

Open live site

Also on GitHub: EmployeeManagementSystem — a cloud-native .NET 9 app with Aspire, Docker and GitHub Actions on Azure Container Apps (on my second account @MoritzWaldau).

OrderSphere — architecture at a glance

flowchart LR
    UI[Blazor WASM<br/>MudBlazor] --> GW[YARP Gateway + BFF<br/>Auth0 OIDC]
    GW --> CAT[Catalog]
    GW --> BAS[Basket]
    GW --> ORD[Ordering]
    GW --> PAY[Payment]
    GW --> USR[UserProfile]
    GW --> ADV[Advisory<br/>Azure OpenAI + MCP]
    CAT --> DB[(PostgreSQL<br/>one per service)]
    ORD --> DB
    PAY --> DB
    CAT --> RD[(Redis<br/>HybridCache)]
    BAS --> RD
    ORD -->|Outbox| SB{{Azure Service Bus}}
    SB -->|Inbox| NOT[Notification]
    SB --> WHK[Webhooks]
Loading
How a request flows through it — click to expand
  1. The Blazor WASM client never talks to a service directly — every call goes through the YARP gateway, which acts as a BFF and keeps the Auth0 OIDC session in a cookie, so no tokens live in the browser.
  2. Each service owns its domain, its application layer (CQRS handlers over MediatR) and its own PostgreSQL schema. No shared database, no cross-service joins.
  3. State changes other services care about are written to an Outbox table in the same transaction as the domain change, then relayed to Azure Service Bus. Consumers dedupe through an Inbox, so delivery is at-least-once but processing is effectively once.
  4. Hot read paths (catalog, basket) sit behind Redis HybridCache — L1 in-process, L2 distributed, invalidated by the same events.
  5. The Advisory service exposes the catalog to an Azure OpenAI agent through a custom MCP server, so the agent works against the same bounded context as the rest of the system.

Activity

Contribution streak

Contribution snake animation

Pinned Loading

  1. OrderSphere OrderSphere Public

    OrderSphere - Your Online shop

    C# 1

  2. Portfolio Portfolio Public

    My personal portfolio — a Blazor WebAssembly PWA on .NET 10, deployed to GitHub Pages

    HTML