Case Study — UX · Product Design · Mobile
Harbor

Bank without the friction.

A digital-first mobile banking app for the US market. Six months of research, ten use cases, twenty-eight functional requirements, and a single design principle running through all of it: clarity over density.

Scroll ↓
Role
Lead UX Designer — research, IA, interaction, visual system, prototype
Type
Self-initiated concept · End-to-end ownership
Disciplines
UX Research · Information Architecture · Interaction · Visual Design · Front-end prototype
Platform · Year
iOS & Android (mobile-first) · 2026
01 — The brief

Most banking apps still feel like a branch grafted onto a phone.

Legacy mobile banking inherited four decades of branch-era information architecture — dense menus, hidden fees revealed at checkout, "silent success" states where you never know if your money actually moved. The user pays for that with anxiety on every transaction.

Harbor is built for the US market, mobile-only at launch. The goal: a fast, transparent, mobile-native experience where someone can understand their money at a glance, move it in a few taps, and stay in control of their cards and bills — without the friction of legacy banking.

02 — Design principles

Six rules. Every screen tested against them.

01

Clarity over density

Balance and recent activity first. Detail is one tap away, never piled on the home screen.

02

Trust by transparency

Every fee, status, and pending state is visible and labelled. Surprises destroy trust in money apps faster than anywhere else.

03

Few taps to value

Check balance, send money, freeze card — primary actions reachable in one tap from Home.

04

Safe by default

Confirmation and review steps on anything irreversible. Biometric gating on sensitive actions. The defaults pick safety.

05

No false success

Money movements always resolve to a clear state — sent, pending, or failed. Never a silent assumption.

06

Calm visual system

Restrained palette, generous spacing, a single accent colour for primary actions. The product earns attention, not demands it.

03 — From flows to wires

Lock the structure before you decorate it.

Ten low-fidelity wireframe sets, one per use case. Grey boxes deliberately stand in for real content — the point at this stage is hierarchy, flow, and edge cases. Visual design comes later, after the structure has earned its place.

Select a wireframe above to view it here.
04 — A walk through the product

Each screen is a decision.

The phone on the left is the actual app, running live. Scroll to flip the carousel — the screen and the rationale change together at each step.

Onboarding · First touch

The first screen is a promise.

Five elements: brand mark, name, one-line value prop, one primary CTA, one quieter alternative. Nothing else. New users decide whether to trust a banking app in seconds — every extra element here is a question they have to answer before they tap.

"Bank without the friction" is the product thesis in four words. It belongs on the first screen and nowhere else.

Home · UC-1

Home as a hub, not a dashboard.

Total balance lives where the eye lands first. The trend chart answers the next question — "is this going up or down?" — with a single time-range toggle. Quick actions (Send, Pay bill, Freeze, Add) are one tap from here, picked because they're the most-used and the most-anxious.

Accounts come second because the home screen's job is the snapshot, not the directory. Recent activity comes third because it answers "what just happened to my money" — the question that drove the session.

Send · UC-2

Recipient first, amount second.

"Send money" in the US is four rails — P2P by email/phone, ACH to an external bank, instant via RTP/FedNow, and between your own accounts. The user doesn't care about that taxonomy. They care who they're sending to.

So the flow asks one question — "who?" — and routes by recipient type. The picker leads with saved recipients, then your own accounts, then "add someone new."

Borrowed from Wise — they were right about this one.

Cards · UC-4

Freeze is one tap. Reveal needs a face.

The two most-used card actions sit at opposite ends of the trust spectrum: freezing (a defensive move you want instant) and revealing the card number (an offensive move that needs biometric gating).

Freeze is a single toggle, no confirm — speed matters when you've just lost your wallet. Reveal triggers Face ID and auto-hides after a few seconds. Limits and channel controls sit one screen deeper.

Insights · UC-3

Budgets that inform, not shame.

Spending grouped by category with a month-over-month trend. Tap a category to see its transactions and set a monthly budget. Over-budget shows a quiet cue, not a red alert — budgets fail constantly in real life.

Uncategorised transactions get a gentle prompt. Insufficient history shows an honest empty state instead of fake charts.

Pay · UC-5

Now, Later, or Repeat.

Bill pay collapses to three timing options: Now, Later (one-off scheduled), and Repeat (recurring). The most common case — paying a known biller a known amount — is two taps from the Pay tab.

Upcoming payments live on the same screen as starting a new one, because "what's coming out of my account this month?" deserves an answer first.

When a scheduled run fails, the app notifies and offers retry / new date. The schedule stays active. Recurring should keep recurring.

Activity · UC-1

Every transaction has a story.

The Activity tab is searchable, filterable, and groups by day. Each row carries enough context — merchant, category, status — to answer "what was this?" without a tap. Tap-through reveals the full detail.

Pending items are clearly badged. The clearing time is stated, not hidden. The first principle — clarity over density — does most of the work in the rows.

05 — Information architecture

Five tabs. Nothing more.

Bottom-tab IA, borrowed from Monarch's clean five-way split. The temptation to add a sixth (Help, Profile, Notifications) is always there. The answer was always no — those live inside the tabs that already cover them.

Home
Balance, trend, quick actions, recent activity
Activity
Full transaction history, searchable
Cards
Freeze, reveal, limits, virtual cards
Pay
Transfers, bill pay, scheduled payments
Insights
Spending analytics and budgets
06 — The edges nobody loves designing

When money moves, ambiguity is the enemy.

Most of the design work in a banking app isn't the happy path — it's the moments where something goes wrong, gets held up, or sits in limbo. Designing those states explicitly is what separates a banking app you trust from one you white-knuckle.

No silent success

Network drops mid-send

Show a clear "pending — confirming" state. Never auto-resolve to success. The user has to know the money moved before they leave the screen.

Blocked early

Insufficient funds

Stop the user at the amount step (disabled Continue) — not at the review. Offer "send max" or transfer from another account, so the next step is always forward.

Anti-fraud

First-time payee step-up

One-time code before review on a brand-new recipient. Not scheme-mandated; just the US anti-fraud reality. Done once per recipient, then quiet forever.

Irrevocable

Instant rail confirmation

RTP/FedNow transfers can't be clawed back. The confirmation copy on that rail is heavier — different button label, different review tone. Same flow shape, different stakes.

P2P

Recipient not enrolled

Send still works — funds sit pending, invite goes out, recipient picks a deposit destination on claim. Past the 14-day window, money returns to sender. Sender can cancel or resend any time.

KYC

Four verification outcomes

Approved, retry needed (user-fixable, loops back), under review (1–2 days, notify), or couldn't verify (contact support with a reference number). One status string per branch, no ambiguous "processing" states.

07 — The visual system

Calm by design.

#0B3C5DDeep Harbor — surface
#1D9E75Tide Teal — primary
#5DCAA5Tide Light — accent
#F4F9FBSea Mist — paper
#0E1A24Ink — text
#378ADDSignal — links

Typography & numerics

$21,130.50

Inter at 400/500/600/700 with font-variant-numeric: tabular-nums. Money figures use tabular numerals so digits align column-to-column across the table — a small detail that does outsized work in a screen built around numbers.

See it work

Try Harbor.

The full build: onboarding, KYC, the five tabs, send flow, bill pay, cards. React + Vite, deployed as a static prototype.