Alex Le

Case study · UX/UI take-home · Mobile app · 2026

Jane’s day in Sài Gòn

one day, five places, a bus she has never taken.

A guide that plans the order, tells her when to walk and when to take the bus, and changes the plan when the day changes: a late bus, a longer visit, rain at dusk.

The day plan: five stops on a drawn map, with walking and bus legs
The Now screen at 8:31: six minutes to the bus, with live bus 54 and a button to show the way
Day complete at night: the stamps she collected and the day drawn as a map
  • 23screens
  • 1realistic day,
    4 disruptions
  • 48logged
    decisions
  • 3prototype
    flows

UX/UI design, solo · research to clickable prototype

A take-home, validated by self-review, not users
Morning · understand the day
1The brief

Reading the brief before drawing anything

Jane, 30, solo, tech-savvy, one day, by bus. Start at the Sheraton, end at Vincom, three places in between. I split the brief into what is given, what is required and what is missing.

The brief asked for a bus app. Read closely, the real problem was a day: five places, a time limit, a bus network she has never used, and a plan that has to change while she is out in it.

Tech-savvy

Wants to understand, not just obey

Explain every suggestion, show when data is estimated, allow reordering. But tech-savvy does not mean she knows the local bus: validating a ride and knowing where to get off still need guidance.

Eager

Will over-plan

She wants to make the most of the day and may change plans. The app has to say clearly when a plan is unrealistic, and re-plan fast.

Solo

No one to ask

No one reminds her of the time or where to get off. The app has to act as a companion: proactive, one-handed, still useful offline.

The brief left three things undefined, so I defined them.

“Overall travel experience” became: avoid closing times, avoid the midday heat, include a sensible lunch. “May not meet” the time limit meant alerts must be proactive, while planning and while travelling. “Alternative routes” meant the app must offer the next step, not just report a delay.

Start and end are fixed, so only three stops can move: six possible orders. That suggested a feature for comparing orders. Research later made it unnecessary.

2Research

Local knowledge as hypotheses, not answers

I know the city; Jane does not. I wrote down what I believed, then checked each belief against official hours, news, traveller reviews, walking times and hands-on tests of local transit apps.

H1

The stops are closer than Jane expects

The whole route is about 47 minutes on foot; three of four legs are under 15. The bus only wins on two legs.

Confirmed
H2

Go out to the far places first

The brief’s order already does this. So the value is not finding a hidden order but explaining this one, and re-planning it.

Confirmed
H3

Midday closures create deadlines

Neither place closes at midday. The real deadline is the Museum’s 17:00 ticket cutoff, and the Opera House is best at dusk.

Revised
H4

Using the bus is harder than finding it

Buses are free in 2026, but riders validate with a card tap, foreign visitors got stuck at that step, and buses often do not stop unless waved down.

Sharpened
H5

Heat and rain shape the day

34–35° at noon; after 17:00, rain, rush hour and high tide can overlap. Far legs early, short walks in the evening.

Confirmed
Visceral and overwhelming. The Agent Orange room was confronting and the war crimes room was too much.Traveller reviews of the War Remnants Museum. The plan should leave a quiet moment after it, not schedule the next stop back to back.

The competitor review moved the problem twice.

First I looked at transit apps only, then at everything Jane might use for a day in a city: trip planners, guides, journals. Each owns one part of the day. Planners plan before, journals remember after, transit apps move you one leg at a time. None stays with you during the day and re-plans from what is actually happening.

Two claims I had in mind, “optimises the order” and “combines transport modes”, were already done by others. I dropped them rather than pretend.

3The problem

A definition of done, written from Jane’s side

Before any idea, I wrote what success means for her. Every later check was made against this list, not against my taste.

When I have only one day in an unfamiliar city, I want to visit the places I chose without wasting time or getting lost, so I can enjoy the day with confidence.Job to be done
  1. 1

    Visits every place she chose, or knowingly drops one for a better alternative

  2. 2

    Reaches the final stop within her time limit

  3. 3

    Is never surprised by a closing time

  4. 4

    Never stands at a stop unsure which bus to take or how to board

  5. 5

    Can see what to do next at any moment

One glance, next step

