Case study · iOS · Android · Web
Kupos
Bus tickets, transit-card top-ups and airport transfers across Chile — one booking flow powering three apps.
- Role
- Lead React & React Native Engineer
- Platform
- iOS · Android · Web
- Timeline
- 2024 — Now
- Impact
- 3 apps sharing one booking flow
01 — Context
Kupos is a ground-transport platform in Chile. Travellers search intercity bus routes, pick seats and pay — on the website, in the mobile apps, and at physical kiosks in bus terminals.
I joined in August 2024 to lead React and React Native development across those surfaces. The hard part wasn't any single app: it was keeping several products — Kupos, Allinbus and the Kiosk app — consistent while each needed its own features, without maintaining three copies of the most complex flow in the business.
02 — What I built
One booking flow, three apps
Search, seat selection, passenger details and payment built once and reused across the Kupos, Allinbus and Kiosk apps with unified state management.
Transit-card recharge over NFC
Topping up transit cards by tapping them on the phone — which meant going below React Native into platform-specific native modules.
Coupon system
Promotions and discount codes end to end in the apps, from validating a code to applying it at checkout.
Airport transfers
A new product line — booking transfers to and from the airport — shipped inside the existing apps.
Web booking on Next.js
Features on the kupos.cl website that make online bus ticket booking seamless.
03 — How it's built
- Redux and React Navigation for state and navigation, structured so the same booking screens drop into different app shells — improving usability and retention.
- Native modules for hardware access like NFC, keeping the JavaScript side a thin, typed interface over the platform code.
- One TypeScript codebase per surface, released to both the App Store and Google Play.
- React Native
- TypeScript
- Redux
- Recoil
- React Navigation
- Next.js
- Firebase
- NFC