Java and Spring Boot service that reconstructs FX order timelines from component events and surfaces duplicates, invalid transitions, stuck orders, and downstream rejections.
The goal is to show a realistic graduate-level engineering problem in FX technology: understanding how an order moved through multiple components and why it failed or stalled. The repo focuses on diagnostics and root-cause thinking, not on pretending to be a full execution platform.
- Java 17 and Spring Boot service design
- event-driven diagnostics for trading flows
- lifecycle validation
- incident classification
- summary and timeline APIs
- automated tests and CI
GET /actuator/healthGET /api/v1/healthPOST /api/v1/eventsPOST /api/v1/demo/load-samplePOST /api/v1/incidents/analyzeGET /api/v1/ordersGET /api/v1/orders/{clientOrderId}/timelineGET /api/v1/incidentsGET /api/v1/summary
Example event request:
{
"clientOrderId": "FX-9001",
"currencyPair": "EURUSD",
"component": "gateway",
"eventType": "RECEIVED",
"eventTime": "2026-04-25T10:00:00Z",
"detail": "client order accepted"
}Sample summary: docs/sample_summary.json
./gradlew bootRunRun tests:
./gradlew testMore detail:
- Built a Java and Spring Boot diagnostics service that reconstructs FX order timelines from component events and highlights duplicate orders, invalid transitions, stuck orders, and downstream rejections.
- Implemented incident analysis APIs, per-order timeline inspection, automated tests, and sample event flows to model root-cause investigation in a distributed trading stack.