At any moment she sees what to do next without reading.

Explain, don’t just decide

Every suggestion says why, in one line.

Warn early, offer a fix

An alert always comes with an alternative she can take in one tap.

Midday · decide what matters
4Scope

Not all five features deserve the same depth

I went deep on the two that carry the most product thinking and the clearest gap: the stop order and the time limit. The rest were built to a solid, familiar standard.

Stop orderDeep

The order is already clear, so the value is explaining it and re-planning fast when the day changes

Time limitDeep

Turns opening hours and the end time into early alerts she can act on

Live bus infoMedium

Needed for trust; focused on delays, waiting time and alternatives

Route planningMedium

The entry point; kept short because the stops are known

Map navigationStandard

A familiar pattern, focused on “get off at the next stop”

The key decision

Let conditions choose walk or bus, leg by leg

Research said walking beats the bus on most legs. The brief said “by bus”. Forcing either would be wrong.

So the app compares both for every leg and recommends one from distance, heat, rain, the bus’s arrival and the time left. The bus is always shown with live times, and it is the default on long legs or in bad weather. For the comparison to be fair, a bus leg counts everything, including the wait:

Lunch, rest from the heat and alternative plans were not added as new features. They live inside the five the brief asks for: lunch is a stop in the timeline, a cool place to sit appears next to “take the bus”, and a time alert offers to drop, shorten or swap a stop. Broad thinking, without diluting the product.

5The scenario

Designing for a realistic day, not an ideal one

An ideal day never triggers the moments that make the app different. So the prototype follows a normal day with four disruptions, each testing a different part of the product, linked by cause and effect.

  1. 8:30

    The first leg is a 22-min walk at 30°

    So the bus is suggested, with a guide to validating the free ride before boarding.

    S4
  2. 8:31

    Bus 54 is 4 minutes late

    Live arrival, said as a time, not a warning. The leg time includes the wait.

    Live · 4 min lateS6
  3. 8:58

    The Museum runs on time

    The calm baseline: the plan on track, nothing asks for attention. The Museum stamp is stuck on the photo and franked 8:58.

    On trackS8
  4. 11:10

    She stayed 40 minutes longer

    The plan bends without blame: lunch first, the Palace after, still inside 19:00.

    Shifted 40 minA1
  5. 11:15

    Leaving a heavy place

    One optional tap on how it felt, then a quiet garden café four minutes away.

    S4b
  6. 14:30

    Peak heat, free time

    A nearby place to rest and cool down instead of another walk.

    Heat 34°
  7. 16:45

    Rain at 17:15, with rush hour and high tide

    Walk now, 13 minutes, and arrive dry; the bus would take 15–25.

    Rain 17:15A3
  8. 18:15

    Day complete

    45 minutes inside the limit. The recap draws the day as she lived it.

    45 min spareS9

The amber stops are the four disruptions. The line is dotted where she walks and solid on the bus. Every time, duration and price on the screens is read from this one timeline.

Evening · what changed, and the checks
6Pivots

What changed, and why

I logged every decision that changed, with what triggered it: 48 in total. The pattern taught me more than any single decision.

Most evidence-driven changes came early and cost a sentence. Most direction changes came late and cost a rebuild.

Product

From a checklist of stops to a guide for the day

  1. BeforeA list of stops with numbers, drag handles and “fixed” labels.
  2. TriggerIt read like a checklist, not a journey. The job is to enjoy a day with confidence, not complete five tasks.
  3. After

    The day as chapters, one “Now” card with advice, an arrival guide. The list stays behind “Change the order”.

Differentiator

The thing that makes it different moved twice

  1. BeforeFirst “compare suggested orders”, then “combine transport modes”.
  2. TriggerThe order turned out obvious, and a local transit app already combines modes (tested hands-on).
  3. After

    A whole day with a time limit and opening hours, re-planned as it happens. No app reviewed does all of it.

Self-check

A false alarm caught before anyone saw it

  1. BeforeThe 11:10 alert said she would miss 19:00.
  2. TriggerChecking it against the timeline: the free afternoon absorbs 40 minutes. A later check caught a heat argument that pointed the wrong way.
  3. After

    The alert names the real cost: lunch slips to 12:30, with no break after a heavy museum. A false alarm destroys trust in every alert after it.

