Frontend contractor · Jul 2023 – Aug 2026

Carbon

Thirty-seven months on the browser frontend of a decentralized perpetual-futures exchange. Multi-chain, wallet-native, real settlement. I worked on the team and owned several subsystems outright.

Next.js 15 · React 19 · TypeScript · Redux Toolkit · TanStack Query · wagmi/viem · ethers · styled-components · chart.js / ECharts / lightweight-charts · Jest

Carbon trading terminal — BTC perpetual with chart, depth, and order form
Carbon — Trading terminalCaptured 08.2026

01 — What I owned

01

Liquidity-provider vault

Built from an empty directory to a live money path in about eight weeks — the page, the mobile layout, the backend integration, then the on-chain deposit and withdrawal flows. The withdrawal is authorized with a typed-data signature and only reports success once the receipt confirms, because a submitted-but-unmined request showing success is a worse outcome than a slower modal.

Carbon Liquidity Provider vault — TVL, performance chart, deposit panel, and positions table
Carbon — Liquidity provider vaultCaptured 08.2026
02

Wallet onboarding and signing

Consolidated a scattered sequence of signature prompts into one surface that enumerates what the active trading mode actually requires, shows per-item status, and can run the sequence unattended. An independent audit of that work found concurrency defects, including one I had introduced; the fix replaced a shared depth counter with per-operation tokens so a hung wallet prompt can no longer clear a different signature's guard when it settles late. Both are covered by interleaving tests.

Carbon signature management — required and optional signatures enumerated with per-item status
Carbon — Signature managementCaptured 08.2026
03

Analytics and charting

Built the platform analytics suite — open interest, flows, volume, revenue, staking distribution, funding rates — as stacked bars, cumulative lines, and depth charts, then rewrote the axis-domain math. The new algorithm picks the smallest one-two-five step whose multiples cover the padded range inside a fixed tick budget. Measured against the live series, plot-height utilization went from 32% to 85%. The same change fixed a timezone defect that rendered UTC-stamped points under the previous local date.

04

Rewards, referrals, and team competition

The subsystem closest to sole authorship: 82% of commits on the team-competition state layer, 74–81% across the rewards surfaces, and the pages that sit on top of them. Built the competition feature end to end, then rebuilt the rewards page around a points gauge, a fee-rebate tier matrix, and season handling.

02 — Also

61 icon components and 53 modal components where I'm the only author. The landing page and a tokenomics page at 100%. Three years of responsive passes. The app's first test around standalone-mode detection, written alongside the install prompt in 2023.

Multi-endpoint RPC failover with per-call timeouts replacing a single configured endpoint, error classification by structure rather than by matching message strings, and a fix stopping gas estimation from overriding the nonce and fee fields the wallet owns. One of those was a one-line change; finding it was the work.

03 — Before that

GoSpaceSoftware developer · Feb 2021 – Apr 2023

A connected-workplace platform that matches distributed teams to physical office space and reports the cost and carbon footprint of the result. I worked across the web app and the React Native client: interactive floor plans rendered in Three.js, scheduling and booking flows, and the Microsoft Teams integration the product shipped inside.

React · React Native · TypeScript · Three.js · styled-components · Material UI · NestJS

RatherFrontend developer · 2020 – 2021

A social platform for film and television — scoring, lists, following, recommendations. My first production frontend role and where the React and TypeScript foundation came from.

React · NestJS · Tailwind