What it covers
-
01
Dashboard
Network, wallet and value cards sit next to connect actions and recent activity. The public screen is an empty workspace: counts are zero and no live session is attached.
Dashboard: network and wallet cards, connect actions and recent activity. Product name is blurred. Empty workspace. -
02
Ethereum wallets
A wallet desk for importing and refreshing ETH addresses across L1/L2, plus an asset table. The public screen is the empty import state so no address or key is shown.
Ethereum wallet desk: batch import and refresh. Empty until wallets are added. Product name is blurred. -
03
Perpetual API desk
Exchange API keys are saved once, with expiry and a connection test. The trading panel uses the same config. Public screens keep the key fields empty and blurred.
Perpetual API desk: access key, secret and expiry. Key fields are empty and blurred. Product name is blurred. -
04
Solana desk
Connection status, SOL balance, send/receive/swap/stake shortcuts and DeFi entries for common Solana venues. The public screen is disconnected, with no address.
Solana desk: connection, balance, quick actions and DeFi shortcuts. Disconnected; no address. Product name is blurred.
The problem
Wallet lists, Solana actions and exchange API credentials lived in different UIs. Checking a chain balance, a SOL action and whether a perp key was saved meant opening several tools.
How it was built
The console is a Next.js 14 app. Ethereum wallets and exchange API configs persist in MongoDB, with a localStorage cache on the perp desk. One sidebar switches the dashboard, ETH, SOL and perp views. The exchange desk talks REST and a contract WebSocket.
What changed
Operators stay in one workspace for the wallet desk, Solana actions and the exchange API config. Public screens are the empty state: product name, keys and addresses are blurred.