An ENS-powered dashboard showing real-time, cross-chain DeFi portfolios and one-click swaps
EnSolv is an ENS-powered, cross-chain DeFi command-center that turns any human-readable name (e.g. “vitalik.eth”) into a live, interactive dashboard of that wallet’s entire on-chain footprint and lets the owner rebalance it with one-click swaps.
What problems does it solve? Fragmented portfolios – holdings spread across multiple chains, LPs and tokens are hard to track in one place.
Confusing UX – copying hex addresses and juggling different explorers deters mainstream users.
Slow manual rebalancing – moving value between chains still requires several dApps and bridges.
How EnSolv fixes this ENS identity layer – type an ENS name or connect a wallet; we resolve to the address instantly with ethers.js (ENS registry) and Viem fallback.
Multi-chain aggregation – a Node/Express backend queries The Graph subgraphs on Polygon & Rootstock (extensible to 10+ EVM chains) plus direct RPCs, normalises balances and positions, and enriches them with real-time USD prices from Pyth Network.
Real-time analytics – the React/TypeScript frontend (Vite + Tailwind + Framer Motion) renders:
Total net worth, per-chain breakdown, token table
Recharts pie & bar charts for visual allocation
Live price ticks and 5 min auto-refresh
Cross-chain swaps – the Swap modal uses Katana Network SDK to fetch quotes and execute Polygon↔️Rootstock trades in one transaction, signed with MetaMask/wagmi.
Performance & UX – node-cache keeps portfolio data for 5 min, shrinking cold load to <1 s on repeat views; toast notifications surface errors; dark-mode neon UI evokes a modern Web3 feel.
Open & composable – fully open-source, REST/GraphQL ready, easy to embed in any wallet or DAO tool.
Sponsor tech used
ENS (identity), Polygon (L2 data), Pyth (oracle prices), Katana (cross-chain swaps).
Future roadmap includes Solana support, agentic auto-rebalancing, historical performance charts and zk-proof privacy mode.
In short, EnSolv turns a simple ENS name into a real-time Bloomberg Terminal for DeFi where you see everything you own everywhere and rebalance it instantly.
Stack overview Frontend – React + Vite in TypeScript, Tailwind CSS for styling, Framer-Motion for micro-animations, Recharts for charts, react-hot-toast for UX feedback.
ENS layer – ethers.js (L2 aware) with an ENS.js fallback; we cycle through three RPC providers (Alchemy, QuickNode, Cloudflare) until one responds.
State & wallet – wagmi for MetaMask / WalletConnect; global stores with Zustand.
Backend – Node 18 + Express monorepo (pnpm); portfolio aggregation service calling
– The Graph subgraphs on Polygon & Rootstock (Uniswap-V3 clone, Sushiswap)
– direct JSON-RPC for native balances
– Pyth Network REST for live USD prices.
Calls are fired in parallel with Promise.allSettled() and cached with node-cache (5 min TTL).
Swap engine – @sky-mavis/katana-swap SDK; we fetch a quote, then surface the calldata to the connected wallet for a single-tx Polygon↔︎Rootstock swap. If a quote fails we fall back to a mocked preview so the demo never breaks.
CI/CD – GitHub Actions → Vercel preview URLs on every push; eslint --max-warnings 0 gate.
Tests – Jest + Supertest for API, React-Testing-Library for ENS flow (only the “happy path” due to time).
Why partner tech mattered ENS Turned scary 0x… into “vitalik.eth”; instant onboarding and ENS prize eligibility. Polygon Fast, cheap chain used for most demo wallets; subgraph querying is <300 ms. Pyth On-chain oracle gave millisecond price feeds with no API keys; saved us hours. Katana One SDK, out-of-the-box bridge+DEX routing; let us ship cross-chain swaps in <2 hrs.
Hack-y but fun bits RPC rotator: a 15-line util that shuffles three endpoints per chain and retries with exponential back-off—kept us alive when free Alchemy credits ran out.
Lazy graph hydration: charts render skeletons first, then stream in data as each chain resolves; perceived load time ≈ 1 s even when Rootstock is slow.
Fake-it-till-you-make-it swaps: if Katana can’t quote a pair, we generate a deterministic “demo” quote so judges always see a flow. The SDK automatically switches to the real route once liquidity appears.
Single file subgraph query: we compile multiple GraphQL operations into one network round-trip using #import directives—50% fewer calls.
How the pieces talk User types vitalik.eth → ENS resolver returns 0xd8...45.
Frontend hits /portfolio?address=; backend fires parallel subgraph/RPC/price calls.
Cached, normalised JSON is sent back → charts animate in.
User opens SwapModal; Katana SDK gives quote → MetaMask signs → toast confirms.
48 hours later we have an open-source “Bloomberg Terminal for DeFi” built entirely on partner infra being ready for judges and real users alike.

