Hamza Yerrou
Hamza Yerrou
Software Engineer
Index/Work/ChainsAtlas
Case study · Web3 + AI

ChainsAtlas

5+ Web3 & AI-focused apps for blockchain and crypto use cases:smart-contract interactions, multi-chain wallet connections, and real-time AI chat interfaces.

Role
Lead Front-end
Type
Freelance
Timeline
Feb 2025 → now
Stack
MERN + Web3
AIETHSOLBSCARB

Context

ChainsAtlas is a French company building infrastructure for blockchain & crypto use cases. I joined as a freelance front-end lead in February 2025, working on multiple simultaneous product tracks targeting both developers and end-users.

The core challenge: fast product iteration with a small team across multiple chains (ETH, SOL, BSC, ARB) while maintaining a consistent UI across all apps.

The challenge

Web3 UX has a reputation for being hostile. Wallet connection flows break on mobile, transaction errors return opaque hex codes, and “connect wallet” buttons often mask async complexity that leaves users stranded mid-flow.

Additionally, the team wanted AI features:real-time chat interfaces, prompt pipelines, streaming responses:layered on top of on-chain data. That required a reliable Node/Express layer to proxy LLM calls and store conversation history.

What I built

Over the engagement I shipped five discrete products:

  • Multi-chain dashboard:read/write to ETH, SOL, BSC, ARB. Wallet connections via MetaMask & WalletConnect, real-time balance polling, transaction history with filters.
  • AI chat interface:streaming responses via OpenAI, Express.js proxy, MongoDB for session storage, typing indicators, retry-on-error, graceful streaming failure states.
  • Token swap UI:multi-step form with on-chain confirmation tracking, pending/confirmed/failed states, estimated gas display.
  • Portfolio tracker:multi-wallet aggregation, chart visualizations (Recharts), real-time price feeds via WebSocket.
  • Admin dashboard:role-based access, user management, on-chain analytics, CSV exports.

Stack & approach

React + Next.js for all front-ends, styled with Tailwind + custom CSS variables for consistent theming. Express.js for the AI proxy layer. MongoDB for user data and chat history. web3.js for on-chain interactions.

I kept wallet connection logic in a single custom hook (useWallet) that normalized MetaMask and WalletConnect APIs so the rest of the UI was chain-agnostic. All async transactions rendered through a state machine (idle → pending → confirmed → failed) to eliminate ambiguous UI states.

Outcomes

5+ production apps shipped across the engagement. The AI chat interface processes thousands of messages per month with <200ms perceived latency via streaming. The wallet abstraction layer reduced new-feature development time by roughly 60%:new chain integrations now take hours, not days.

← Back to work
All projects
Start something similar →
Get in touch