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.
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.
