AppHost (MILTON.AppHost)

This project wraps the whole application together utilizing .NET Aspire. It acts as the orchestrator to spin up all services and infrastructure:

Resources

flowchart TD
    subgraph Infrastructure
        PG["PostgreSQL"]
        RMQ["RabbitMQ"]
        RustFS["RustFS (S3)"]
        Gotenberg["Gotenberg (PDF)"]
        KC["Keycloak (Auth)"]
    end

    subgraph Services
        API["MILTON API"]
        NS["NotificationService"]
        DG["DocumentGenerator"]
        Git["GitOperations"]
        Mig["MigrationService"]
        Cluster["Clustering (Python)"]
    end

    Gateway["YARP Gateway"]
    Client["MILTON.Client (Blazor WASM)"]

    Gateway -- "/keycloak/**" --> KC
    Gateway -- "/hubs/**" --> NS
    Gateway -- "/milton-documents/**" --> RustFS
    Gateway -- "/**" --> API

    API --> PG
    API --> RMQ
    API --> Gateway
    API --> KC
    API --> Gotenberg
    API --> Cluster
    API --> NS

    NS --> RMQ
    DG --> PG
    DG --> RMQ
    Git --> RMQ
    Mig --> PG
    Client --> Gateway
    Client --> KC
ResourceTypePurpose
PostgreSQLContainerPrimary database for all services
RabbitMQContainerMessage broker for Wolverine messaging
RustFSContainerS3-compatible object storage for documents
GotenbergContainerStateless PDF conversion sidecar
KeycloakContainerOpenID Connect identity provider
YARP GatewayASP.NET CoreReverse proxy — unified TLS entry point routing to API, NotificationService, RustFS, and Keycloak
MILTON APIASP.NET CorePrimary REST API + Blazor host
NotificationServiceASP.NET CoreStandalone SignalR hub + Wolverine RabbitMQ consumer for real-time notifications
DocumentGeneratorWorker ServiceWolverine saga for document processing
GitOperationsWorker ServiceRepository cloning via RabbitMQ commands
MigrationServiceWorker ServiceOne-shot EF Core database migrations
ClusteringDocker (Python)Code analysis using Leiden algorithm
MILTON.ClientBlazor WASMFrontend SPA

Running

Run aspire run in the project root to compose the whole system together.

0 items under this folder.