On Track · 2025
Case Study

On Track

Shanghai Metro Verification App

Not a navigation app — a boarding verification app. On Track helps passengers confirm they're on the right train before it's too late, solving a real and frustrating pain point on Shanghai's sprawling metro network.

Type
School Project
Platform
Mobile Web (React)
Network
Shanghai Metro Line 2
Stack
Vite · React · TypeScript
Try Live Demo
01

Problem & Process

From Frustration to Flow

Shanghai Metro Line 2 runs east-west across the city — two directions, identical platforms, easy to board the wrong train. The app addresses the moment of uncertainty between arriving at the platform and boarding, not navigation.

The Problem

Metro apps tell you where to go — but not whether the train arriving right now is actually going the right direction. On a busy platform, this ambiguity causes missed trains, wrong boardings, and unnecessary anxiety.

Sketches & Wireframes
User ResearchPain PointSketchingWireframing
02

User Flow

Five Steps to Confidence

The core flow guides users from station selection through platform verification, boarding confirmation, and ride mode — with clear recovery paths for wrong-train scenarios.

HomeSelect origin & destination
PlatformConfirm eastbound direction
BoardingVerify Line 2 + destination
Ride ModeAuto-advance after 5s
ArrivedTrip complete
5-Step FlowVerificationAuto-AdvanceClear Hierarchy
03

Design System

Tokens & Components

TripPassCard

Dark green ticket stub (#1A3A2A) with barcode, tear-line, notch cutouts, and Valid badge — a physical transit metaphor in digital form.

TabBar Progress

Pass → Check → Ride progress indicator with animated connector lines, driven by useLocation() per route.

Color Tokens
Primary
#2563EB
Verified
#6AD168
Coral
#FF6B6B
Amber
#FFAB5E
BG
#F2F2F7
Text
#1C1C1E
Typography
Status NamePlus Jakarta Sans 800 · Uppercase
Section HeadPlus Jakarta Sans 700 15px · Uppercase
Body / CaptionInter 400 · 15px
Design TokensComponent SystemTripPassCardProgress Indicator
04

Edge Cases

Wrong Train Recovery

Designing for failure states is as important as the happy path. On Track includes dedicated recovery flows for two wrong-train scenarios — before boarding and after boarding — each with a clear exit path and 60-second countdown recovery.

Wrong Train
Detected at platform — exit before boarding
Wrong — On Board
Detected after boarding — get off next stop
Recover
60s countdown timer — reroute or wait
Design Decision

No green CTAs — color is reserved for status meaning. Active buttons are blue (primary action) or gray (inactive). Green only appears in the verified state, coral only in error states, making status instantly readable.

Error StatesRecovery Flow60s TimerColor Semantics
On Track · Shanghai Metro Verification App