WE ARE HIRING • WE ARE HIRING • 
Case Study
Mobile

DIZ – Carpooling & Ride-Sharing App

Diz is a dynamic two-sided marketplace mobile application designed to connect passengers with captains (drivers) for convenient carpooling and shared ride experiences. The platform allows passengers to easily search for available trips based on location such as city or mall, along with preferred date and time, making travel planning simple and flexible. With options to book seats and pay via cash or card, Diz ensures a smooth and accessible booking experience for a wide range of users. On the supply side, captains can create and manage their own trips by defining routes, schedules, seat availability, and pricing. This empowers drivers to optimize their journeys while offering cost-effective travel options to passengers. The platform includes real-time trip tracking, enabling users to stay informed about ride status, while OTP-based verification adds a layer of security to ensure safe and trusted interactions between passengers and captains. To enhance user engagement and trust, Diz incorporates push notifications for timely updates and an in-app feedback and rating system that promotes accountability and service quality. Designed with a focus on the Middle East market, the app fully supports Arabic with right-to-left (RTL) layout, alongside English and Urdu, ensuring a localized and user-friendly experience. Overall, Diz delivers a reliable, scalable, and culturally adaptive solution for modern shared mobility needs.

Flutter (Dart)
GetX
MVC
Firebase Firestore
Firebase Cloud Storage
Firebase Auth + OTP (SMS)
Firebase Cloud Messaging
EDFA Pay
Flutter Localizations (EN, AR, UR)
Dart http package
DIZ – Carpooling & Ride-Sharing App screen 1
DIZ – Carpooling & Ride-Sharing App screen 2
DIZ – Carpooling & Ride-Sharing App screen 3
DIZ – Carpooling & Ride-Sharing App screen 10
DIZ – Carpooling & Ride-Sharing App screen 11

Challenges & solutions

The technical problems our team solved to ship a reliable, unified mobile experience.

When multiple passengers attempted to book the last available seat simultaneously, concurrent requests could result in duplicate bookings and inconsistent seat availability.

Implemented real-time seat availability validation during the booking process, allowing reservations only after confirming seat availability. The booking record is created only after successful validation, preventing overselling and maintaining data consistency.

Payment processing and booking creation occurred independently, causing situations where payment succeeded but bookings remained incomplete or vice versa.

Designed a synchronized payment flow using the EDFA Pay SDK, where booking records are finalized only after confirmed payment success. Transaction details are stored alongside bookings, ensuring reliable payment reconciliation and eliminating inconsistent booking states.

Searching trips across pickup city, destination city, and travel date became increasingly slow as the number of published trips grew.

Redesigned Firestore queries and optimized supporting indexes to efficiently filter trips by city pair and date, significantly improving search performance while maintaining scalability for larger datasets.

Loading complete trip histories caused increased memory usage, slower rendering, and poor performance on older mobile devices.

Implemented Firestore cursor-based pagination that progressively loads additional trips as users scroll, reducing initial load time, improving responsiveness, and minimizing memory consumption.

Driving licence and vehicle registration images captured from modern smartphones were large, leading to slower uploads, increased storage costs, and inconsistent image quality.

Built an image preprocessing pipeline that allows users to crop, compress, and optimize images before uploading them to Firebase Storage, significantly reducing upload time and storage requirements while maintaining verification quality.

OTP delivery could silently fail when the SMS provider balance was exhausted, preventing new user registrations without immediate visibility.

Integrated automatic SMS balance monitoring that alerts administrators before message delivery is interrupted, ensuring uninterrupted OTP authentication and improving operational reliability.

Supporting right-to-left layouts introduced UI alignment issues, mirrored navigation problems, and inconsistent screen rendering across different devices.

Implemented a fully localized architecture using ARB files with runtime language switching, persistent language preferences, and complete RTL layout support, providing a consistent user experience in both Arabic and English.

Users frequently experienced failed actions without clear feedback when network connectivity was lost during booking, publishing trips, or document uploads.

Implemented a centralized connectivity monitoring service that continuously tracks network status and immediately informs users before executing critical operations, preventing silent failures and improving overall user experience.

Firestore document IDs were difficult for passengers, captains, and support teams to communicate when discussing specific trips.

Implemented an automatic sequential trip numbering system that generates unique, readable trip IDs, making customer support, issue tracking, and trip referencing significantly easier.

