From e10c7df4a3820ffdf78ddf5207007d39d6757819 Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Wed, 8 Apr 2026 18:37:30 +0100 Subject: [PATCH] docs: add colours and shapes to architecture diagram Apply colour-coded classDef groups and distinct node shapes: - Clients: blue rounded, Loadbalancer/SSL: green hexagons - API nodes: purple rounded, API Services: grey rounded - Security Layer: green rectangle - Cache/Queue: red/pink (hot path), Database: yellow cylinder - Executor: blue subroutine shape, Workers: teal rounded - External services (SMTP, Letsencrypt, AV): orange rounded Co-Authored-By: Claude Sonnet 4.6 --- README.md | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e886c77e9b..cd347b69cb 100644 --- a/README.md +++ b/README.md @@ -197,37 +197,48 @@ Looking for more SDKs? - Help us by contributing a pull request to our [SDK Gene ```mermaid flowchart TD + classDef client fill:#dae8fc,stroke:#6c8ebf,color:#000 + classDef gateway fill:#d5e8d4,stroke:#82b366,color:#000 + classDef api fill:#e1d5e7,stroke:#9673a6,color:#000 + classDef service fill:#f5f5f5,stroke:#bbb,color:#000 + classDef security fill:#d5e8d4,stroke:#82b366,color:#000 + classDef hot fill:#f8cecc,stroke:#b85450,color:#000 + classDef store fill:#fff2cc,stroke:#d6b656,color:#000 + classDef compute fill:#dae8fc,stroke:#6c8ebf,color:#000 + classDef worker fill:#b0e3e6,stroke:#007080,color:#000 + classDef external fill:#ffe6cc,stroke:#d79b00,color:#000 + subgraph Clients direction LR - Web ~~~ Flutter ~~~ iOS ~~~ Android ~~~ Servers + Web(Web):::client ~~~ Flutter(Flutter):::client ~~~ iOS(iOS):::client ~~~ Android(Android):::client ~~~ Servers(Servers):::client end subgraph APIServices["API Services"] direction LR - Users ~~~ Account ~~~ Teams ~~~ Databases ~~~ Storage ~~~ Locale ~~~ Avatars ~~~ Health ~~~ Functions ~~~ Sites ~~~ Messaging ~~~ VCS ~~~ Tokens ~~~ Proxy + Users(Users):::service ~~~ Account(Account):::service ~~~ Teams(Teams):::service ~~~ Databases(Databases):::service ~~~ Storage(Storage):::service ~~~ Locale(Locale):::service ~~~ Avatars(Avatars):::service ~~~ Health(Health):::service ~~~ Functions(Functions):::service ~~~ Sites(Sites):::service ~~~ Messaging(Messaging):::service ~~~ VCS(VCS):::service ~~~ Tokens(Tokens):::service ~~~ Proxy(Proxy):::service end subgraph Infra["Infrastructure"] direction LR - Cache["Cache (Redis)"] ~~~ Queue["Queue (Redis)"] ~~~ AV["AntiVirus (ClamAV)"] ~~~ DB[(Database)] ~~~ Executor["Executor (Open-Runtimes)"] ~~~ Docker[Docker / K8S] + Cache["Cache (Redis)"]:::hot ~~~ Queue["Queue (Redis)"]:::hot ~~~ AV["AntiVirus (ClamAV)"]:::external ~~~ DB[(Database)]:::store ~~~ Executor[["Executor (Open-Runtimes)"]]:::compute ~~~ Docker(Docker / K8S):::service end subgraph Workers["Background Workers"] direction LR - Schedulers ~~~ StatsUsage[Usage] ~~~ Maintenance ~~~ Audits ~~~ Mails ~~~ DBw[Databases] ~~~ Webhooks ~~~ FnW[Functions] ~~~ Certificates ~~~ Deletes ~~~ Builds ~~~ MessagingW[Messaging] ~~~ Migrations ~~~ Executions + Schedulers(Schedulers):::worker ~~~ StatsUsage(Usage):::worker ~~~ Maintenance(Maintenance):::worker ~~~ Audits(Audits):::worker ~~~ Mails(Mails):::worker ~~~ DBw(Databases):::worker ~~~ Webhooks(Webhooks):::worker ~~~ FnW(Functions):::worker ~~~ Certificates(Certificates):::worker ~~~ Deletes(Deletes):::worker ~~~ Builds(Builds):::worker ~~~ MessagingW(Messaging):::worker ~~~ Migrations(Migrations):::worker ~~~ Executions(Executions):::worker end - Clients --> LB[Loadbalancer] - LB --> Console & GQL[GraphQL API] & REST[REST API] & RT[Realtime API] & SSL[SSL Gateway] + Clients --> LB{{Loadbalancer}}:::gateway + LB --> Console(Console):::api & GQL(GraphQL API):::api & REST(REST API):::api & RT(Realtime API):::api & SSL{{SSL Gateway}}:::gateway REST --> APIServices - REST & GQL & RT --> SecLayer[Security Layer] + REST & GQL & RT --> SecLayer[Security Layer]:::security SecLayer --> Cache & Queue & AV Cache --> DB Queue --> Workers Workers --> DB FnW --> Executor - Mails & MessagingW --> SMTP - Certificates --> LE[Letsencrypt] --> LB + Mails & MessagingW --> SMTP(SMTP):::external + Certificates --> LE(Letsencrypt):::external --> LB ``` Appwrite uses a microservices architecture that was designed for easy scaling and delegation of responsibilities. In addition, Appwrite supports multiple APIs, such as REST, WebSocket, and GraphQL to allow you to interact with your resources by leveraging your existing knowledge and protocols of choice.