Design dossier · ETHGlobal Lisbon 2026 · v2 shipped

Doca

Keep your wallet. Put it to work anyway.

Live build: github.com/ottodevs/doca · design v2 in web/src · this document is the creative rationale behind every screen.

The narrative in three sentences

Aqua solved custody: you promise liquidity, you never deposit it. But promises can exceed your wallet by design, and the whitepaper's own fix is a human docking positions by hand. Doca turns that chore into a product: every strategy carries a budget sized to what the wallet really holds, and the Harbormaster watches for drift and re-ships before underfunding turns into failed quotes.

"While Aqua doesn't automatically pause illiquid positions, Makers are strongly recommended to manually dock strategies that become chronically underfunded…"

Aqua whitepaper 1.0, §3: the gap the product lives in

The name is the design system

Doca is Portuguese for the dock: where a ship is held while it loads, and where the load line painted on its hull tells you when it has taken on more than it can carry. Every visual element derives from that one metaphor, and every metaphor maps to a protocol primitive; nothing is decorative:

On screenMeansProtocol reality
Vessel cardOne market-making strategyAn Aqua-backed SwapVM order
Rising waterBudget being consumedVirtual balance drain vs. budget
Dashed load lineThe auto-dock thresholdWaterline fraction in InventorySkewProvider
SAFE / TIGHT / DOCKING chipsStrategy state at a glanceRemaining-budget bands
Surcharge badgeThe price defending itselfDynamic fee, opcode 30, quadratic past the kink
HarbormasterThe autopilot personaAgent calling dock + ship
Storm vignetteIntervention under wayRebalance transaction in flight

The user journey: five steps, one sentence each

The journey is not documentation of the UI; it is the UI: a rail across the top advances as the user acts.

FEELS: recognition

Wallet: "this is me"

Big idle balances, and one attributed fact: 1inch-commissioned Dune research: 85% of tracked concentrated liquidity underutilized, $1.6B of $1.84B analyzed, mostly individually managed positions. Adjacent evidence, not a measurement of this wallet, but the user recognizes the pattern.

on-chain: nothing yet. Reading balances.
FEELS: bounded exposure

Put to work: "no upfront deposit"

Three presets (Careful / Balanced / Busy), each a single human decision: how many places one balance works at once. Copy insists: you are signing price rules, not a deposit.

on-chain: ship ×N through the canonical Aqua registry + budgets set on the skew provider.
FEELS: watching it work

Live market: water rises

Real fills drain real WETH. Water climbs the hulls, surcharge badges wake up on the drained side only. The user sees directional defense without reading a word.

on-chain: taker swaps through the official router; every fill a real ERC20 transfer.
FEELS: protected

Protected: the punch

A strategy crosses its load line. Storm vignette, then the green event strip: docked → re-shipped against the wallet's current balance. The invariant tile never leaves green.

on-chain: dock + ship signed by the demo signer (a connected wallet would prompt you to sign); budgets recomputed net of the other strategies.
FEELS: free to leave

Walk away: the receipt

One click docks everything. The close is a receipt, not a banner: markets served, fills settled, protections, and the number that defines the product: 0 deposits, 0 positions to unwind.

on-chain: dock ×N. The wallet was liquid the whole time.

The punch line we designed everything around

Wallet balance changed. Your strategy detected the change and prepared a safe reallocation.

The demo has one remembered moment, and it is autonomous: the Harbormaster acts on camera, unprompted, and the UI makes the causality legible in one strip: crossed the line → docked → re-shipped.

Protected step: harbormaster event strip over the three strategies
The hero moment. Event strip + storm + invariant tile holding green while two strategies sit below their lines.

Process: two designers, one synthesis

v1 rebuilt the app around the journey. Then the real screens went through a second, independent design review. Nine decisions accepted, one rejected:

Step 1: idle wallet with presets
1 · Wallet. Recognition + one attributed fact.
Step 3: live market, water rising, surcharges active
3 · Live market. Directional defense, visible.
Step 5: walk-away receipt
5 · Walk away. The receipt: 3 markets · 24 fills · 2 protections · 0 to unwind.

Real-world shape, tonight

Doca · built on 1inch Aqua + SwapVM · every number in the repo reproduces from a script.