Overview¶
globaltrust-bank is a complete fictional bank generated entirely through apogee CLI commands. No application code was written by hand — every entity, repository, use case, controller and migration came from a generator.
Bounded contexts¶
graph LR
customers((customers))
accounts((accounts))
transactions((transactions))
fx((fx))
compliance((compliance))
customers --> accounts
accounts --> transactions
transactions --> fx
transactions --> compliance
customers --> compliance
| Context | Aggregate root | Storage |
|---|---|---|
customers |
CustomerEntity (full_name, email, KYC status, country, language) |
PostgreSQL |
accounts |
AccountEntity (IBAN, balance, currency, status) |
PostgreSQL |
transactions |
TransactionEntity (amount, currency, kind, status) |
PostgreSQL + audit in MongoDB |
fx |
FxRateEntity (base/quote currency, rate, observed_at) |
PostgreSQL |
compliance |
ComplianceFlagEntity (subject, reason, severity, state) |
PostgreSQL + RAG in Qdrant |
Why these specific data stores¶
- PostgreSQL — strong typing, FK constraints, money/decimal arithmetic.
- MongoDB — schema-flexible audit log; KYC document attachments.
- Qdrant — vector similarity for RAG over compliance regulations and customer T&Cs in 4 languages.
- pgvector (also added) — alternative vector store, useful for staying within Postgres in some deployments.
How modules wire in¶
The project's requirements.txt includes:
apogee-core— base classes, ApiResponse, Alembic runnerapogee-auth— RBAC + MFA + auditapogee-ai-providers— LLM unificationapogee-ai-rag— vector store + retrievalapogee-ai— agents (compliance officer, FX advisor)
Dishka (DI) wires implementations to ports; the generated container.py already registers everything.