Skip to content

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