SOTI
Capital marketsNasdaq (freelance, part-time) · 2020 – 2024
An internal web console for querying, reconstructing, and inspecting order and trade activity across six Nasdaq options and Nordic derivatives markets, with role-gated order-cancellation workflows for exchange operations staff.
I built front-end tooling that exchange operations staff rely on to investigate trading activity.
Context
SOTI is an internal Nasdaq web console, that market-operations, surveillance, and support staff use to investigate trading activity. It sits on top of the exchange’s order-and-trade query backend. A user builds a structured query (market, protocol, symbol, firm, time range, event type), submits it, and gets a virtualized summary table of matching orders and executions. From there they drill into an order-detail view that reconstructs the full lifecycle of an order: matches, routes, best-bid-and-offer context, block trades, and contra-side detail, with CSV export on top. Authorized operators can also cancel orders, including mass cancellation, gated by role.
This is a proprietary exchange-operations tool, so I can describe it here but not show it; screenshots and live data stay out. It was a front-end engagement: a single-page app consuming Nasdaq’s internal design system and a versioned query backend, covering six markets across US and Nordic time zones, each with its own query forms, column sets, event types, and access roles.
My role
Lead frontend engineer on the console; I architected the solution. The defining constraint was data volume: queries against the exchange’s order-and-trade store return very large result sets, and operations staff page, sort, and drill through them all day, so a large part of my work went into making that fast and efficient in the browser. I worked on the UI repository only; the query backend is a separate system.
Highlights
- Built for big data in the UI. Result sets are far too large to render naively, so the grids are virtualized (TanStack Table + Virtual) and only draw what’s on screen, keeping scrolling and sorting responsive regardless of result size, with a column manager and per-user persisted table preferences on top.
- A hardened async request layer in service of the same goal: paged data arrives quickly and never corrupts the view, with AbortController-based cancellation of superseded queries, single-in-flight paging requests, and typed custom errors.
- Config-driven multi-market UI. A single view configuration plus per-market column and form definitions let one codebase render six markets’ query forms, result columns, and event types without branching logic spread through the code.
- RBAC end to end. Keycloak SSO with per-market read roles, plus separately gated operational roles for normal cancel, mass cancel, and admin functions.
- Enterprise front-end plumbing. Grafana Faro real-user monitoring and tracing, structured remote logging, i18n, a CSV download center with progress polling, and integration with Nasdaq’s internal component library.