Case study
Revolt targets EV owners who need nearby chargers, trip routes with charging stops, and a way to reserve a slot before they arrive. The product is a team MVP, not a shipped store release yet.
Reasoning
A native rewrite would slow iteration on map and trip flows. Expo kept device testing quick while React Navigation and react-native-maps covered the core UX. Station listings stay on OpenChargeMap, with Supabase and Prisma only for profiles, vehicles, and reservations.
Choice
I wired trip planning so route calculation runs once and passes into the route screen, extracted domain helpers for station parsing, and tightened CI with tiered Jest runs plus component tests on shared loading and error states.
What I'd repeat
Plan trip and route screens were both calling the route API, which wasted requests and showed inconsistent distances. Computing once and passing the result fixed the flicker and the cost pattern.
Outcome
The MVP covers map browse, trip planning, reservations, and a staging-to-main pipeline with lint, type checks, and regression tests. Store launch and live payments are still ahead.
Postmortem: I would finish Supabase auth and Stripe wiring before adding more map screens, because reservation flows need real identity and payment guards early.
Impact: Expo MVP · OpenChargeMap · Supabase schema · tiered CI
