Architecture#
Oxtapus uses lightweight hexagonal boundaries. API and CLI adapt user input; application services coordinate use cases; domain objects contain financial language; provider adapters own source-specific parsing; transport owns HTTPX2, retries, rate limits, and byte progress; storage owns persistence.
flowchart TD
U[User API or CLI] --> A[Application]
A --> D[Domain contracts]
A --> P[Provider port]
P --> X[Source adapter]
X --> T[Transport port]
A --> S[Storage port]
Dependencies point inward. Provider transformation performs no I/O, extraction performs no persistence, and Gold transformation performs no network access.