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 <noreply@anthropic.com>
This commit is contained in:
loks0n
2026-04-08 18:37:30 +01:00
co-authored by Claude Sonnet 4.6
parent 54baa3e842
commit e10c7df4a3
+20 -9
View File
@@ -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.