Car-Booking Web App for a Mobility Platform
A car-sharing / mobility platform
Overview
The consumer-facing single-page web app for booking shared cars on a mobility platform. It consumes the booking REST API and guides users through finding a vehicle, capturing required documents, and completing a reservation.
The Challenge
Car-sharing onboarding and booking is a multi-step flow with phone verification, document/photo capture and date selection, all of which must feel smooth in the browser while staying in sync with a JWT-secured backend across page reloads.
What We Built
A React 16 SPA structured around a Kea + Redux state layer (kea-router, kea-thunk) with redux-observable/RxJS side effects and redux-persist for session continuity. The UI uses Bootstrap and react-bootstrap with multi-step progress (rc-steps), date selection (react-datepicker), international phone input (react-phone-input-2), in-browser camera capture (react-webcam) with EXIF handling (exif-js), and sweetalert2 for feedback. API access goes through Axios with JWT decode/handling (jwt-decode, universal-cookie), and styling is built from SCSS via node-sass. Shipped with a Dockerfile and GitLab CI, with the API base URL configurable at build time.
Technologies & Approach
React with a Kea-on-Redux architecture kept the multi-step booking state predictable and persistable. RxJS/redux-observable handled asynchronous flows, and the broad library set (webcam, phone input, datepicker, EXIF) covered the practical realities of a mobility onboarding journey without bespoke widgets.
Outcome / Impact
Provided the web booking experience for the mobility product, maintained alongside its backend across 2019–2023. Demonstrates delivering a state-rich, integration- heavy React app for a real consumer mobility service.
Capabilities Demonstrated
- React 16 SPA development with Kea + Redux + RxJS
- Persisted, multi-step booking/onboarding UX
- In-browser camera and document capture with EXIF handling
- International phone verification and date-selection flows
- JWT-secured API consumption
- Dockerized frontend builds via GitLab CI