A multi‑chain wallet stripped to its essentials. 30 screens, one interactive prototype, six motion patterns — every state designed, every transition timed.
Confirmed in 14s · 0xfa2…b81d
A thesis. The principles it produced. What didn't make the cut.
Gradients, mascots, gamified badges. The user doesn't want spectacle — they want two things: how much do I have, and is it safe.
Strip everything that isn't the number. Black, white, one acid accent. Tabular numerals everywhere so the layout never shifts. Glanceable in 0.4 seconds — the time it takes to check a balance while waiting for an Uber.
Seven hours, five phases. Research, flows, wireframes, hi-fi, prototype — in that order.
The shape comes first. If it works in dashed boxes, it works. Hi-fi in the prototype below ↓
Ten screens, fully wired. Tap the balance, swap a token, send to a contact. The same single accent guides every action.
Confirmed in 14s · 0xfa2…b81d
Confirmed in 11s · Uniswap V3
The default landing. Balance is hero, the chart is glanceable, four primary actions are always one tap away.
Onboarding, edge states, modals, markets — the seams between flows, not just the headlines.
A multi‑chain wallet for the people who count cents and screenshots.
Write it down. Store it offline. Never share with anyone — not even support.
Anyone with this phrase has full access to your wallet.
Word #3, #7 and #11 — let's make sure you wrote them down.
6 digits to unlock LUSH
Buy crypto, deposit from another wallet, or receive a transfer to get started.
Insufficient gas · 0xfa2…b81d
Insufficient ETH. You need 5.285 more ETH to complete this swap. Reduce the amount or buy ETH.
0xfa2…b81d · ~14s left
Earning $0.51 / day · live
Each network has its own address. Sending USDC on the wrong chain will lose your funds.
Every motion has a function: confirm, locate, connect, predict. Durations 200–320ms, easing cubic-bezier(0.4, 0, 0.2, 1).
Tabular numerals + 80ms updates. Numbers shift, the layout doesn't. Used on every balance and yield surface.
Two staggered rings, 2s loop. Marks anything that updates in real time — balance, yield, gas.
1.6s gradient sweep over surface‑1. Reserves space, keeps the layout calm while data lands.
Ring draws first (700ms), check follows (400ms, 0.6s delay). Earned, not given.
320ms cubic-bezier(0.4, 0, 0.2, 1) — the iOS curve. Token select, network pick, settings — all use this.
Outgoing screen translates 8px left at 0% opacity, incoming reverses. 320ms. Used between every flow step.
One accent. Two functional colors. Six neutrals. Three families. Build one screen — get a hundred consistent.