Skip to content

Architecture

Technical architecture decisions, patterns, and system design for the Banking Challenges project.

Overview

Key Decisions

ADRDecisionStatus
ADR-001Monorepo with Turborepo✅ Accepted
ADR-002GraphQL + Relay for Ledger✅ Accepted
ADR-003ISO 20022 for SPI✅ Accepted
ADR-004MongoDB for Financial Data✅ Accepted
ADR-005Go for SPI and DICT✅ Accepted

Challenge Mapping

#ChallengeStackDatabase
01Ledger GraphQLKoa + GraphQLMongoDB
02SPI SimulatorGo (Gin) + ISO 20022In-memory
03DICT SimulatorGo (Gin) + RESTIn-memory
04ISO 8583TCP Server + GoPostgreSQL
05Workflow EngineFastify + DAGRedis
06Open FinanceFastify + FAPIPostgreSQL
07NFS-eFastify + SOAPPostgreSQL
08Report SystemFastify + StreamingPostgreSQL
09Leaky BucketFastify + LuaRedis
10Landing PageNext.js 14-
11KYC SystemVite + ReactPostgreSQL
12Proxmox + IaCTerraform + Ansible-
13CI/CDGitHub Actions-
14RFC / ADRMarkdown-
15PISPOpen Finance + FAPIPostgreSQL
16AnticipationPricing EnginePostgreSQL

Tech Stack

LayerTechnology
BackendTypeScript (Fastify, Koa) + Go (Gin)
DatabaseMongoDB 7, PostgreSQL 16, Redis 7
FrontendNext.js 14, Vite + React
StorageMinIO (S3-compatible)
DocsVitePress
InfraDocker Compose, Turborepo, Vercel
CI/CDGitHub Actions / GitLab CI
IaCTerraform, Ansible, Proxmox

Security

LayerTechnology
TransportTLS 1.3, mTLS
AuthJWT, OAuth 2.0, FAPI
CryptoAES-256, RSA, 3DES
Rate LimitingLeaky Bucket (Redis + Lua)
AuditImmutable logs, 5+ years