Concept · DesignLab · 2026

Invitation,
not data.

Wayfarer treats travel content as a front door, not a spreadsheet. Interactive globe, forty destinations across seven continents, one editorial cover in place of the catalog the original brief asked for.

Information ArchitectureDesign SystemMulti-step Form UXAI-Assisted Build
wayfarer.barreiro.com →
01

Premise

The original site shipped a database. The brief needed a destination.

Live destinations grid at wayfarer.barreiro.com — 40+ destinations across seven continents, the surface the original brief tried to make the homepage.

The problem.

Three problems sat inside the brief. Onboarding friction (the multi-step signup form was the most cited pain point; users dropped off mid-flow). Layout inconsistency (the existing design didn’t hold across screen sizes). And no visual storytelling (the homepage listed destinations instead of revealing them). The thread underneath: the original site shipped a database, not a destination.

02

Research

Onboarding, layout, and storytelling all pointed at the same fix.

Phase 1

Heuristic evaluation + site audit

Phase 2

Card sort, IA, personas

Phase 3

The discovery pivot

Process

How I got there.

The Figma source carries the full design history. Research clusters became personas. Personas became an IA. The IA became wireframes. Wireframes became hi-fi explorations. Hi-fi became code. Three phases below. The shipped product is the last frame in the chain.

01Research

Personas and competitor audit.

Three personas synthesized from interviews. A heuristic audit of direct and adjacent travel platforms across discovery, planning, and booking. Together they answered two questions: who is this for, and what is already broken in the category. The site map and user flow that came out of this work get their own section below.

The Curious Drifter

Emma · 28 · UX Researcher

Has 14 days off, no idea where to go.

Browses moodily, Pinterest, Instagram saves, Reddit. Decision criteria are aesthetic + emotional ("feels like an adventure") more than budget-led.

Want / friction

Wants: A way to translate vibe → place. Loses: Hours to algorithmic feeds that show only what is already popular.

The Planner

Marcus · 41 · Senior Engineer

Specific dates, two adults + two kids, $8K budget.

Comparison-shops. Has spreadsheets. Tracks visa requirements, vaccinations, school holidays. Decision criteria are logistical first, aspirational second.

Want / friction

Wants: Structured comparison + planning. Loses: Trust in sites that bury the practical info (visa, weather, language) below booking widgets.

The Returner

Naomi · 35 · Travel Writer

Has traveled extensively. Saves destinations for later.

Wayfarer is her commonplace book. Bookmarks destinations she might pitch as future stories. Decision criteria are professional + curatorial.

Want / friction

Wants: A place to bookmark + annotate, no auth pressure. Loses: Trust in any platform that gates content behind sign-up.

Personas · three traveler archetypes

Atlas Obscura homepage screenshot — captured live during the competitor audit.

Atlas Obscura

Editorial · tag-led

The taxonomy is the product. Every place is tagged with categories (hidden, ruins, natural) that drive cross-linking.

Lift

Tag-led navigation feels editorial, not algorithmic.

Skip

Density of content is overwhelming for casual users.

Lonely Planet homepage screenshot — captured live during the competitor audit.

Lonely Planet

Guidebook · essay-first

Best Time to Visit is the most-quoted field. Travelers cite it back as if it were the destination's headline.

Lift

Promote that one fact above all others in the sidebar.

Skip

Long-form essays bury the practical info.

Airbnb homepage screenshot — captured live during the competitor audit.

Airbnb

Marketplace · photo-led

Photo-first grid with light filters. Hover reveals price and location.

Lift

Photo-led grid as the primary discovery surface.

Skip

Booking-first framing. Wayfarer is upstream of that decision.

Competitor audit · three lifts, three skips

02Explorations

Paper, then pixels.

Every screen started as a paper sketch. Seven hand drafts mapped the signup flow before a single Figma frame. Below: Step 1 in its original sketch and its v.4 hi-fi, then the iteration trail (seven mobile homepage versions, four signup versions) kept in the Figma source as proof of the work.

Step 1 · paper to product

Step 1 of the signup, paired side by side: refined v.4 hi-fi on the left, original hand sketch on the right. Same fields, same hierarchy, paper first.

Left: v.4 hi-fi · right: pencil draft

Homepage · mobile v.7

Mobile homepage v.7. destinations carousel state.
v.7 · frame 02
Mobile homepage v.7. globe section state.
v.7 · frame 03

Multi-step signup · desktop v.4

Multi-step signup desktop v.4. step 2 travel style.
v.4 · step 2 travel style
Multi-step signup desktop v.4. step 3 interests.
v.4 · step 3 interests
03Wireframes

Mid-fi wireframes.

Four key surfaces wireframed before the hi-fi: homepage as editorial cover, globe as discovery surface, trip planner with the three primitives, and the multi-page signup. Each ships in the live product.