Visual direction

Colour went too quiet, then came back where it belongs

  1. BeforeFive palettes, each removing colour, ending near-black because violet and pastels looked cute next to a war museum.
  2. TriggerReviewing the screens against the moodboard: 21 of 23 had almost no colour, and morning looked the same as evening.
  3. After

    Daylight on the planning screens, quiet at the heavy places. The fix was to scope the lesson, not reverse it. This page wears the same daylight.

Lesson

Write the positioning first

Colour and illustration were chosen against an unstated target and redone once it became clear. Next time: a one-paragraph visual brief before any colour.

Lesson

Facts before differentiators

Two differentiators were named before the facts that decided them. Next time: distances, hours and competitor features first.

Lesson

One timeline for every number

Both logic errors came from designing from intent. One shared timeline caught them; now every number on a screen comes from it.

7Validation

Validation without users, done honestly

A take-home leaves no time for usability tests. So every check is a structured self-review, labelled as such, and the riskiest assumptions are listed for the first real test.

23

Walkthrough

The whole day, screen by screen

Every screen answers “what do I do next?”. A second pass against the timeline fixed five places where the prototype contradicted the day.

5/5

Criteria

All five met, three after review

Closing times, boarding and “what next” were only partly met until three missing states were added: no live data, a stop at risk, waiting out the rain.

412

Accessibility

Contrast measured on the pixels

412 text segments on 23 screens, measured against what is actually behind them. One real failure, text on a bright photo, was fixed.

What I would test first, with five solo travellers
  1. 1

    The first bus ride

    Can they find the stop, recognise the bus, wave it down and validate without help?

  2. 2

    The time alert

    Do they understand the consequence, and trust the suggestion enough to take it?

  3. 3

    Walk or bus

    Do they follow the recommendation, and does the reason change their choice?

Night · the day, as delivered
8Delivered

What was delivered

The full screens, the design system and the clickable prototype live in the Figma file. In short:

Where and when to finish: end at Vincom, finish by 19:00
Change the order: the stops as a list with fixed start and end
Can't find the stop: a map to the stop and two other ways to get there
Independence Palace: what to see, ticket price and a tip from Ghé
Evening: waiting nearby for the Opera House lights, rain at 17:15
Bus guide: the sign to look for and bus 54 arriving live

Screens & prototype

  • 23 screens in three visual layers: planning, on the move, at a place
  • A clickable prototype of the whole day, plus two variations: no live bus data, and a late start that puts a closing time at risk
  • A motion board for the four high points of the day
  • User flow, journey map and grayscale wireframes before any colour

Design system

  • 59 primitive → 57 semantic variables; screens use semantic tokens only
  • 20 text styles: Bricolage Grotesque for headings and numbers, Inter for text
  • 29 component sets; status always as an outline, an icon and a word
  • Brand: the ghé’s wordmark, Ghé the guide in five poses, place stamps stuck and franked on arrival, the day line
App icon, day App icon, night

ghé: to stop by.

Vietnamese readers see ghé, “stop by”; English readers see Ghé’s, the guide’s place. The letters are drawn as one road, and the pin is both the accent and the apostrophe.

Ghé, the guide
  • Wave
  • Guide
  • Tip
  • Umbrella
  • Goodbye
Place stamps, collected through the day
  • Hotel
  • Museum
  • Palace
  • Lunch
  • Coffee
  • Opera House
  • Vincom
On arrival: stuck on the photo and franked
The Palace stamp stuck on the corner of the Independence Palace photo, with a white edge and a soft shadow, and a brick postmark reading Sài Gòn, 13:30, Saturday struck over it, its wavy lines running across the lawn

Arrival is the moment the day is posted home. The place stamp is stuck on the photo’s corner like a postage stamp, a third off the image, and a postmark with the arrival time strikes over it.

My call, late in the project (Decision #48). It reversed an earlier rule, “a stamp never sits on a photo”. The postmark is decoration: the arrival time is always in text on the screen too.

+

The interesting part was never the route. It was the moment the day stops going to plan, and whether the app is still someone you trust.

Next
Back to all projects