This is the project where I got most interested in correctness. A trade isn't just a button click. It becomes cash movement, position state, P&L, and a dashboard someone has to trust. I wanted to build the whole thing end to end and see what breaks.
Why it exists
I wanted to understand how to keep financial state consistent when every action has downstream effects: orders, fills, cash, positions, and risk all have to agree.
What I built
I built services for order intake, market data replay, ledgering, fill settlement, risk recalculation, and admin controls. The core path is simple: order API → event stream → ledger → risk → dashboard.
Spring Boot services talk through Redpanda/Kafka. Redis handles live quotes at a 98% cache hit rate. PostgreSQL stores ticks, positions, and P&L snapshots. SSE pushes live state to the React dashboard.
What I paid attention to
The dashboard shows what the system believes at every step: order status, positions, cash, risk changes, and replay behavior. Nothing is hidden.
Idempotency keys, transactional settlement, JWT/RBAC, Prometheus/Grafana metrics, ELK logs, OpenTelemetry traces, and 157 automated tests. When money is involved, small errors compound fast.
A few specifics
- Built order entry, live quotes, portfolio accounting, risk dashboards, and replay controls across 6 services.
- Made order and cash APIs idempotent with Idempotency-Key, PostgreSQL constraints, JWT/RBAC, and user-scoped access.
- Built transactional settlement with BigDecimal pricing, cash/position updates, weighted-average cost, ledgering, and P&L snapshots.