A tiny, retro pixel-art dApp for sending and receiving USDC on the Sepolia testnet. Connect an injected wallet (MetaMask), check your balance in a floating pixel thought-balloon, and transfer test USDC to any address.
Built with React + TypeScript + Vite + viem.
The demo above is an automated end-to-end test recorded with Playwright (wallet + RPC are mocked so the flow runs headlessly).
- π Connect any injected EIP-1193 wallet (MetaMask, etc.)
- π° Live balance in a pixel thought-balloon, read straight from the USDC contract
- π€ Send USDC with recipient/amount validation and live tx status (pending β confirmed)
- π₯ Receive tab that shows your address with one-click copy-to-clipboard
- π Wrong-network guard β warns and offers a one-click switch to Sepolia
- πΉοΈ Fully pixel-art UI (
Press Start 2P, hard shadows, custom SVG coin)
npm install
npm run devThen open http://localhost:5173/ in a browser with MetaMask installed, switch it to Sepolia, and grab some test ETH (for gas) and test USDC to try a transfer.
The Playwright test in e2e/demo.spec.ts drives the whole flow with a mocked wallet and records a video:
npx playwright install chromium # first time only
npm run test:e2eThe recorded video lands in test-results/β¦/video.webm. To regenerate the README GIF (requires ffmpeg):
VID=$(find test-results -name '*.webm' | head -1)
ffmpeg -y -i "$VID" -vf "fps=13,scale=480:-1:flags=lanczos,palettegen=stats_mode=diff" /tmp/pal.png
ffmpeg -y -i "$VID" -i /tmp/pal.png -lavfi "fps=13,scale=480:-1:flags=lanczos[x];[x][1:v]paletteuse=dither=bayer:bayer_scale=3" docs/demo.gifThis is a static SPA, so any static host works. A few free options:
- GitHub Pages (set up in this repo): the workflow in
.github/workflows/deploy.ymlbuilds and deploys on every push tomain. Enable it once in Settings β Pages β Source: GitHub Actions. Live at: https://eudehh.github.io/usdc-transfer-app/ - Vercel:
npm i -g vercel && vercelβ auto-detects Vite, zero config. - Netlify: connect the repo, build command
npm run build, publish directorydist. - Cloudflare Pages: same build settings as Netlify.
| Framework | React 19 + TypeScript |
| Bundler | Vite |
| Ethereum | viem 2 |
| Network | Sepolia testnet |
| USDC (Sepolia) | 0x1c7Dβ¦7238 |
| E2E | Playwright |
β οΈ Testnet only. Never send real mainnet funds with this demo.
