



A simple transit app for complex journeys
BrainStation UX final, summer 2021. Cut the bloat from everyday transit apps, put real-time and saved routes on home, and make a transfer-heavy Vancouver trip readable at a glance.
Context
Too much app for the next bus
Transit apps were already common. They were also bloated. People I talked to were not asking for more modes, more cards, or another layer of settings. They wanted to know when the next bus was, and they wanted the places they already go without digging.
Three interviews, ages 25 to 28. Two found current apps confusing. Two wanted real-time. The split was a downtown commuter who would not fuss with a complex app, and someone less tech-comfortable who still needed saved routes to and from work. Same product job. Different patience for chrome.
Role
What I owned
Solo. UX research, usability testing, and visual design. BrainStation UX Design final, July to September 2021. iOS. Metro Vancouver, with TransLink-style bus numbers and SkyTrain names so a trip to Granville Island looked like the system people already ride.
The constraint was attention, not a missing feature. Find the data that matters, show it so it can be scanned on a sidewalk, and stop adding the rest.


Decision 01
Real-time and saved routes on home
Research kept pointing at the same two things: live times, and the routes you already take. Home is a map, a search field, saved places (home, work, restaurant, beach), and a live list. Waterfront in 12 minutes sits on the first screen. No feature tour before you can see the next bus.
Search stays one tap away. Choose on the map, or pick from results. The point of home is not a dashboard. It is the next departure and the places you already named.


Decision 02
A journey you can read
Early route cards used a row of same-size colour squares. Testers could not tell bus from SkyTrain, and the row scrolled. After testing, buses are numbered blue pills and SkyTrain is a named orange pill: Expo Line, Millennium Line. The whole trip sits on one line. Leave by 5:05. Arrive 5:30. 25 minutes.
The detail screen keeps that summary, then the step list: walk, the 10, the Expo Line, the 9. Testing also moved an X on the sheet to a back control. People read close as abandon the search. Once a trip is picked, origin and destination fields drop so the steps can use the space.


Decision 03
Say the two jobs, then skip
Onboarding is three screens: stay on time with real-time, save the route you already take, then directions for a messy transfer. Skip is always there. It is not a brand film. It names the two things interviews said mattered, then gets out of the way.
If I had more time I would have spent it on another usability pass and the location-selected screen, not on more onboarding. Settings and a user panel can wait until the trip itself is boring in a good way.
Outcomes
What locked after testing
Home leads with live times
Saved places and real-time arrivals sit on the first screen. The next bus is not buried behind a plan-a-trip wizard.
Named lines, not identical squares
Bus numbers and SkyTrain names replaced a scrolling strip of colour chips. A transfer-heavy trip can be read without guessing.
Back, not close
An X on the sheet read as kill the search. A back control, and a trip screen without leftover search fields, matched what people expected.
Three interviews and one usability pass, not a launch. What I would measure later: time to first saved route, whether people open home for live times or skip straight to search, and whether the journey summary is enough without opening the step list.
Reflection
Subtraction is the craft
The easy version of a student transit app is more screens. The version that matched the interviews is quieter: live times on home, saved places in one row, a trip you can read while standing at Granville and Broadway. Sketching and IA helped. Interviews and the usability pass decided what stayed. If I did it again I would test sooner and longer, and I would finish the location screen instead of polishing onboarding. Data here is not a dashboard. It is 12 mins with a live mark.