From 97fa2e7128a44e1ab8ea20bf548ea8fe8352b0a5 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Fri, 21 Aug 2026 14:24:19 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9D(core)=20update=20the=20architectur?= =?UTF-8?q?e=20documentation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We want to update the architecture documentation with YHub and removing the mention of HocusPocus --- documentation/architecture.md | 521 +++++++++++++++++- .../diagrams/architecture-collaboration.mmd | 36 ++ .../diagrams/architecture-collaboration.png | Bin 0 -> 131944 bytes .../diagrams/architecture-collaboration.svg | 1 + .../assets/diagrams/architecture-services.mmd | 112 ++++ .../assets/diagrams/architecture-services.png | Bin 0 -> 180111 bytes .../assets/diagrams/architecture-services.svg | 1 + .../assets/diagrams/architecture-trust.mmd | 25 + .../assets/diagrams/architecture-trust.png | Bin 0 -> 102260 bytes .../assets/diagrams/architecture-trust.svg | 1 + documentation/assets/diagrams/render.sh | 40 ++ .../assets/diagrams/sequence-attachment.mmd | 30 + .../assets/diagrams/sequence-attachment.png | Bin 0 -> 106189 bytes .../assets/diagrams/sequence-attachment.svg | 1 + .../assets/diagrams/sequence-conversion.mmd | 32 ++ .../assets/diagrams/sequence-conversion.png | Bin 0 -> 107725 bytes .../assets/diagrams/sequence-conversion.svg | 1 + .../diagrams/sequence-open-document.mmd | 35 ++ .../diagrams/sequence-open-document.png | Bin 0 -> 130589 bytes .../diagrams/sequence-open-document.svg | 1 + 20 files changed, 823 insertions(+), 14 deletions(-) create mode 100644 documentation/assets/diagrams/architecture-collaboration.mmd create mode 100644 documentation/assets/diagrams/architecture-collaboration.png create mode 100644 documentation/assets/diagrams/architecture-collaboration.svg create mode 100644 documentation/assets/diagrams/architecture-services.mmd create mode 100644 documentation/assets/diagrams/architecture-services.png create mode 100644 documentation/assets/diagrams/architecture-services.svg create mode 100644 documentation/assets/diagrams/architecture-trust.mmd create mode 100644 documentation/assets/diagrams/architecture-trust.png create mode 100644 documentation/assets/diagrams/architecture-trust.svg create mode 100755 documentation/assets/diagrams/render.sh create mode 100644 documentation/assets/diagrams/sequence-attachment.mmd create mode 100644 documentation/assets/diagrams/sequence-attachment.png create mode 100644 documentation/assets/diagrams/sequence-attachment.svg create mode 100644 documentation/assets/diagrams/sequence-conversion.mmd create mode 100644 documentation/assets/diagrams/sequence-conversion.png create mode 100644 documentation/assets/diagrams/sequence-conversion.svg create mode 100644 documentation/assets/diagrams/sequence-open-document.mmd create mode 100644 documentation/assets/diagrams/sequence-open-document.png create mode 100644 documentation/assets/diagrams/sequence-open-document.svg diff --git a/documentation/architecture.md b/documentation/architecture.md index f858eb01d..250c47d06 100644 --- a/documentation/architecture.md +++ b/documentation/architecture.md @@ -1,20 +1,513 @@ -## Architecture +# Architecture -### Global system architecture +## Overview +Docs is a set of small services around one rule: **Django owns who may do what, +and the collaboration server owns what a document says**. Every other service is +either a client of those two or a converter they call. + +- The **backend** (Django) holds documents, users, accesses, invitations and + attachments metadata. It is the only service that decides whether a caller may + read or write a document, and every other service asks it rather than deciding + on its own. +- **yhub** holds the live Yjs state of the documents. Browsers connect to it over + a websocket and edit together; it persists the merged state in a store of its + own. The backend reads and writes that state through yhub's REST API — never + directly in its database. +- The **frontend** is a Next.js application exported to static files. In + production it is served by Nginx, with no Node.js runtime. +- **y-provider** and **Docspec** are stateless converters. They store nothing and + own nothing. + +Nothing long-lived is shared between the services: they authenticate to each +other with short-lived RS256 JWTs, each verified against the JWKS the other +publishes. + +## The services at a glance + +| Service | Stack | Owns | Talks to | +| --- | --- | --- | --- | +| Frontend | Next.js, BlockNote, static export served by Nginx | nothing | the browser only | +| Backend | Django, DRF | documents, users, accesses, attachments | PostgreSQL, Redis, S3, yhub, y-provider, Docspec, OIDC, LLM, search | +| Celery worker | Celery | nothing | PostgreSQL, Redis, yhub, SMTP, search | +| yhub server | `@y/hub`, Node | the live document content | Valkey, its PostgreSQL, the backend, S3 | +| yhub worker | `@y/hub`, Node | — | Valkey, its PostgreSQL, optional S3 | +| y-provider | Express, BlockNote server-util | nothing | the backend (JWKS only) | +| Docspec | external image | nothing | nothing | + +## Global service map + + ```mermaid -flowchart TD - User -- HTTP --> Front("Frontend (NextJS SPA)") - Front -- REST API --> Back("Backend (Django)") - Front -- WebSocket --> Yserver("Microservice Yjs (Express)") -- WebSocket --> CollaborationServer("Collaboration server (Hocuspocus)") -- REST API <--> Back - Front -- OIDC --> Back -- OIDC ---> OIDC("Keycloak / ProConnect") - Back -- REST API --> Yserver - Back --> DB("Database (PostgreSQL)") - Back <--> Celery --> DB - Back ----> S3("Minio (S3)") - Back -- REST API --> Find +flowchart LR + + subgraph clients["Clients"] + direction TB + BROWSER["Browser
Next.js SPA · BlockNote
+ service worker (offline)"] + EXTAPP["Third-party app
resource-server client"] + end + + subgraph edge["Edge"] + INGRESS["Ingress / Nginx
TLS · routing · media auth"] + end + + subgraph app["Application services"] + direction TB + FRONT["Frontend
Next.js static build"] + BACK["Backend
Django · DRF"] + CELERY["Celery worker"] + subgraph collab["Collaboration"] + direction TB + YHUB["yhub server
WebSocket + REST"] + YWORKER["yhub worker"] + end + subgraph conv["Conversion"] + direction TB + YPROV["y-provider
Yjs to md / HTML / JSON"] + DOCSPEC["Docspec
.docx import"] + end + end + + subgraph stores["Data stores"] + direction TB + PG[("PostgreSQL
docs · users · rights")] + REDIS[("Redis
broker · cache")] + S3[("S3 / MinIO
attachments · versions")] + VALKEY[("Valkey
update stream")] + YPG[("PostgreSQL yhub
Yjs state")] + YS3[("S3 yhub
optional")] + end + + subgraph ext["External services"] + direction TB + OIDC["OIDC provider
Keycloak · ProConnect"] + LLM["LLM provider
OpenAI · Mistral"] + SEARCH["Search / indexing"] + SMTP["SMTP relay"] + AV["Malware detection"] + OBS["Langfuse · Sentry · PostHog"] + end + + %% clients to edge + BROWSER ==>|"HTTPS · WSS"| INGRESS + EXTAPP -->|"bearer token"| INGRESS + BROWSER -.->|"login"| OIDC + + %% edge to services + INGRESS -->|"/"| FRONT + INGRESS ==>|"/api/v1.0/"| BACK + INGRESS ==>|"/collaboration/"| YHUB + INGRESS -->|"/media/ after auth check"| S3 + INGRESS -.->|"auth_request"| BACK + INGRESS -->|"/external_api/v1.0/"| BACK + + %% backend + BACK --> PG + BACK --> S3 + BACK --> REDIS + REDIS --> CELERY + CELERY --> PG + BACK <-.->|"OIDC"| OIDC + BACK -->|"AI features"| LLM + BACK -->|"query"| SEARCH + CELERY -->|"index"| SEARCH + CELERY -->|"mail"| SMTP + BACK <-.->|"scan · callback"| AV + BACK -.-> OBS + + %% backend and collaboration + BACK <==>|"document lifecycle
+ auth callbacks"| YHUB + CELERY -->|"cascade sync"| YHUB + + %% conversion + BACK -->|"convert"| YPROV + BACK -->|"import .docx"| DOCSPEC + YPROV -.->|"JWKS"| BACK + + %% collaboration internals + YHUB --> VALKEY + VALKEY --> YWORKER + YWORKER --> YPG + YHUB --> YPG + YWORKER -.-> YS3 + YHUB -.->|"legacy content"| S3 + + classDef client fill:#e8f0fe,stroke:#3b6fd4,color:#12244a + classDef service fill:#e6f7ed,stroke:#2f9e5f,color:#0f3d24 + classDef store fill:#fff4e0,stroke:#d99a19,color:#4a3410 + classDef external fill:#f3ecfc,stroke:#8256c4,color:#2e1a4d + classDef edgeNode fill:#fdeaea,stroke:#cf4747,color:#4a1414 + + class BROWSER,EXTAPP client + class FRONT,BACK,CELERY,YHUB,YWORKER,YPROV,DOCSPEC service + class PG,REDIS,S3,VALKEY,YPG,YS3 store + class OIDC,LLM,SEARCH,SMTP,AV,OBS external + class INGRESS edgeNode + + style clients fill:#fbfcff,stroke:#c7d4ec + style edge fill:#fffafa,stroke:#eccaca + style app fill:#fafdfb,stroke:#c9e3d4 + style collab fill:#f0faf4,stroke:#a9d6bd + style conv fill:#f0faf4,stroke:#a9d6bd + style stores fill:#fffdf8,stroke:#ecd9b0 + style ext fill:#fdfbff,stroke:#d9c9ee ``` -### Architecture decision records +## Request routing -- [ADR-0001-20250106-use-yjs-for-docs-editing](./adr/ADR-0001-20250106-use-yjs-for-docs-editing.md) \ No newline at end of file +One hostname is enough. The reverse proxy dispatches on the path: + +| Path | Goes to | Notes | +| --- | --- | --- | +| `/` | frontend | static assets, client-side routing | +| `/api/v1.0/` | backend | REST API, session cookie | +| `/external_api/v1.0/` | backend | resource server, OIDC bearer token | +| `/collaboration/ws/v1/…` | yhub | the websocket the editors open | +| `/collaboration/{ydoc,rollback,prune,changeset,activity,jwks}` | yhub | document APIs, guarded by the same document authorization | +| `/media/` | S3, after an `auth_request` to the backend | see [attachments](#attachments-and-protected-media) | + +Four yhub routes are **backend-internal** and must not be published: +`reset-connections`, `migrate`, `restore-ydoc` and `reset-ydoc`. The two probes +(`ping`, `ready`) are called by the kubelet and stay in-cluster too. The helm +chart's ingress lists what it routes rather than what it hides, so they stay +private on their own. + +## Collaboration + + +```mermaid +flowchart TB + + EDITORS["Editors
one browser per participant"] + BACK["Django backend
owns documents, users, access rights"] + + subgraph yhubbox["yhub — two halves sharing only the stores"] + direction LR + SRV["server
YHUB_ROLE=server | all
websockets + /collaboration/ routes"] + WRK["worker
YHUB_ROLE=worker | all
merges updates, persists, trims"] + end + + VALKEY[("Valkey / Redis
update stream · consumer group")] + YPG[("PostgreSQL yhub
persisted Yjs state")] + YS3[("S3 yhub
optional blob store")] + LEGACY[("S3 media bucket
legacy content + versions")] + + EDITORS <==>|"WSS /collaboration/ws/v1/:org/:docid"| SRV + SRV -->|"auth + change callbacks"| BACK + BACK -->|"document lifecycle API"| SRV + + SRV -->|"XADD"| VALKEY + VALKEY -->|"XREADGROUP"| WRK + VALKEY -->|"fan-out to the other replicas"| SRV + SRV -->|"read on first sync"| YPG + WRK -->|"merged state"| YPG + WRK -.->|"when enabled"| YS3 + SRV -.->|"seed a room · replay history"| LEGACY + BACK --> LEGACY + + classDef svc fill:#e6f7ed,stroke:#2f9e5f,color:#0f3d24 + classDef store fill:#fff4e0,stroke:#d99a19,color:#4a3410 + classDef client fill:#e8f0fe,stroke:#3b6fd4,color:#12244a + class SRV,WRK,BACK svc + class VALKEY,YPG,YS3,LEGACY store + class EDITORS client + style yhubbox fill:#f0faf4,stroke:#a9d6bd +``` + +yhub is **two halves that share the two stores and nothing else** — no +in-process state, no ordering between them: + +- the **server** accepts the websockets, serves the routes, and writes every + update to the Valkey stream; +- the **worker** claims tasks from that stream, merges the updates, stores the + result and trims what it persisted. + +`YHUB_ROLE` decides which half a process runs. Unset means both, which is the +default. Splitting them lets each scale on its own — servers with the connected +editors, workers with the write throughput — but they are split together or not +at all: servers alone accept edits and never persist them. + +Consumer groups hand each task to exactly one worker, and replicas exchange +updates through the stream, so **no sticky routing is needed** on the websocket +ingress and any number of replicas can serve the same document. + +yhub decides nothing about access. On every websocket upgrade it asks the +backend twice — `GET /api/v1.0/users/me/` for the identity behind the cookie, +then `GET /api/v1.0/documents/{id}/` for what that identity may do with this +document — and a backend that does not answer produces a retryable 503 rather +than a permission decision. When the persisted content changes, it calls +`POST /api/v1.0/documents/{id}/content-updated/` back, so that lists ordered by +`updated_at` follow the edits. That call is best effort: one the backend refuses +or never receives is logged and dropped. + +Documents created before the migration still have their content in the S3 media +bucket. The first access to a room yhub does not know seeds it from there; +`POST /collaboration/migrate/…` replays a document's full version history out of +the same bucket. + +See [collaboration.md](collaboration.md) for the configuration. + +### Opening and editing a document + + +```mermaid +sequenceDiagram + autonumber + actor U as Browser + participant N as Ingress / Nginx + participant D as Django backend + participant Y as yhub server + participant V as Valkey + participant W as yhub worker + participant P as PostgreSQL yhub + + U->>N: GET /docs/:id + N->>D: GET /api/v1.0/documents/:id/ (session cookie) + D-->>U: metadata, abilities, link reach + + U->>N: WSS /collaboration/ws/v1/docs/:id + N->>Y: upgrade, forwards cookie and origin + Y->>D: GET /api/v1.0/users/me/ + D-->>Y: user id (or 401, then anonymous) + Y->>D: GET /api/v1.0/documents/:id/ + D-->>Y: abilities, so read-only or read-write + Note over Y: unknown room, seed it once
from the legacy S3 content + Y->>P: read the persisted state + Y-->>U: initial sync + + loop while editing + U->>Y: Yjs update + Y->>V: XADD + Y-->>U: broadcast to the other editors + end + + V->>W: XREADGROUP, one task to one worker + W->>P: merge and persist + W->>V: trim what is stored + Y->>D: POST /documents/:id/content-updated/ (yhub JWT) + D->>D: bump updated_at, queue the search indexer +``` + +## Content is read through yhub, never around it + +The backend never reads a document's content from its own database — it does not +have it. Anything needing the text goes through yhub's REST API with an admin +JWT: + +| The backend wants to | It calls | +| --- | --- | +| create a document with initial content | `POST /collaboration/create-ydoc/v1/…` — a strict create, 409 if content already exists | +| read the content (export, search indexing, AI) | `GET /collaboration/ydoc/v1/…` | +| delete a document | `DELETE /collaboration/ydoc/v1/…` | +| restore a deleted one | `POST /collaboration/restore-ydoc/v1/…` | +| erase the content, keeping the room | `POST /collaboration/reset-ydoc/v1/…` | +| re-check the rights of connected clients | `POST /collaboration/reset-connections/v1/…` | +| replay the legacy history | `POST /collaboration/migrate/v1/…` | + +Deletions and permission changes cascade: a document inherits the accesses of its +ancestors, so the Celery tasks walk the subtree and call the document-scoped +endpoint once per descendant. A document that fails is logged and does not stop +the ones after it. + +## Conversion, import and export + + +```mermaid +sequenceDiagram + autonumber + actor U as Browser + participant D as Django backend + participant K as Docspec + participant C as y-provider + participant Y as yhub server + + rect rgb(240,247,255) + Note over U,Y: importing a file + U->>D: POST /documents/create-for-owner/ or import + alt .docx + D->>K: POST /conversion + K-->>D: BlockNote blocks + else markdown + Note over D: kept as is + end + D->>C: POST /api/convert/ (admin JWT) + C-->>D: Yjs update, binary + D->>Y: POST /collaboration/create-ydoc/v1/docs/:id + Y-->>D: 201, or 409 if the document already has content + end + + rect rgb(245,255,248) + Note over U,Y: exporting or reading the content + U->>D: GET /documents/:id/formatted-content/?content_format=markdown + D->>Y: GET /collaboration/ydoc/v1/docs/:id + Y-->>D: current state, the source of truth + D->>C: POST /api/convert/ Yjs to markdown + C-->>D: markdown + D-->>U: converted content + end +``` + +**y-provider** is the only service that understands both a Yjs update and the +BlockNote schema, so every conversion in either direction goes through it. It +used to serve the websockets as well, which is why it could be deployed twice; +the collaboration is served by yhub now and the conversion is all that is left. + +**Docspec** turns `.docx` into modern editable content. It is optional +(`CONVERSION_UPLOAD_ENABLED`), it exposes a public API with no authentication of +its own, and should therefore be deployed on a private network. + +See [format_conversion.md](format_conversion.md). + +## Attachments and protected media + + +```mermaid +sequenceDiagram + autonumber + actor U as Browser + participant N as Ingress / Nginx + participant D as Django backend + participant S as S3 / MinIO + participant C as Celery worker + participant A as Malware scanner + + rect rgb(240,247,255) + Note over U,A: upload + U->>D: POST /documents/:id/attachment-upload/ + D->>D: check write access, size, mime type + D->>S: PUT object, status=processing + D->>C: queue the scan + C->>A: scan the object + A-->>D: callback, safe or infected + D->>S: metadata status=ready, or delete + D-->>U: media url + end + + rect rgb(245,255,248) + Note over U,S: read + U->>N: GET /media/:key + N->>D: auth_request /documents/media-auth/
X-Original-URL + D->>D: resolve the document, check read access + D-->>N: 200 + Authorization, X-Amz-Date, X-Amz-Content-SHA256 + N->>S: GET the object with those signed headers + S-->>U: file, with Content-Security-Policy default-src none + end +``` + +Attachments are never served straight from the bucket. Every `/media/` request +goes through an Nginx `auth_request` sub-request to the backend, which resolves +the object key back to its document, checks the caller's read access, and answers +with the S3 headers signing that single object. Nginx then proxies the object +with those headers. The bucket needs no public access, and a leaked url grants +nothing. + +The sub-request is on the hot path of every image in a document, so a slow +backend shows up here first — the reason the readiness probe and the database +pool sizing matter more than their traffic suggests. + +## Service-to-service trust + + +```mermaid +flowchart LR + + BACK["Django backend
signs with JWT_PRIVATE_KEY
publishes /api/v1.0/jwks"] + YHUB["yhub
signs with YHUB_JWT_PRIVATE_KEY
publishes /collaboration/jwks/v1"] + YPROV["y-provider
verifies only, signs nothing"] + RS["Resource server
same Django process
publishes /external_api/v1.0/jwks"] + OIDC["OIDC provider"] + + BACK ==>|"admin JWT · RS256 · aud yhub · short lived"| YHUB + YHUB -.->|"fetches the backend JWKS to verify it"| BACK + YHUB ==>|"callback JWT · RS256 · aud docs-backend · 1 min"| BACK + BACK -.->|"fetches the yhub JWKS to verify it"| YHUB + BACK ==>|"admin JWT · RS256"| YPROV + YPROV -.->|"fetches the backend JWKS to verify it"| BACK + OIDC -.->|"introspection · declared JWKS"| RS + RS --- BACK + + NOTE["No shared secret in either direction.
Each side holds only its own private key
and can roll it without touching the other:
keys are picked by kid and the set is re-fetched
whenever an unknown one shows up."] + + classDef svc fill:#e6f7ed,stroke:#2f9e5f,color:#0f3d24 + classDef external fill:#f3ecfc,stroke:#8256c4,color:#2e1a4d + classDef note fill:#fffdf5,stroke:#d9c9a0,color:#4a3410 + class BACK,YHUB,YPROV,RS svc + class OIDC external + class NOTE note +``` + +Both directions between the backend and yhub are authenticated with short-lived +RS256 JWTs, and each side verifies the other against the JWKS it publishes. Both +need a signing key of their own, and neither needs a copy of the other's — so +rolling one needs no change on the other side. The helm chart can generate both +keys into a secret every service mounts read-only (`jwtKeys.enabled`). + +Two other credentials exist and are *not* part of that scheme: + +- `Y_PROVIDER_API_KEY`, sent by yhub as `X-Y-Provider-Key` on its authorization + calls. It only exempts them from the API throttling — it authenticates nothing. +- `SERVER_TO_SERVER_API_TOKENS`, a list of bearer tokens accepted on + `create-for-owner`, for trusted services creating a document on a user's behalf. + +## Authentication of the users + +The frontend redirects to the OIDC provider (Keycloak in development, ProConnect +in production, any compliant provider elsewhere); the backend is the relying +party and keeps the session in a cookie. That cookie is what the browser sends to +the API *and* what yhub forwards to the backend when authorizing a websocket. + +Docs is also a **resource server**: with `OIDC_RESOURCE_SERVER_ENABLED`, another +application can call `/external_api/v1.0/` with an OIDC access token, on the +routes and actions the `EXTERNAL_API` setting allows. See +[resource_server.md](resource_server.md). + +## Asynchronous work + +Celery runs on the same Redis instance the backend caches and stores sessions in, +on a database of its own. It carries what must not +block a request: invitation and access-request emails, the search indexing, the +user reconciliation import, the malware scan callbacks, and the cascade calls to +yhub when a document is deleted, restored, or has its accesses changed. There is +no beat scheduler — periodic work is deployed as Kubernetes CronJobs +(`backend.cronjobs` in the chart). + +## Optional and external services + +| Service | Enabled by | Used for | +| --- | --- | --- | +| Search / indexing | `SEARCH_INDEXER_CLASS`, `INDEXING_URL`, `SEARCH_URL` | full-text search across documents, fed by Celery | +| LLM provider | `AI_FEATURE_ENABLED` + OpenAI-compatible or Mistral credentials | rewrite, summarize, translate, fix typos | +| Langfuse | `LANGFUSE_*` | tracing the LLM calls | +| Malware detection | `MALWARE_DETECTION` backend | scanning uploaded attachments | +| Docspec | `CONVERSION_UPLOAD_ENABLED`, `DOCSPEC_API_URL` | `.docx` import | +| yhub S3 persistence | `YHUB_S3_PERSISTENCE` | document blobs in a bucket instead of PostgreSQL | +| Sentry, PostHog | `SENTRY_DSN`, `POSTHOG_KEY` | errors and product analytics | + +## Data stores + +| Store | Holds | Lost if deleted | +| --- | --- | --- | +| PostgreSQL (Django) | documents, users, accesses, invitations | everything but the document text | +| Redis | Celery broker, cache, sessions | in-flight tasks, and every session — users are logged out | +| S3 / MinIO | attachments, legacy content and its version history | attachments, version history | +| Valkey / Redis (yhub) | the update stream not yet persisted | the last seconds of edits — hence `appendonly` | +| PostgreSQL (yhub) | the persisted Yjs state | the documents' text | +| S3 (yhub, optional) | the same state as blobs | the documents' text | + +yhub's schema is never created at startup — the server runs no DDL. Run its init +script once before starting it, and again after every upgrade that adds a table; +the helm chart runs it as a job. + +## Regenerating the diagrams + +The diagrams above are the source. `documentation/assets/diagrams/render.sh` +extracts each one into a standalone `.mmd` file and renders it to PNG and SVG in +the same directory: + +```bash +./documentation/assets/diagrams/render.sh +``` + +## Architecture decision records + +- [ADR-0001-20250106-use-yjs-for-docs-editing](./adr/ADR-0001-20250106-use-yjs-for-docs-editing.md) diff --git a/documentation/assets/diagrams/architecture-collaboration.mmd b/documentation/assets/diagrams/architecture-collaboration.mmd new file mode 100644 index 000000000..6729c2f8c --- /dev/null +++ b/documentation/assets/diagrams/architecture-collaboration.mmd @@ -0,0 +1,36 @@ +flowchart TB + + EDITORS["Editors
one browser per participant"] + BACK["Django backend
owns documents, users, access rights"] + + subgraph yhubbox["yhub — two halves sharing only the stores"] + direction LR + SRV["server
YHUB_ROLE=server | all
websockets + /collaboration/ routes"] + WRK["worker
YHUB_ROLE=worker | all
merges updates, persists, trims"] + end + + VALKEY[("Valkey / Redis
update stream · consumer group")] + YPG[("PostgreSQL yhub
persisted Yjs state")] + YS3[("S3 yhub
optional blob store")] + LEGACY[("S3 media bucket
legacy content + versions")] + + EDITORS <==>|"WSS /collaboration/ws/v1/:org/:docid"| SRV + SRV -->|"auth + change callbacks"| BACK + BACK -->|"document lifecycle API"| SRV + + SRV -->|"XADD"| VALKEY + VALKEY -->|"XREADGROUP"| WRK + VALKEY -->|"fan-out to the other replicas"| SRV + SRV -->|"read on first sync"| YPG + WRK -->|"merged state"| YPG + WRK -.->|"when enabled"| YS3 + SRV -.->|"seed a room · replay history"| LEGACY + BACK --> LEGACY + + classDef svc fill:#e6f7ed,stroke:#2f9e5f,color:#0f3d24 + classDef store fill:#fff4e0,stroke:#d99a19,color:#4a3410 + classDef client fill:#e8f0fe,stroke:#3b6fd4,color:#12244a + class SRV,WRK,BACK svc + class VALKEY,YPG,YS3,LEGACY store + class EDITORS client + style yhubbox fill:#f0faf4,stroke:#a9d6bd diff --git a/documentation/assets/diagrams/architecture-collaboration.png b/documentation/assets/diagrams/architecture-collaboration.png new file mode 100644 index 0000000000000000000000000000000000000000..56749204f2269b23090abbf6e1d5a98285266301 GIT binary patch literal 131944 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∓8 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

9aZa$#qlq{hubY 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

yhub — two halves sharing only the stores

WSS /collaboration/ws/v1/:org/:docid

auth + change callbacks

document lifecycle API

XADD

XREADGROUP

fan-out to the other replicas

read on first sync

merged state

when enabled

seed a room · replay history

Editors
one browser per participant

Django backend
owns documents, users, access rights

server
YHUB_ROLE=server | all
websockets + /collaboration/ routes

worker
YHUB_ROLE=worker | all
merges updates, persists, trims

Valkey / Redis
update stream · consumer group

PostgreSQL yhub
persisted Yjs state

S3 yhub
optional blob store

S3 media bucket
legacy content + versions

\ No newline at end of file diff --git a/documentation/assets/diagrams/architecture-services.mmd b/documentation/assets/diagrams/architecture-services.mmd new file mode 100644 index 000000000..fca05d20a --- /dev/null +++ b/documentation/assets/diagrams/architecture-services.mmd @@ -0,0 +1,112 @@ +flowchart LR + + subgraph clients["Clients"] + direction TB + BROWSER["Browser
Next.js SPA · BlockNote
+ service worker (offline)"] + EXTAPP["Third-party app
resource-server client"] + end + + subgraph edge["Edge"] + INGRESS["Ingress / Nginx
TLS · routing · media auth"] + end + + subgraph app["Application services"] + direction TB + FRONT["Frontend
Next.js static build"] + BACK["Backend
Django · DRF"] + CELERY["Celery worker"] + subgraph collab["Collaboration"] + direction TB + YHUB["yhub server
WebSocket + REST"] + YWORKER["yhub worker"] + end + subgraph conv["Conversion"] + direction TB + YPROV["y-provider
Yjs to md / HTML / JSON"] + DOCSPEC["Docspec
.docx import"] + end + end + + subgraph stores["Data stores"] + direction TB + PG[("PostgreSQL
docs · users · rights")] + REDIS[("Redis
broker · cache")] + S3[("S3 / MinIO
attachments · versions")] + VALKEY[("Valkey
update stream")] + YPG[("PostgreSQL yhub
Yjs state")] + YS3[("S3 yhub
optional")] + end + + subgraph ext["External services"] + direction TB + OIDC["OIDC provider
Keycloak · ProConnect"] + LLM["LLM provider
OpenAI · Mistral"] + SEARCH["Search / indexing"] + SMTP["SMTP relay"] + AV["Malware detection"] + OBS["Langfuse · Sentry · PostHog"] + end + + %% clients to edge + BROWSER ==>|"HTTPS · WSS"| INGRESS + EXTAPP -->|"bearer token"| INGRESS + BROWSER -.->|"login"| OIDC + + %% edge to services + INGRESS -->|"/"| FRONT + INGRESS ==>|"/api/v1.0/"| BACK + INGRESS ==>|"/collaboration/"| YHUB + INGRESS -->|"/media/ after auth check"| S3 + INGRESS -.->|"auth_request"| BACK + INGRESS -->|"/external_api/v1.0/"| BACK + + %% backend + BACK --> PG + BACK --> S3 + BACK --> REDIS + REDIS --> CELERY + CELERY --> PG + BACK <-.->|"OIDC"| OIDC + BACK -->|"AI features"| LLM + BACK -->|"query"| SEARCH + CELERY -->|"index"| SEARCH + CELERY -->|"mail"| SMTP + BACK <-.->|"scan · callback"| AV + BACK -.-> OBS + + %% backend and collaboration + BACK <==>|"document lifecycle
+ auth callbacks"| YHUB + CELERY -->|"cascade sync"| YHUB + + %% conversion + BACK -->|"convert"| YPROV + BACK -->|"import .docx"| DOCSPEC + YPROV -.->|"JWKS"| BACK + + %% collaboration internals + YHUB --> VALKEY + VALKEY --> YWORKER + YWORKER --> YPG + YHUB --> YPG + YWORKER -.-> YS3 + YHUB -.->|"legacy content"| S3 + + classDef client fill:#e8f0fe,stroke:#3b6fd4,color:#12244a + classDef service fill:#e6f7ed,stroke:#2f9e5f,color:#0f3d24 + classDef store fill:#fff4e0,stroke:#d99a19,color:#4a3410 + classDef external fill:#f3ecfc,stroke:#8256c4,color:#2e1a4d + classDef edgeNode fill:#fdeaea,stroke:#cf4747,color:#4a1414 + + class BROWSER,EXTAPP client + class FRONT,BACK,CELERY,YHUB,YWORKER,YPROV,DOCSPEC service + class PG,REDIS,S3,VALKEY,YPG,YS3 store + class OIDC,LLM,SEARCH,SMTP,AV,OBS external + class INGRESS edgeNode + + style clients fill:#fbfcff,stroke:#c7d4ec + style edge fill:#fffafa,stroke:#eccaca + style app fill:#fafdfb,stroke:#c9e3d4 + style collab fill:#f0faf4,stroke:#a9d6bd + style conv fill:#f0faf4,stroke:#a9d6bd + style stores fill:#fffdf8,stroke:#ecd9b0 + style ext fill:#fdfbff,stroke:#d9c9ee diff --git a/documentation/assets/diagrams/architecture-services.png b/documentation/assets/diagrams/architecture-services.png new file mode 100644 index 0000000000000000000000000000000000000000..aa30b98583243c6ee069cd85626c11aaf61453de GIT binary patch literal 180111 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�gc05C0ec!}8obh5*b&FYJ z*lTD)Yym~;3fV-&z*}Hv)Or5H0arR6dEUHdKBM#*eHchyzI=I~$MFr}CfpZdVvP+S z2@SS}=jr{V6*`k{H8uA)W88m%k)-hH^Jj(TJN$0@{mew4MU!94QQ%*`XunB+>&qp# z%gY?Uk-NFqx(U~&1m7OLQ}JaiK7!HA03PYVFO)~Gq!v<5#qJx#g9+$w^(c1IXUbsn~i8TT7$4bhxS^8!3ICM5(rScZXPpzD7j(m*V~V)Dde|@0ZObVIH7BWN7|JptCh6Qs;h=h6h z`DMP=5t6T2KLo^CSXmYL`CuYPnA}1aV zn+8omWkp4A;IDR&)ygj-7oe$D^4*^2Bcv=9tpbZw53!e+dG?i*`f}FICQDQceE1yTMBO$l(_xZx8smj1c{bnEUt7*OZuS7t!C+&uGWeas(%CR};mi?R=HKoFe} zuKPJMqF()>3t6oK084WBK$&E@Y@CUS(Xx|Nl*D5}X3b7>$Ak8mT-CyVQN#qIh?;^z zPb8BU`g3TQsky0v8*D=GSj^4$2x*I)}rECzC31M>}D2LJIEF!s5@MH2SX>06nViWDzt{)cq$W zF3w?X?_HrOv>lM03HN|IiGEp02Mg5W!opIug$q9}?os79;Aqf2&Mh z-$E#1A(8R%k2`O{7kOteK6sF%B%0|zYKRQJ56bG&{|*C_2$WjJFEil2f80yDa8|#q z31niDS`5_GOpn9x=!k8lmWnTohtbs3ggwC62lt)(tNl+>44V9<&|VZ|5eDKRG}P4m z{WMW5+TY8|ubSQY4gX&w@a)VTUkV@b`wM2b_MU5!>dSd`^%1MrZb?9EV~c6;?369M zIRi~g^$shodY^4g^oIeniKpD5Z80#=9=+p+`|Cq2e0*oWR`HMC16|q^b&7r$BL8#_ zJ_C(E^R>p-~HPm&xgdx{X`S_+r1sl!B9wjU4yzsJHqu871$3vZIH!;v)TnW(B( z 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