A real-time trading interface for on-chain trading, built for split-second decisions.

GM Markets is a decentralized trading platform. I built the core trading interface — order forms, position management, and live charting — the surface traders live in all day.
Traders needed sub-300ms feedback on price moves and order state, while the app pulled from multiple on-chain and off-chain sources without janky re-renders or stale data undermining trust.
I built a websocket-driven state layer with a normalized order-book cache, kept separate from UI state, with React Query as a REST fallback. Position tables were virtualized for large books, and order placement used optimistic UI reconciled against on-chain confirmations — the key tradeoff being speed of feedback versus certainty in a financial context.




Websocket state deserves its own store, separate from UI state — mixing them is where most trading-UI bugs came from. And in financial products, optimistic UI has to be reconciled loudly, not silently.