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.
Cross-site link conventions
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
- Introduction — what a worker is
- Getting Started — build, publish, run
- Worker Author Guide — author a new worker