Driver Onboarding Web Flow for a Mobility Platform
A car-sharing / mobility platform
Overview
The web client for driver registration on a car-sharing / mobility platform. It walks new users through identity capture, phone verification, payment setup and subscription, talking to the registration / KYC API.
The Challenge
The onboarding journey pairs a compliance-heavy backend with a UX that must stay friendly: users capture documents from their camera, enter and verify a phone number, pick dates, and enter card details, without dropping out of a long multi-step flow.
What We Built
A React SPA with a Redux state core (redux-form, redux-observable/RxJS, redux-persist) and a Material-UI design system (core components plus pickers and moment date adapter). The flow embeds Stripe Elements via @stripe/react-stripe-js for card entry, react-webcam with EXIF handling for ID/document capture, react-phone-input-2 for international phone verification, react-infinite-calendar and rc-steps for date selection and progress, and react-iframe for embedded provider screens. API access is via Axios with JWT (jwt-decode, universal-cookie); styling is built from SCSS through node-sass. CI runs on GitLab.
Technologies & Approach
Material-UI gave the onboarding flow a coherent, accessible component language, while Redux (with redux-form) kept the multi-step form state controlled and persistable. Stripe Elements were embedded directly so sensitive card data never touched the app’s own code, keeping the payment step PCI-friendly.
Outcome / Impact
Provided the front-end half of the mobility platform’s driver onboarding, paired with the registration API release line. Demonstrates building polished, payment- and document-aware onboarding UIs on React + Material-UI.
Capabilities Demonstrated
- Multi-step onboarding UX with progress and validation
- Stripe Elements payment integration
- Camera-based identity/document capture with EXIF handling
- International phone verification flows
- Material-UI design-system implementation
- Redux / redux-form state management with persistence