Two bugs found:
1. FIX UI client was publishing orders to Kafka directly AND via FIX
protocol to OEG (which also publishes to Kafka) = duplicate orders.
Removed the direct Kafka publish from FIX UI client.
2. FIX OEG used "type": "buy"/"sell" instead of "side": "BUY"/"SELL",
inconsistent with the rest of the system.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Kafka-based stock exchange simulation with:
- Order matcher engine with SQLite persistence
- FIX protocol OEG server and UI clients
- Frontend order entry with real-time book/trades
- Trading dashboard with SSE streaming and charts
- Market data feeder, consumer, and snapshot viewer
- Docker Compose orchestration for all services
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>