Wireframe — Homepage.
Homepage
Wireframe — Globe · Discover.
Globe · Discover
Wireframe — Trip planner.
Trip planner
Wireframe — Multi-page signup.
Multi-page signup
03

Decisions

Cut booking. Keep discovery. Let the globe do the front-door work.

Information architecture

Six routes, two flows,
one discovery loop.

Wayfarer’s IA is intentionally shallow. Every primary destination is reachable in one click from the navbar. The deeper structure is the discovery loop: Home → Discover (or Destinations) → Detail → Planner → back. Each route in the map corresponds to a file at src/app/{slug}/page.tsx. Modals and overlays are separated from the route layer because they sit above route state, not within it.

Site map

Routes.

route/Home · hero, destinations carousel, why-wayfarer, get-started
modalSign Up modal5-step Zod-validated signup
modalSign In modalSingle-step email + password
route/destinationsFilterable catalog of 87 destinations
route/destinations/[slug]Detail page · hero / about / gallery / highlights / map / sidebar
route/discover3D Mapbox globe + Hidden Gems grid
route/plannerDrag-reorder itinerary + saved-locations rail + print-to-PDF
modalPicker modalAdd a segment or save a destination
overlaySearch overlay (⌘K)Globally-available cmd-K palette

Primary user flow

Curiosity → Commitment.

STEP 1

Land

Homepage

STEP 2

Browse

Discover · /destinations

STEP 3

Decide

Detail · /destinations/[slug]

STEP 4

Save

Saved Locations rail in /planner

STEP 5

Commit

Promote saved → segment

STEP 6

Export

Print-to-PDF

Six steps. Each step maps to a route or a state. No skip from Land to Commit; saving precedes committing on purpose.

Wayfarer globe explorer with Bhutan selected. live at wayfarer.barreiro.com. The kept surface: spin, click any pin, sticky destination card reveals on the right.

Globe explorer · Bhutan selected, sticky card on the right

4

Cut

Transactional layer

Hotel search and booking interface
Car rental browsing and comparison
Price-based filtering and sorting
Booking confirmation flow
5

Kept

Discovery layer

Globe explorer as primary discovery interface
Destination detail pages (content, gallery, tips, map)
Multi-step signup with preference collection
Trip planner for itinerary building
Continent-based filtering and search

The bet.

Four weeks into building with AI-assisted development, I had a working booking interface. Hotels, cars, full detail pages with pricing. The tools made it trivial to go from concept to functional UI in hours. The brief said discovery, not booking. I scaled it back. Removed hotel and car booking from destination pages. Kept the globe explorer, the trip planner, and the multi-step signup as the center of gravity. AI tools expanded what was possible to build. The discipline was deciding what not to build.

Wayfarer wordmark, native black on paper.
Wayfarer wordmark, white treatment on navy.
Wayfarer brand signature. wordmark, globemark, navy + coral colorways, three application rules.
Brand identity

Editorial, not booking-engine.

Navy + coral on paper. Globe wordmark anchors the brand. Voice borrows from National Geographic and Apartamento more than from Expedia. The token names matter: every brand color in the system maps directly to a CSS variable in production. The Figma file IS the source of truth; this case study is the editorial cut.

04

Details

The system, the shipped screens, and the audit that runs against them.

Design system

Tokens first.
Code-cross-referenced.

Four color ramps, nine type styles, eighteen documented components. Every component in the Figma source carries a ‘MATCHES src/...’ cross-reference to the production file it ships from. Design system coherence isn’t a claim; it’s a paper trail.

01 · Color tokens

Wayfarer color tokens. four ramps (Brand Navy, Coral, Paper, Ink) with per-step hex values matching src/app/globals.css.

Swipe ← → to explore · full view on desktop

Brand + Accent + Neutrals

Brand · Navy#3E3C78 · Identity
Accent · Terra Cotta#D27A5E · Interaction
Paper#F8F9FB · Surface
Ink#191824 · Text

One palette. Three roles. Two modes. Ten-step primitive ramps live in the desktop artifact above; semantic aliases swap between Light and Dark.

02 · Typography

Wayfarer typography. 9 styles: Display, Heading 1-3, Body, Label, Caption. Type ramp with usage notes per style.

Swipe ← → to explore · full view on desktop

Two typefaces, each with a job

Space Grotesk · Display + headings

Unforgettable new destinations.

Discovery by design.

Inter · Body + UI

Wayfarer is a discovery tool, not a booking platform. Everything had to survive that filter.

Email address

Display and heading rendering goes to Space Grotesk. Body, UI, and small type go to Inter. The roles are structural and they don’t overlap.

Receipts

One vocabulary.
Three projects.

