Architecture

The server manages versioned project state, coordinates blob streaming, and delegates authentication to an external OIDC provider. The web client is a WASM application served directly from a CDN.

Component Overview

  graph TD
    User(["User"])
    Clients["Clients<br/>(Desktop, Web, CLI)"]
    CDN["CDN / Static Hosting<br/>(WASM Frontend)"]
    OIDC["OIDC Identity Provider"]
    Proxy["Reverse Proxy / Load Balancer<br/>(TLS Termination)"]
    Server["FDK Server<br/>(Axum, Rust)"]
    DB["PostgreSQL<br/>(Project State, Versioned History)"]
    S3["S3-Compatible Object Storage<br/>(Blobs, Large Data)"]

    User --> Clients
    Clients -- "Web only" --> CDN
    Clients --> OIDC
    Clients --> Proxy
    Proxy --> Server
    Server --> DB
    Server --> S3
    Server -.-> |"token validation"| OIDC

Infrastructure Requirements

ComponentPurposeRequirementExamples
DatabaseVersioned project statePostgreSQL 15+Any managed or self-hosted PostgreSQL
Object StorageLarge data blobsS3-compatible APIMinIO, AWS S3, Azure Blob Storage, GCS
Identity ProviderUser authenticationOpenID Connect (OIDC)Keycloak, Auth0, Entra ID, Okta
TLS CertificatesTransport encryptionValid TLS cert for server domainLet’s Encrypt, ACM, cert-manager
Reverse ProxyTLS termination, routingHTTP reverse proxy (recommended)nginx, Traefik, ALB, Cloud Load Balancer
Static HostingWASM frontend assetsCDN or static file serverS3 + CloudFront, nginx, any CDN

Server Characteristics

  • Single statically compiled Rust binary
  • Can run database migrations at startup (optional)
  • Stateless — horizontally scalable behind a load balancer
  • Configurable via environment variables

Reference Implementations