Portfolio Project

JobBoard โ€” Distributed Systems Platform

A full-stack, multi-tenant platform demonstrating real-world legacy-to-cloud migration with enterprise architecture patterns, AI integration, and production-grade observability. Three architectural paths running side-by-side with 20 Architecture Decision Records documenting every trade-off.

Architecture Highlights

Clean Architecture + DDD

Domain model with factory methods, value objects returning Result<T>, and strict dependency flow.

CQRS + Decorator Pipeline

Custom decorator chain (not MediatR) with auth, observability, validation, and transaction decorators.

Legacy Modernization

Incremental migration using the Strangler-Fig pattern with bidirectional sync. Both architectures run simultaneously โ€” toggle in the toolbar and trace the difference in Jaeger.

AI Multi-Provider

OpenAI, Claude, and Gemini with scoped tool registries (SystemAdmin/Admin/Public), MCP servers, and per-session tool resolution.

Resume RAG Pipeline

Event-driven parsing, pgvector embeddings (1536-dim), and cosine similarity matching.

Distributed Tracing

End-to-end OpenTelemetry spans from browser through APIs, messaging, and background processors.

Transactional Outbox

Events written atomically with state changes. UPDLOCK/READPAST locking, retries, and dead-letter handling.

Azure + Homelab

Bicep IaC for Azure Container Apps. Same codebase runs on Proxmox homelab via Cloudflare Tunnel.

Tech Stack

.NET 9/10Angular 20/21TypeScriptDaprRabbitMQPostgreSQL + pgvectorSQL ServerRedisKeycloakOpenTelemetryDockerBicep / AzureCloudflare TunnelGrafanaJaegerHashiCorp VaultOpenAI / Claude / GeminiSignalRMCP Protocol.NET Aspire

Getting Started

How to Explore This Project

Jump into the live apps and try the key features. Each action generates real distributed traces you can inspect.

System Architecture

How It All Connects

16 services across 4 architectural layers, orchestrated with Dapr sidecars and exposed via Cloudflare Tunnel.

Screenshots

The System in Action

Explore the platform's dashboards, traces, and infrastructure. Click any slide to enlarge.

Aspire Dashboard โ€” Orchestrating 36 resources with dependency ordering and health checks
Aspire DashboardOrchestrating 36 resources with dependency ordering and health checks
Distributed Trace โ€” End-to-end trace across services in Jaeger
Distributed TraceEnd-to-end trace across services in Jaeger
Topology Graph โ€” Aspire service dependency topology
Topology GraphAspire service dependency topology
Saga Orchestration โ€” Async saga and pub/sub visibility in traces
Saga OrchestrationAsync saga and pub/sub visibility in traces
Grafana Debugging โ€” "Find by TraceId" debugging workflow
Grafana Debugging"Find by TraceId" debugging workflow
Health Checks โ€” Centralized dependency monitoring dashboard
Health ChecksCentralized dependency monitoring dashboard
Dapr Dashboard โ€” Service mesh applications overview
Dapr DashboardService mesh applications overview