
Building Pullman Bus Tracker: A Modern React Native App
"I didn't treat this as a utility problem. I treated it like a product and UX problem, with performance as a non-negotiable."
Pullman Bus Tracker renders real-time vehicles on a live map, shows arrival times with minimal friction, supports favorites for instant access, and includes an AI chat that understands natural language queries like "where's the blue bus?" This post breaks down the engineering and design decisions behind the feel: the corners, the blur, the physics, and the pipeline.
The Visual Language
I wanted the UI to feel unmistakably iOS-native. That meant adopting system conventions for corners, materials, and motion, then applying them consistently across every screen.
Continuous curves
iOS corners are not circles. They're continuous curves. Using borderCurve: 'continuous' makes surfaces feel system-level.
Blur as surface
Adaptive tint: light mode feels airy, dark mode dense. systemChromeMaterial adapts automatically.
Spring physics
Shared spring configs make motion consistent across callouts, modals, and micro-interactions. Responsive, not just animated.
Building the Live Map
The core loop. It had to render smoothly, read clearly, and update frequently without destroying battery. Polling only runs while the map screen is focused. Navigate away and it stops.
Blurred callouts animate in with coordinated opacity, scale, and spring translation
useFocusEffect scopes polling to the active screen, no hidden battery drain
Custom pull-to-refresh tracks gesture with interpolation, locks in with a spring
Tech Stack
Every dependency earned its place.
The AI That Actually Understands
Built like a small system, not a single massive prompt. Structured into stages so behavior stays reliable and debuggable.
Semantic search with embeddings
Transit names are inconsistent. Users say "blue bus", "blue line", or "route 1". Embeddings match meaning, not exact strings, so queries always land.
Result: "Where's the blue bus?" resolves to the correct route every time, even if the user doesn't know the route number.
What I Learned
Apps that feel good to use.
Building Pullman Bus Tracker taught me that great apps aren't just about functionality. They're about feel. The continuous corners, blur materials, spring physics, and haptics are each small on their own, but together they create an experience people enjoy using.
Every decision was intentional. Every interaction was tuned. The result is an app that does not just work. It feels good to use.