My first time on a trading platform, and the first time my code sat somewhere real money moves, which made me a lot more careful than I'd been anywhere else. The front end was split into a bunch of small apps that all release on their own, so a change that looked like one line in one repo usually meant getting teams I'd never met to ship in the right order. Those were the tickets nobody really owned, and I kept picking them up anyway. The habit I took away from this one is writing the analysis before the code. I'd spend a day on a doc explaining what was actually broken, and the fix almost always came out smaller than if I had just started typing. The tickets I liked best ended with less code than they started with. I also did a lot of accessibility work alongside the team that files those defects, which changed how I build anything now. Six months and 60+ tickets later, I'm still surprised by how much of the job was talking to people.
Highlights
Single Source of Truth
Fund lookups were identifying securities by guessing from the shape of the ticker symbol, so most third-party funds resolved to the wrong view entirely. I replaced the heuristic with the API's authoritative response, collapsed two round trips into one, and retired both hand-built modals in favour of the shared component that already resolves layout per security type
equity · ETF · fund
every analytics event preserved · rollback path intact
Accessibility Remediation
Eleven accessibility defects across the platform's micro-frontends and shared component library, four of them serious. I fixed focus outlines you couldn't see, focus that jumped to the wrong place, and controls screen readers skipped right over. The ones that could quietly break again got regression tests
Volatility Banner
Shipped a real-time market volatility feed into an order-entry micro-frontend, deriving high-volatility state from the response store and building session-scoped dismissal that auto-clears when the host app opts in via config
Platform Modernization
Championed team-wide engineering improvements by leading a Cypress-to-Playwright E2E migration, driving an Angular 20 framework upgrade, and standardizing AI-agent onboarding across 10+ repositories