Skip to content

Ecosystem

The Virtufin platform is a federation of focused repos. Each repo ships its own documentation site; the sites cross-link so a developer can find related material without leaving the platform.

Virtufin repos

Repo What it is Docs site
virtufin/virtufin-common Shared infrastructure: cross-build Docker image, reusable CI workflows (docs-common, docker-common, docs-lint-common, nuget-common), shared Directory.Packages.props patterns, the canonical versions.env convention. Hosts the reusable docs-common.yaml workflow that publishes each service's site to GitHub Pages. (no docs site)
virtufin/virtufin-openspec The platform's normative specifications: cross-cutting rules (API-mediated pub/sub, CloudEvent envelope), per-service specs (API gateway, worker management, WebSocket proxy, multi-SDK), and operational specs (deployment, CI/CD). Scenario-driven (WHEN/THEN/AND) format. specs.docs.virtufin.com
virtufin/virtufin-dotnet The .NET 10 library layer: Virtufin.Core (EAV framework, contract traits, DecimalAmount), Virtufin.Base (concrete types: Currency, Cash, Position, Metronome<T>), Virtufin.Data (Variant, FlatBuffers, NATS / WebSocket / Valkey IObservable<T>), Virtufin.Util (time, formatting). The "core" the rest of the platform is built on. lib.docs.virtufin.com
virtufin/virtufin-api The API gateway. The single mediator through which services talk to Dapr (pub/sub, state). Hosts Gateway.InvokeJson, MethodSchema, the dynamic ServiceClient proxy used by the IGatewayClient managed adapter. api.docs.virtufin.com
virtufin/virtufin-workmanager The WorkManager service. The host process for in-process workers. Implements the DotNetDllEngine (managed, via the embedded CoreCLR bridge) and the NativeDllEngine (AOT, via NativeLibrary.Load). workmanager.docs.virtufin.com
virtufin/virtufin-websocketmanager The WebSocketManager service. The proxy for external WebSocket connections (Binance, Alpaca, etc.). Workers talk to it via the API gateway's websocketmanager.* methods (Connect, SendRaw, StartPublish, etc.). websocketmanager.docs.virtufin.com
virtufin/virtufin-workers This repo. Worker source packages — the WebSocketManagerController is the canonical example. Covers the IGatewayClient abstraction, the build pipeline (managed / native / both), the runtime arch check, the bridge between the WM core and per-worker shims. (this site, workers.docs.virtufin.com)
virtufin/virtufin-examples Worked example workers and clients. The Virtufin.Examples.WebSocketManagerController.NativeAot project is the AOT-portable worker that uses NativeApiGateway.InvokeAsync (the AOT equivalent of the managed IGatewayClient); the dotnet- and Python-level examples are here too. (no docs site; cross-references from the platform docs)
virtufin/virtufin-deploy-local Standalone Docker Compose deploys for local dev. Provides the canonical prod.yaml that brings up API + WM + WSM + Dapr + Redis (or Valkey) + Zipkin. (no docs site)
virtufin/docker-compose The docker-compose repo that this site documents. Mirrors deploy-local/prod.yaml with the same service profiles (infra, api, wm, wsm, app) and the same env-var convention (VIRTUFIN_DOCKER_*, VIRTUFIN_PACKAGES_*, etc.). (no docs site; this is the deploy artifact itself)

How the sites are built

All the docs sites are built with the same toolchain: - MkDocs Material with the same theme (indigo palette, dark/light toggle, search, code annotations). - mkdocs_v1.yml is the canonical config filename (mirroring each service's API version, e.g. v1). - CNAME at the docs root for the per-service domain (e.g. lib.docs.virtufin.com, api.docs.virtufin.com). - docs-common.yaml in virtufin-common/.github/workflows/ is the reusable publish workflow — each service's .github/workflows/docs.yaml calls it with its own docs_repo and mkdocs_config. - docs-lint-common.yaml is the reusable lint workflow for docs PRs.

The same MkDocs Material theme settings are used across every site so a developer can move between them without visual whiplash.

Each service's docs site includes a per-page "See also" footer that links to:

  • The service's own home page (self-link)
  • The API gateway (the central mediator every service uses)
  • The WorkManager (the host process for in-process workers)
  • The WebSocketManager (the proxy most workers talk to)
  • The DotNet library (for cross-language data types)
  • The OpenSpec (for normative rules)
  • The examples repo (for worked examples)
  • The common repo (for shared infra)

This makes the docs suite feel like one product rather than eight disconnected sites.

See also