Back to projects
mobileFeatured

Offer Transfer (Passenger & Driver Apps)

Offer Transfer is a dual-application ride-hailing solution consisting of a Passenger App and a Driver App, designed to facilitate real-time ride requests, offer-based pricing, and efficient trip management. I worked on building both applications using Flutter, ensuring a seamless and synchronized experience between riders and drivers.

Offer Transfer (Passenger & Driver Apps)

Offer Transfer (Passenger & Driver Apps)

Overview

Offer Transfer is a dual-application ride-hailing solution consisting of a Passenger App and a Driver App, designed to facilitate real-time ride requests, offer-based pricing, and efficient trip management. I worked on building both applications using Flutter, ensuring a seamless and synchronized experience between riders and drivers.

The Problem

Traditional ride-hailing platforms often enforce fixed pricing models and limited flexibility for drivers and passengers. This reduces transparency and control for both parties. There was a need for a system where drivers could respond with offers and passengers could choose the best option, enabling a more dynamic and fair pricing model.

What I Built

Passenger App – Ride Requests & Offer Selection

Developed the passenger-side application where users can request rides by entering trip details and receive multiple offers from nearby drivers, allowing them to select the most suitable option based on price or availability.

Offer Transfer Passenger App Screenshot

Driver App – Offer Bidding System

Built the driver-side application enabling drivers to receive ride requests and submit custom offers, giving them control over pricing and improving earning flexibility.

Real-time Ride Management

Implemented real-time updates for ride status, including request creation, offer submission, acceptance, trip start, and completion, ensuring both apps remain synchronized throughout the ride lifecycle.

Location & Map Integration

Integrated location services and maps for accurate pickup/drop-off selection, route visualization, and driver-passenger coordination.

Trip History & Tracking

Developed modules for viewing past trips, ride details, and transaction history for both passengers and drivers.

Authentication & User Roles

Implemented secure authentication flows with role-based access, ensuring clear separation between passenger and driver functionalities.

Technical Highlights

  • Flutter-based dual application architecture for consistent UI across Passenger and Driver apps

  • BLoC state management for predictable and scalable handling of complex real-time flows

  • Real-time communication using APIs and event-driven updates for ride lifecycle management

  • Google Maps & location services integration for accurate geolocation and routing

  • Modular codebase shared logic where applicable between both applications

  • Optimized performance for handling frequent updates like offers and ride status changes

Key Decisions

I chose Flutter to build both Passenger and Driver applications because it allows maintaining a consistent experience across platforms while reducing development overhead with a shared codebase. Given the real-time nature of ride-hailing apps, performance and responsiveness were critical, and Flutter provided the necessary control over UI and rendering.

For state management, I used BLoC to handle complex asynchronous flows such as ride requests, multiple incoming offers, and real-time status updates. BLoC ensured clear separation between business logic and UI, making the system easier to scale and maintain as features grew.

A key architectural decision was designing the system around an event-driven backend. Instead of relying on static API calls, the apps react to real-time updates for offers, ride status, and driver-passenger interactions. This approach ensures both applications stay synchronized and provides a smooth, reliable user experience even under high interaction scenarios.