---
config:
theme: base
themeVariables:
background: "#ffffff"
primaryColor: "#ffffff"
primaryBorderColor: "#1f2937"
primaryTextColor: "#0b1220"
lineColor: "#1f2937"
textColor: "#0b1220"
edgeLabelBackground: "#ffffff"
fontSize: "18px"
clusterBkg: "#ffffff"
clusterBorder: "#9ca3af"
flowchart:
htmlLabels: true
curve: basis
nodeSpacing: 55
rankSpacing: 90
---
flowchart LR
subgraph APP_COL[" "]
direction TB
App["Application
containers · components · hooks"]
Rdx[("Redux
in-memory state")]
end
subgraph SRV_COL[" "]
direction TB
Srv[("Servatrice")]
IDB[("IndexedDB
local persistent store")]
end
Req["client.request"]
Res["client.response"]
%% Outbound lane (top)
App -- "useWebClient()" --> Req
Req -- "Commands" --> Srv
%% Inbound lane (bottom)
Srv -- "Events · Responses" --> Res
Res -- "dispatch · rerender" --> App
%% Local stores — Application owns both; edges only to IndexedDB
%% (Redux state is implicit — reducers sit under dispatch, selectors under rerender)
App -. "Dexie: settings · hosts · cards" .-> IDB
%% Palette — four roles
classDef app fill:#dbeafe,stroke:#1f2937,stroke-width:1.5px,color:#0b1220
classDef seam fill:#dbeafe,stroke:#1f2937,stroke-width:1.5px,color:#0b1220
classDef store fill:#fde68a,stroke:#1f2937,stroke-width:1.5px,color:#0b1220
classDef external fill:#e5e7eb,stroke:#1f2937,stroke-width:1.5px,color:#0b1220
class App app
class Req,Res seam
class Rdx store
class Srv,IDB external