Skip to content

Case study

Shipping Web3 products where a wrong click can cost real money

CTRL (formerly XDEFI) logoUnizen logoOneArt logoOneArtHookRank logo

Role: Senior Frontend Engineer (multiple contracts)

Context

Four production Web3 products, delivered as independent contract engagements: CTRL (formerly XDEFI), a multichain wallet platform; Unizen, a cross-chain DEX aggregator; OneArt, a wallet extension with marketplace features; and HookRank, a Uniswap v4 hook analytics platform built via IdeaSoft.

The problem

In Web3, the frontend is the custody interface. A misleading transaction state, a stale balance, or a broken signing flow doesn’t create a support ticket — it loses someone’s assets, irreversibly. These products had to work across multiple EVM chains with different behavior, inside browser-extension sandboxes, against protocols and contracts that changed underneath them.

Constraints

  • Irreversible transactions: there is no undo, refund, or password reset
  • Multiple EVM chains (Ethereum, Polygon, Optimism) with different gas and confirmation behavior
  • Browser-extension sandboxes and the trust boundary around signing flows
  • Fast-moving protocols, immature tooling, and contracts evolving mid-build

My role

I delivered independently across all four products: wallet-extension surfaces and NFT product flows (CTRL), multi-chain wallet connectivity and swap UX (Unizen), transaction flows and real-time balances (OneArt), and subgraph-backed analytics with on-chain metadata exploration (HookRank).

Approach

Treat every transaction as a state machine, not a button

Pending, confirming, failed, and replaced states were designed explicitly, so users always knew what had happened to their money — the difference between a trustworthy wallet and a terrifying one.

Respect the extension trust boundary

Wallet UI lives inside a browser-extension sandbox where page, provider, and extension contexts must not leak into each other. Signing flows and asset handling were built around that boundary rather than around convenience.

Read the chain through the right layer

Real-time balances, NFT metadata, and analytics came through providers and subgraphs with staleness handled deliberately — a Web3 UI that shows outdated on-chain state is worse than one that admits it is loading.

Result

  • A multichain wallet browser extension and NFT product flows shipped across EVM chains (CTRL).
  • Cross-chain swap UX shipped for decentralized trading (Unizen).
  • Wallet transaction flows and real-time balance features shipped (OneArt).
  • Uniswap v4 hook analytics with subgraph-backed filtering shipped (HookRank).
  • The same extension, security-boundary, and real-time data skills now applied to AI product and platform-integration work.

Public evidence

Technologies

TypeScript · React · Next.js · ethers.js & web3.js · Browser extensions · The Graph (subgraphs) · EVM chains (Ethereum, Polygon, Optimism)

Related services

Facing something similar?

Describe your situation and I’ll tell you honestly whether my experience maps to it — and what the smallest useful next step would be.