Architecture Overview¶
Arodonata uses a ports-and-adapters (hexagonal) architecture: business logic in arodonata.core and arodonata.api never imports a database driver or an HTTP client directly — it depends on Port protocols (ApiPort, CachePort), and concrete arodonata.adapters implementations are wired in at construction time.
flowchart TB
subgraph App["Client Application"]
A[Owns SQLAlchemy AsyncEngine + config]
end
subgraph Core["Arodonata Core Framework"]
direction LR
Client["ArodonataClient<br/>(high-level facade)"]
ASDK["AMgmtClient<br/>(low-level facade)"]
Cache["CacheRepository /<br/>DatabaseManager"]
Client --> Ports
ASDK --> Ports
Cache --> Ports
Ports["ApiPort / CachePort"]
end
subgraph Infra["External Infrastructure"]
direction LR
PG[(PostgreSQL)]
CP[Check Point API]
Py[Pydantic v2 models]
end
App --> Core
Ports --> PG
Ports --> CP
Ports --> Py - Ports & Adapters — the facade classes and how the port/adapter boundary is drawn.
- Caching & Sync — smart refresh,
show-changes, and how the object cache stays fresh. - Sessions & Multi-Domain — login/session lifecycle and MDM domain resolution.