Key features

What users get in the finished, shipped product.

Dual User Roles :

  • Passenger and Captain : Register as rider, driver, or both.
  • Role Dashboards : Separate flows for each role.
  • Flexible Usage : Switch roles easily.

Trip Creation (Captain) :

  • Route Setup : Select pickup and drop cities.
  • Trip Details : Set date, time, seats, and fare.
  • Seat Management : Offer 1–4 seats per trip.

Trip Search and Booking (Passenger) :

  • Route Search : Find trips by date and route.
  • Captain Profiles : View driver details and pricing.
  • Seat Booking : Reserve one or more seats.

Card and Cash Payments :

  • Card Payments : Secure payments via EDFA Pay.
  • Cash Option : Pay directly to the captain.
  • Payment Tracking : Monitor pending or completed payments.

OTP Authentication :

  • Phone Login : Register with phone number.
  • SMS OTP : Verification via Madar SMS API.
  • Secure Access : Safe user authentication.

Real-Time Trip Status :

  • Trip Stages : Waiting, On the Way, Completed.
  • Live Updates : Track trip progress instantly.
  • Confirmation Codes : Verify trip start and end.

Push Notifications :

  • Booking Alerts : Get confirmation notifications.
  • Trip Updates : Pickup and status alerts.
  • Firebase FCM : Reliable push notifications.

Captain Verification :

  • Profile Photo : Upload driver photo.
  • License Upload : Front and back verification.
  • Vehicle Docs : Submit registration for approval.

Ratings and Feedback :

  • Trip Ratings : Passengers rate captains.
  • User Feedback : Share trip experiences.
  • Quality Control : Improves service standards.

Multi-Language Support :

  • Multiple Languages :  English, Arabic, and Urdu.
  • RTL Support : Proper Arabic interface layout.
  • Dynamic Switching : Change language anytime.

Trip Expiry System :

  • Auto Expiry : Trips expire after scheduled time.
  • Availability Reset : Captains can create new trips.
  • Efficient Scheduling : Keeps listings updated.

Profile Management :

  • Personal Details : Update name, gender, and photo.
  • Language Preferences : Captains set preferred languages.
  • Account Control :  Manage profile settings easily.

Tech integrations

Third-party SDKs & libraries

8 core integrations powered

Firebase Firestore

Core system integration

Firebase Authentication

Core system integration

Firebase Cloud Storage

Core system integration

Firebase Cloud Messaging

Core system integration

Firebase cloud functions

Core system integration

EDFA Pay SDK

Core system integration

Madar SMS API

Core system integration

google fonts

Core system integration

More Case Studies
Related Work

Similar Projects We've Built

TransportPro - Transport Management Software

TransportPro - Transport Management Software

TransportPro is a comprehensive transport and logistics management system purpose-built for India’s freight and transport industry. It provides a centralized platform for managing shipment loading, delivery tracking, GST-compliant billing, fleet operations, financial reporting, and stock management — enabling transport businesses to replace paper registers and Excel sheets with a streamlined, digital-first platform.

Next.jsTailwind CSS+2
View Case Study
GeoSentry

GeoSentry

GeoSentry is a professional-grade geofencing and real-time location monitoring mobile application built using Flutter. It allows users to define custom geographic zones on an interactive Google Maps interface and receive real-time alerts whenever a monitored device enters or exits these zones. The application is perfect for a variety of use cases such as personal safety, […]

FlutterDart+6
View Case Study
Sprut – Taxi Booking & Personal Assistance App

Sprut – Taxi Booking & Personal Assistance App

Sprut is a next-generation taxi booking and personal assistance mobile application designed to provide fast, reliable, and convenient transportation services. The app enables users to order taxis instantly, track rides in real time, schedule pre-bookings, and manage ride history with ease. Built using Flutter with GetX state management, the application focuses on performance, real-time updates, […]

FlutterDart+4
View Case Study
LoScoop

LoScoop

LoScoop connects travelers with real locals in Nashville for one-on-one chats. Get personalized tips on food, bars, events, hidden gems, and more straight from people who actually live there. Whether you’re looking for secret streets, live music spots, or the best brunch, LoScoop helps you discover Nashville like a local.

FlutterflowFirebase
View Case Study

Have a similar idea? Let's build it together.

From concept to launch, we turn your vision into a world-class product.