Home
All cases
— Crypto wallet · Self-initiated · 2026

Less noise.
More signal.

A multi‑chain wallet stripped to its essentials. 30 screens, one interactive prototype, six motion patterns — every state designed, every transition timed.

9:41

Receive

Ethereum
0xC4F2 5b8a 9132 7e16 84ad ec88 0fac 9f81 d8A1
9:41

Asset

Bitcoin
BTC · 0.6427 owned
$42,891.40
+$967 · 2.31%
Market cap
$842.1B
24h volume
$24.7B
All-time high
$73,750
Circulating
19.6M
9:41

Sent.

Confirmed in 14s · 0xfa2…b81d

Amount0.25 ETH
Tovitalik.eth
Total$846.42
9:41

Swap

You payBal: 4.215 ETH
2.500
ETH
≈ $8,432.10
You receiveBal: 1,205 USDC
8,395.27
USDC
≈ $8,395.27
Rate1 ETH = 3,358.11
Slippage0.5%
Fee~$3.21
ETHUniswap V3USDC
9:41

Earn

Total earned · all-time
$342.18
+$0.0084 / sec · live

Featured pools

All →
USDC Lending
Aave V3
8.2%APY
$1.8BTVL

Your positions

2 active
ETH Staking
1.20 ETH · $4,047
4.5%
+0.018 ETH
USDC Lending
2,500 USDC
8.2%
+$23.45
9:41
0xluna.eth0xC4F2…D8A1
Total balance · USD
$87,432.91
+$1,247.32 · 1.45%
Apr 24, 14:32$86,201.40
Send
Receive
Swap
Buy

My Assets

View all →
Bitcoin
0.6427 BTC
$42,891
+2.31%
Ethereum
9.521 ETH
$32,104
+4.12%
Solana
42.18 SOL
$8,234
−1.20%
30screens 10interactive 6motion patterns 1acid accent 0decoration
Role
UI / UX · Concept
Scope
30 screens · 10 interactive
Stack
HTML · CSS · JS
Year
2026
— 01 / Approach

Money is serious.
Reduce noise to amplify trust.

A thesis. The principles it produced. What didn't make the cut.

— problem

Crypto wallets compete on color.

Gradients, mascots, gamified badges. The user doesn't want spectacle — they want two things: how much do I have, and is it safe.

— thesis

The number is the product.

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.

— principles

Three rules, no exceptions.

  1. One accent per screen — active or positive or focused, never all three at once
  2. Tabular numerals on every balance — when crypto ticks, layout doesn't
  3. Elevation through opacity, not shadows or borders — surfaces breathe, not stack
— rejected

What didn't make it.

  • Multi-stop holographic gradients
  • Mascot illustrations and 3D coin renders
  • Gamified achievement badges
  • Multi-color category coding for assets
  • Pull-to-refresh haptic theatre
— 02 / Process

From research
to a shipped artifact.

Seven hours, five phases. Research, flows, wireframes, hi-fi, prototype — in that order.

— hour 0–1 Research + brief Audit of public pain. App Store reviews of 4 wallets. Reddit threads on lost-on-onboarding. Self-set brief: simplest path from $0 to first transaction. // 4 wallets · 90 reviews
— hour 1–2 UX flows Map four user journeys: onboard, send, swap, earn. Branch every fork (success, error, empty, loading). One arrow = one user decision. // 4 flows · 30 nodes
— hour 2–3 Wireframes Greyscale low-fi. No type, no icons, no real numbers. Just hierarchy and information density. If it works in dashed boxes — it works. // 30 frames · 0 colors
— hour 3–5 Hi-fi screens Apply tokens (1 accent, 2 semantic, 5 neutral). Type system (3 families). All states designed in one pass — empty, loading, error, success. // 30 screens · 4 states each
— hour 5–7 Prototype + motion Wire 11 screens click-by-click. Specify 6 motion patterns (counter, pulse, skeleton, success, sheet, page). Ship single HTML artifact. // 11 wired · 6 motion

Send flow · UX map

// happy path · 5 nodes · 4 user decisions
— start
Tap Send
on portfolio
— 01
Pick recipient
contact / paste / QR
— 02
Enter amount
numpad + chips
— 03
Review
amount · fee · total
— end
Success
hash · receipt

Low-fi wireframes

// 04 frames · pre-color · pre-type
$ balance
— chart —
send
recv
swap
buy
asset · row
asset · row
Portfolio
// 01 · home
send to
paste address / search
paste
scan
contacts
contact · row
contact · row
contact · row
continue →
Send · recipient
// 02 · pick
amount
recipient
$ — — —
25%
50%
max
numpad area
continue →
Send · amount
// 03 · enter
sent
tx · 0xfa…b81d
summary · 3 rows
view
done
Send · success
// 04 · confirm

The shape comes first. If it works in dashed boxes, it works. Hi-fi in the prototype below ↓

— 02 / Prototype

Click anywhere.

