Frontend engineering

Interfaces get hard when the state behind them is hard: a balance that is already stale, an auction closing while you type, a live wallet session inside a virtual world.

I build them in React, Next.js, TypeScript, TanStack Query, and Tailwind, and most of the design work is deciding what the screen has to show about that state, and when.

Trading and auction interfaces

At Opyn the Next.js trading interface uses React Server Components over Ponder-indexed options data so Arbitrum behavior stays visible. At Bitlauncher the Gnosis auction bidding interface uses wagmi balance subscriptions and Supabase realtime updates.

Immersive and interactive products

At ZTX the React application hosted the virtual world, and the wallet session lived inside the WebGL surface instead of in separate app chrome. At AMC the YEAH! interactive player ran trivia, interviews, and quizzes inside the film itself. Curated titles carried more than 400 interactive elements each.

Data-dense interfaces

Block producer scores only help if you can compare them. For EOS Rate I built a radial comparison interface on GraphQL and onchain ratings that keeps those scores in one view.

Writing about frontend systems

See the work

Explore the project portfolio for implementation details, systems, and technology.