Skip to content

Virtufin Platform Specifications

This site contains the formal specifications for the Virtufin microservices platform — a real-time financial market data pipeline built on .NET 10.0, Dapr, and Kubernetes.

Architecture

graph TB
    subgraph External["External"]
        BINANCE["Binance"]
        ALPACA["Alpaca"]
        NATS["NATS"]
        WS["WebSocket<br/>endpoints"]
    end

    subgraph Platform["Virtufin Platform"]
        subgraph Services["Core Services"]
            GW["API Gateway<br/>(virtufin-api)"]
            WM["WorkManager<br/>(worker-management)"]
            WSM["WebSocket Manager<br/>(websocket-proxy)"]
        end

        subgraph Infra["Infrastructure"]
            DAPR["Dapr Sidecars"]
            REDIS["Valkey / Redis"]
            K8S["Kubernetes"]
        end
    end

    subgraph Consumers["Consumers"]
        CSHARP["C# Client"]
        PYTHON["Python Client"]
        TS["TypeScript Client"]
    end

    GW -- "gRPC (h2c)" --> WM
    GW -- "gRPC (h2c)" --> WSM
    WM --> DAPR
    WSM --> DAPR
    GW --> DAPR
    DAPR --> REDIS
    WSM -- "WebSocket" --> BINANCE
    WSM -- "WebSocket" --> ALPACA
    BINANCE --> WSM
    ALPACA --> WSM
    CSHARP -- "gRPC / gRPC-Web" --> GW
    PYTHON -- "gRPC" --> GW
    TS -- "gRPC-Web" --> GW
    K8S --- Services

Dependency Map

graph TD
    CC["cross-cutting"]
    PT["pubsub-topics"]
    SC["scenarios"]
    CDT["core-data-types"]
    AG["api-gateway"]
    WM["worker-management"]
    WSP["websocket-proxy"]
    SDK["multi-sdk"]
    TUI["terminal-ui"]
    DEP["deployment"]
    CICD["ci-cd-tooling"]

    CC --> AG
    CC --> WM
    CC --> WSP
    CC --> DEP
    CC --> CICD
    PT --> SC
    AG --> SC
    AG --> SDK
    WM --> SDK
    WSP --> SDK
    AG --> TUI
    WM --> TUI
    WSP --> TUI
    DEP --> AG
    DEP --> WM
    DEP --> WSP
    CICD --> SDK

Note: NATS in the diagram above refers to NatsObservable<T> in Virtufin.Data — a library-level reactive data source, not a platform infrastructure component. Workers running under the WorkManager use the API gateway's Pubsub.Subscribe RPC for pub/sub, not a direct NATS connection.

Specifications

# Specification Requirements Description
1 Cross-cutting 11 Shared infrastructure, API-mediated pub/sub, observability, resilience, security
2 Pub/Sub Topics 19 Topic naming taxonomy, market/scenario worlds, CloudEvents envelope, state-key conventions
3 Scenarios 9 Scenario registry triplets, named hypothetical worlds, lifecycle statuses
4 Core Data Types 5 EAV framework, Variant, FlatBuffers, reactive observables
5 API Gateway 11 Dynamic gRPC discovery, JSON transcoding, distributed state, pub/sub streaming
6 Worker Management 23 Polyglot worker lifecycle, event-driven processing, competing consumers, worker engines
7 WebSocket Proxy 12 External WS connections, pub/sub routing, distributed ownership, auto-reconnect
8 Multi-SDK 8 C#/Python/TypeScript client SDKs from proto contracts
9 Client Testing Cross-language client test parity matrix
10 Terminal UI 16 Operator dashboard: worker/connection/event management, multi-context, live streaming, AI assistant
11 Deployment 8 Helm chart, Dapr components, per-service versioning
12 CI/CD Tooling 6 Doc generation, gRPC client publishing, reusable workflows

Total: 128 requirements across 11 normative specifications (plus the client-testing parity matrix).