Case Study
Built & launched · sunsettedWheel Wizard Micro-Mobility App
A micro-mobility rental app I built to explore map-heavy product flows: discovery, routes, ride state, QR unlock, parking, and payments.
A mobile-first micro-mobility prototype with map discovery, QR unlock, ride state, service zones, parking verification, and payment handoff.
Problem
The problem that interested me was the gap between a simple map pin and a reliable ride experience. A scooter app has to help users find a vehicle quickly, unlock it, track the ride, calculate cost, enforce zones, verify parking, and recover from bad GPS or camera permissions. That makes it a strong test bed for frontend reliability and state design.
Solution
I used Angular with Ionic and Capacitor so I could build a mobile-first interface while still leaning on web development speed. Mapbox powers the location and service-zone experience because the map is the main product surface, while NestJS owns booking state, fare calculation, and payment handoff. MongoDB fits the prototype well because ride, vehicle, and location documents evolve naturally during product exploration.
Outcome
The project helped me move from just consuming map-based products to understanding how they are put together. It made me think more carefully about geofencing, incomplete ride states, permission failures, and the handoff between frontend interactions and backend rules. The demo is intentionally product-like, not just a map experiment.
Technical decisions
How it's built
- Ionic and Capacitor provide the mobile shell and camera access needed for QR-based ride starts.
- Mapbox handles vehicle discovery, route context, and service-zone feedback because location is the core interaction.
- NestJS manages ride lifecycle transitions so booking, active ride, completion, and payment states do not drift apart.
- Stripe payment handoff is kept separate from ride-state updates to reduce partial-failure risk.
What I'd do differently
- I would model ride-state transitions as a stricter finite state machine.
- I would add offline and poor-GPS fallbacks before treating it as production-ready.
- I would build an operator dashboard earlier because mobility products are as much about fleet operations as rider UX.