Ten screens, fully wired. Tap the balance, swap a token, send to a contact. The same single accent guides every action.

Jump to:
9:41
0xluna.eth 0xC4F2…D8A1
Total balance · USD
$87,432.91
+$1,247.32 · 1.45%
Apr 24, 14:32$86,201.40
Send
Receive
Swap
Buy

My Assets

View all →
Bitcoin
0.6427 BTC
$42,891
+2.31%
Ethereum
9.521 ETH
$32,104
+4.12%
Solana
42.18 SOL
$8,234
−1.20%
9:41

Asset

Bitcoin
BTC · 0.6427 owned
$42,891.40
+$967 · 2.31%
Market cap
$842.1B
24h volume
$24.7B
All-time high
$73,750
Circulating
19.6M
9:41

Send to

PASTE

Recent

All →
V
vitalik.eth
0xd8dA…6045
M
mira.eth
0x71C7…3a92
K
Cold Wallet
0xA0Ee…8C7e
N
naya.eth
0x4d9b…F23a
9:41

Amount

V
vitalik.eth
0xd8dA…6045
EDIT
0.25
ETH
$843.21 USD · 4.215 ETH balance
9:41

Review

You're sending
0.25 ETH
≈ $843.21
From0xluna.eth0xC4F2…D8A1
Tovitalik.eth0xd8dA…6045
NetworkEthereum
Network fee~$3.210.00084 ETH
Total$846.42
9:41

Sent.

Confirmed in 14s · 0xfa2…b81d

Amount0.25 ETH
Tovitalik.eth
Total$846.42
9:41

Receive

Ethereum
0xC4F2 5b8a 9132 7e16 84ad ec88 0fac 9f81 d8A1
9:41

Swap

You payBalance: 4.215 ETHMAX
ETH
≈ $8,432.10
You receiveBalance: 1,205 USDC
USDC
≈ $8,395.27 · $36.83 fee
Rate1 ETH = 3,358.11 USDC
Slippage tolerance0.5%
Network fee~$3.21
Price impact0.04%
ETHUniswap V3USDC
9:41

Swap

You payBalance: 4.215 ETH
2.500
ETH
You receive
8,395.27
USDC
9:41

Swapped.

Confirmed in 11s · Uniswap V3

From2.500 ETH
To8,395.27 USDC
Rate3,358.11
9:41

Earn

Total earned · all‑time
$342.18
+$0.0084 / sec · live

Featured pools

All →
USDC Lending
Aave V3
8.2%APY
$1.8BTVL
SOL Liquid
Marinade
7.1%APY

Your positions

2 active
ETH Staking
1.20 ETH · $4,047.32
4.5%
+0.018 ETH
USDC Lending
2,500.00 USDC
8.2%
+$23.45

Portfolio · home

The default landing. Balance is hero, the chart is glanceable, four primary actions are always one tap away.

— 04 / Motion

Six patterns, one rhythm.

Every motion has a function: confirm, locate, connect, predict. Durations 200–320ms, easing cubic-bezier(0.4, 0, 0.2, 1).

$87,432.00
// 01 · Counter

Tabular ticker

Tabular numerals + 80ms updates. Numbers shift, the layout doesn't. Used on every balance and yield surface.

// 02 · Pulse

Live indicator

Two staggered rings, 2s loop. Marks anything that updates in real time — balance, yield, gas.

// 03 · Skeleton

Loading shimmer

1.6s gradient sweep over surface‑1. Reserves space, keeps the layout calm while data lands.

// 04 · Success

Drawn checkmark

Ring draws first (700ms), check follows (400ms, 0.6s delay). Earned, not given.

// 05 · Bottom sheet

Modal slide-up

320ms cubic-bezier(0.4, 0, 0.2, 1) — the iOS curve. Token select, network pick, settings — all use this.

// 06 · Page transition

Fade + slide

Outgoing screen translates 8px left at 0% opacity, incoming reverses. 320ms. Used between every flow step.

— 05 / System

The system, made strict.

One accent. Two functional colors. Six neutrals. Three families. Build one screen — get a hundred consistent.

// Colour tokens1 + 2 + 5
BG#0A0A0B
Surface 104% white
Surface 207% white
Border16% white
Text#FFFFFF
Accent#C6FF00
Success#5BD68A
Danger#F2566B
// Typography3 FAMILIES
Display · Space Grotesk 500 · −0.03em
$87,432.91
Heading · Space Grotesk 600
Less noise. More signal.
Body · Inter 400 · 14/22
Glanceable, always tabular, never decorative — designed to be read in 0.4 seconds while waiting for an Uber.
Mono · JetBrains Mono · ticker
+$0.0084 / sec · LIVE
// Buttons4 VARIANTS
Primary · Accent
Secondary · Surface
Outline · Mono
Ghost · Dashed
// Surfaces3 ELEVATION
Base cardbg · neutral
Glass cardblur(20) · 7% white
Accent panelfeatured · attention
Need a similar build for your team?
Book a Free 20-min AI Audit Call