Same token names, different values per project. Wayfarer ships navy + coral. The portfolio system (AB Core) and Men’s Sole Revival share the same primitives at different points on the ramp. The naming convention is the contract; values are the variable.

TokenWayfarerAB CoreMSR
brand-500#3E3C78#1C3F5E#1C3F5E
brand-900#2C2B5A#091016#13100C
accent-500#D27A5E#C4703A#C4703A
neutral-50#F8F9FB#F8F7F7#F8F7F7
neutral-500#6B6560#6B6560#6B6560

Token table excerpted from the AB Core Library. Same naming convention across all three projects.

Shipped.

wayfarer.barreiro.com is live. Homepage, globe explorer, destinations grid, destination detail templates, trip planner, 5-step signup. Six-page IA mapped to user verbs: orient, browse, explore, evaluate, plan, personalize. Eighty-seven destinations live on the globe. Full design system documented and code-cross-referenced.

Destination template · live

One template, eighty-seven destinations.

Live Kyoto destination page at wayfarer.barreiro.com. hero photo, about copy, gallery, five highlights, location map, quick-info side rail, related destinations.

Every destination ships through the same six-block template: hero, about, gallery, highlights, location, quick info. The template is the contract; content is the variable.

Trip planner · annotated

Four decisions visible on one screen.

Live trip planner at wayfarer.barreiro.com. Kyoto and Tokyo segments, 6 days total, with transit estimate between. Four numbered annotation hotspots call out the four design decisions listed alongside.
  1. 01

    Three primitives in the header.

    Segments, days, saved. Three counters surface the plan’s shape at a glance. Each one is a unit of commitment: segment is high, day is medium, saved is low.

  2. 02

    Plan without dates.

    Each segment has a duration in days and a soft ‘When’ field set to Flexible by default. Dates are optional, not required to save the plan.

  3. 03

    Transit between segments.

    Distance and travel time render between adjacent segments. The plan models the gaps, not just the stops.

  4. 04

    Saved sidebar stays separate.

    Bookmarked destinations live in a sidebar below the segment list. A ‘maybe’ doesn’t pollute the plan until promoted to a segment.

Planner journey

Two more states. From blank to a real plan.

Trip planner empty state. three primitives header (segments, days, saved) plus ‘Add your first segment’ CTA and an empty Saved sidebar.
01Empty state · one CTA
Add-segment modal. filterable list of all destinations with country labels. Pick one to populate as a segment.
02Add-segment modal · filter then pick

Multi-step signup · live UI

Five steps, then welcome.

All six steps below, stacked in order. Each step independently validated. The review screen lets the user jump back into any step without losing input. Preference data drives the post-signup home feed.

  1. 01

    Account

    Wayfarer signup step 01. Account. Live at wayfarer.barreiro.com.

    Account precedes preferences. Three fields, one primary action, soft tropical photography behind. The cover sets tone before it asks for data.

  2. 02

    Travel style

    Wayfarer signup step 02. Travel style. Live at wayfarer.barreiro.com.

    Three preference rails: travel style, budget range, group size. The first preference question is identity, not data: how do you travel?

  3. 03

    Interests

    Wayfarer signup step 03. Interests. Live at wayfarer.barreiro.com.

    Eight interest tags. Multi-select. No required minimum, no maximum. Skip is allowed. Drives destination feed weighting.

  4. 04

    Dream places

    Wayfarer signup step 04. Dream places. Live at wayfarer.barreiro.com.

    Six aspirational destinations as seed data. The system asks where you want to go before it tells you where to go.

  5. 05

    Review

    Wayfarer signup step 05. Review. Live at wayfarer.barreiro.com.

    Edit-back review screen. Account, preferences, interests, destinations — each block has its own Edit link. Any answer can be revisited without losing the others.

  6. 06

    Welcome

    Wayfarer signup step 06. Welcome. Live at wayfarer.barreiro.com.

    Confirmation modal. Green check, single warm sentence, one primary action: Start Exploring. The handoff drops the user into a personalized feed, not a generic homepage.

Brief vs delivered · scope discipline

Two things asked for. Seven shipped.

The brief asked for a homepage and an onboarding fix. The build expanded around both without breaking either. The expansion isn’t scope creep. The Bet section above shows what got cut to make room for it.

Brief asked forDelivered
Homepage redesignNew homepage with editorial cover, globe entry point, and feature highlights
Onboarding fix5-step signup with per-step validation, edit-back review, and welcome screen
(beyond brief)Interactive 3D globe with 87 destinations across 8 continents
(beyond brief)Six-page IA mapped to user verbs (orient, browse, explore, evaluate, plan, personalize)
(beyond brief)Destination detail templates with hero, gallery, highlights, quick-info side rail
(beyond brief)Trip planner with three primitives (segment, day, saved) and transit estimates
(beyond brief)Full design system (tokens, type, components) cross-referenced to production code

