Back to projects
2026Crypto AppProduct design and front-end engineering

Crypto App. The whole market, read at a glance.

A full crypto app: live markets, a portfolio that tracks cost and return, swaps, and staking. Heavy on data, designed to read clean.

Product designFront-end engineeringData visualizationDesign system
Crypto App. The whole market, read at a glance.

A market, made to read

The app does the obvious things. It tracks a portfolio, prices the market live, swaps one asset for another, and puts idle coins to work. What sits behind that is a lot of data: prices, holdings, cost basis, returns, allocations, fees, yields, all moving at once. The design work was keeping every screen legible while it carried that weight. What follows walks the app, screen by screen.

Landing section titled "One app for your whole crypto life" over a row of token logos, with four cards: Portfolio at a glance, Markets in depth, Swap in seconds, and Put assets to work.
The pitch in one screen: watch the portfolio, read the market, swap, and earn.
Dark landing section pairing a portfolio allocation ring headed "Know exactly what you hold" with a swap panel headed "Swap without the friction".
Two of those jobs, shown rather than described: an allocation ring and a swap.

One screen for the whole position

The dashboard answers the first question a holder has: where do I stand. Total balance and its move over a day sit at the top, big enough to read across the room. Under it, the same money is cut four ways, then laid out as allocation, recent activity, and the day's movers. The whole position on one screen, no drilling.

The dashboard in dark mode: a large total balance of $122,048.58 up 2.52% with an area chart and timeframe tabs, four stat cards (24h change, total profit and loss, top mover, available cash), and panels for allocation, recent activity and top movers.
Balance, four key numbers, allocation, activity, and movers, in one view.
Lower part of the dashboard: the allocation breakdown by asset beside a Markets table listing Bitcoin, Ethereum, Tether, Solana and more with prices.
Scroll, and the market table comes to the dashboard, no tab change.

The hard screen: a market that scans

The markets table has the most to carry. A global stats bar, then trending and gainers and losers, then category filters, then a sortable table with price, four timeframes, market cap, volume, and a live sparkline on every row. It stays readable because of the type. Numbers are set in monospace figures, so columns align to the digit and the eye runs straight down a price without snagging. Color is rationed: green and red sit on the moves, nowhere else.

Markets page in dark mode: a global stats bar (market cap $2.28T, 24h volume $126.84B, BTC dominance 61.5%), Trending, Top gainers and Top losers cards, category filters, and a sortable table with watchlist stars, prices, 1h/24h/7d changes, market cap, volume and a per-row sparkline.
Global stats, trending and movers, category filters, and a sortable table with a sparkline per row.

Holdings with the numbers that matter

Portfolio goes past balance into cost. Each holding shows amount, average cost, current price, value, and return, so a position reads as profit or loss at a glance. The allocation ring uses the same color key as the dashboard, so a slice means the same thing wherever it shows up. Each coin keeps its own page, one tap away, with its full price history.

Portfolio page in dark mode showing portfolio value $122,048.58, stat cards for invested $90,512.10, current value, total return +$31,536.48 (+34.84%) and 6 holdings, with an allocation donut and per-asset breakdown.
Invested, current value, and total return up top, then allocation by asset.
Portfolio holdings table listing BTC, ETH, SOL, LINK, USDC and NEAR with amount held, average cost, current price, position value and percent return.
Every holding with amount, average cost, price, value, and return.

A trade you can read before you take it

The swap puts the decision in front of the trade. Pick a pair, type an amount, and the rate, price impact, network fee, and minimum received all show before the button. A chart of the asset you are buying sits to the side, with the live exchange rate both ways. None of the cost waits until after you commit.

Swap page in dark mode: a panel paying 1,000 USDC to receive 0.014037 BTC with rate, price impact under 0.10%, network fee $0.40 and minimum received, next to a Bitcoin price chart and two-way exchange rate cards.
Rate, price impact, network fee, and minimum received, all shown before you commit.

Staking, with the fine print up front

Earn turns a wall of yield products into something you can compare. Each card leads with its APY, then states lock period, minimum, total value locked, and a plain risk level. The numbers that decide a stake are the ones shown first. Open positions and lifetime rewards sit above the list, so what you hold and what you could hold read together.

Earn page in dark mode: total staked $8,735.60, rewards earned $2,126.64, average APY 7.1%, current positions in Solana and USD Coin, and a grid of staking products (SOL, USDC, ETH, DOT, LINK, AVAX) each showing APY, lock period, minimum, total value locked and a risk badge.
Each product leads with APY, then lock period, minimum, and risk.

The ledger, made plain

Activity is a running history of every move: buys, sells, swaps, sends, receives, rewards, stakes. Each row says what happened, when, and the amount in both the coin and dollars. A breakdown by type sits alongside and counts each kind, so even a long history keeps a shape.

Activity page in dark mode: stat cards for transactions, received, sent and net flow over a typed History list (received, bought, swapped, reward, staked, sold, sent) and a By type breakdown counting buys, sells, swaps, sends, receives, stakes and rewards.
A typed history on the left, a by-type breakdown on the right.

One theme system, light or dark

Every screen carries a full light mode, built from the same tokens as the dark one. Surfaces, borders, chart fills, and the green and red of a move all remap together. The layout holds; only the palette changes.

A six-up grid showing the dashboard, markets, portfolio, swap, earn and activity screens in light mode, each holding the same layout as its dark version.
Dashboard, markets, portfolio, swap, earn, and activity, all in light mode.

Desktop down to a phone

The same screens fold onto a phone, with the sidebar swapped for a bottom bar. Tables stack into rows, the swap keeps its full cost breakdown, the charts redraw at the new width. It reads as a native app, but it is the one build, resized.

Three dark phone screens of the dashboard: total balance with quick actions and chart, the allocation ring with per-asset percentages, and a markets table.
The dashboard on a phone: balance, allocation, and a market table.
Three dark phone screens: the markets overview with stats and trending, the filtered markets table, and a coin page for Ethereum with a large price chart and a line or candles toggle.
Markets, filters, and a single coin's page, on a phone.
Four dark phone screens: the swap with its full cost breakdown, the swap token picker open, the portfolio value and holdings, and the earn positions.
Swap, the token picker, the portfolio, and earn, in your pocket.
Four light-mode phone screens: the dashboard, markets, portfolio and earn.
The same four, in light mode.

What runs behind it

It all runs in the browser, with no backend. The coins, prices, holdings, transactions, and yields come from one fixed seed, so the data stays rich and identical on every load, and the pages rendered on the server match the charts drawn in the browser. Those charts, the area lines, sparklines, allocation rings, and candles, are drawn by hand in SVG, with no charting library. The coin logos are real. The whole product is one design system used straight, which is why eight screens, two themes, and a phone layout stay consistent.

Built with

  • Next.js16
  • React19
  • TypeScript

A heavy market, made readable.

Live prices, full positions, swaps, and yield. The work was in making all of it easy to read.