Two rows hit the brief. Five rows expanded it. The build held discipline against what was cut, not against what was added.

Accessibility

Audited, not assumed.

Dedicated accessibility audit page in the Figma source. Contrast ratios for every color pairing (the warm off-white over navy pair clears 15:1; the muted variant clears 10.5:1). Focus orders documented per page. Keyboard nav patterns for the globe (continent-grid fallback). Screen-reader labels on every icon button. The artifact is the receipt.

Wayfarer accessibility system audit. contrast checks per color pair, focus order documentation, keyboard nav patterns, screen-reader labels.
Scorecard

Eight blocking, six partial. Eight ranked below.

Six surfaces audited, three cross-surface patterns identified. Each row below links the finding to the route where it lives, the WCAG criterion it touches, and a one-line patch. Ordered by patch effort, quickest fixes first.

  1. 01Blocking

    Signup Modal · WCAG 2.4.3, 2.4.7

    Focus stays on the trigger button when the modal opens.

    onOpen focus a heading, ref.current.focus() on the first input.

  2. 02Blocking

    Signup Modal · WCAG 4.1.2

    No role="dialog" or focus trap.

    Wrap in role="dialog" aria-modal="true" and add focus trap. The Search Overlay does this already; copy the pattern.

  3. 03Blocking

    Sign In Modal · WCAG 2.4.3

    No focus trap.

    Same fix as #02. Wrap with focus trap. The role="dialog" attribute already exists.

  4. 04Partial

    Signup · Step 2 · WCAG 4.1.3

    Continue → Confirm & Join label change is silent.

    Move focus to the Review heading on step 5 entry so screen readers re-read the new button label naturally.

  5. 05Partial

    Signup · all steps · WCAG 4.1.3

    Step transitions not announced.

    Wrap step heading in <h2 ref={h2Ref}> and h2Ref.current.focus() on step change. Polite aria-live region is the alternative.

  6. 06Blocking

    /planner · WCAG 2.1.1

    Drag-reorder has no keyboard path.

    Add up/down arrow handlers to each focused segment that call onReorder programmatically. Optionally expose ↑ / ↓ buttons in the action row.

  7. 07Partial

    /discover, /destinations · WCAG 1.3.3

    Map markers under-announce.

    Expand pin aria-label to include country + tagline: aria-label="View Bhutan, Bhutan, The Last Shangri-La".

  8. 08Partial

    Input fields, all forms · WCAG 3.3.1, 3.3.3

    Error messages not programmatically tied.

    Add aria-invalid={!!error} to each input and aria-describedby={`${id}-error`} pointing at the error span.

Mobile

Discovery has to survive the phone. Hierarchy holds, the globe reduces to a continent grid, and the signup keeps its progress meter.

Sketched before pixels.

Mobile IA on paper before Figma opened. Kindle Scribe, three pages of the same phone-width canvas, sketched in one sitting.

Hand sketch on a Kindle Scribe. Wayfarer mobile homepage part 1 of 3. Logo, search icon, hamburger menu across the top. Hero copy reading Discover Unforgettable New Destinations. Sign Up button. Destinations header with three stacked cards labeled Bhutan, Greenland, and Tokyo.
Part 1 · Hero, sign-up prompt, first three destinations. The globe as the front door survives here as a pin-selected card list.
Hand sketch on a Kindle Scribe. Wayfarer mobile homepage part 2 of 3. Product Benefits section header, four stacked cards each with an icon and a headline, See-for-yourself CTA at the bottom.
Part 2 · Product benefits stack. Four icon-plus-header rows, each a one-line pitch, terminating in the See-for-yourself CTA.
Hand sketch on a Kindle Scribe. Wayfarer mobile homepage part 3 of 3. Logo block, Explore More section, Your Wayfarer Hub, Stay Connected, Follow the Journey with four social circles, footer with copyright.
Part 3 · Explore More, Wayfarer Hub, Stay Connected, Follow the Journey, footer. The connective tissue below the fold.

Role

UX/UI Designer · End-to-end

Year

2026 · DesignLab Concept

Stack

Figma · Next.js · Mapbox

Live

wayfarer.barreiro.com

Next chapter  ·  v0.2

What ships next, and how I’ll know it worked.

  1. 01

    Trip Planner state persistence and share links.

    Return visits to a saved plan cross 25 percent of authored plans within 30 days of the change.

  2. 02

    Live audit dashboard: keyboard traps, contrast, and reduced-motion coverage on every route.

    Two consecutive weeks with zero unresolved WCAG AA violations across the destinations, planner, and signup routes.

  3. 03

    Onboarding v2: personalization outputs a real feed at Welcome instead of a static list.

    Signup completion holds above baseline while first-session bounce drops at least 10 points.

Signed  ·  Alfonso Barreiro