Skip to content
Muhammad Moiz

Case study · Mobility · Car rental & ride sharing

Rentalsols: Car Rental and Location-Based Car Pooling Web App

Car rental marketplace plus location-based car pooling, built as our own product by a team of three with React, Firebase and Google Maps.

Client
Rentalsols (own product)
My role
Full-Stack Developer (team of 3)
Year
2023
  • React
  • Redux Toolkit
  • Ant Design
  • SQL database
  • Firebase Auth
  • Firebase Storage
  • Firebase Hosting
  • Google Maps API
Visit the live site (opens in a new tab)
Rentalsols home page reading 'Search, book and rent any vehicle easily', with car search and car-pooling location inputs

Overview

Rentalsols is a web app with two sides:

  1. Car rental: car owners and rental shops list their cars, and renters check available dates and rates, then send a booking request.
  2. Car pooling: a driver going, for example, from Gulshan to DHA posts the trip with pickup and drop-off points on a map. Anyone within about 1 km of that route sees the trip in their feed and can ask to join.

Rentalsols is our own product, built by a team of three. I worked as a full-stack developer on it, using React on the frontend, a SQL database for listings, bookings and trips, Firebase for sign-in, photo storage and hosting, and the Google Maps API for picking locations and calculating which riders are within range.

The challenge

Getting around a big city like Karachi is expensive and slow, and many cars travel the same routes with empty seats. At the same time, people who need a car for a few days have no simple way to find one from local owners. The app had to:

  • Let owners and shops list cars with details, photos and daily rates
  • Let renters see availability and request a booking without phone calls back and forth
  • Let drivers publish a trip with exact pickup and drop-off points
  • Show each trip only to people nearby, so the feed is relevant and not a city-wide list
  • Make locations accurate without users typing full addresses

My role

  • Frontend (React): all screens, from listings and booking forms to pooling and account settings
  • State management: Redux Toolkit slices for listings, categories, bookings, map state and pooling
  • Maps and location: Google Maps integration for pinning addresses, choosing pickup and drop-off points, and radius-based matching
  • Data: SQL database design for cars, shops, bookings and pooling trips
  • Firebase: authentication, file storage for car photos, and hosting
  • Forms and validation: listing, shop, booking and pooling forms with clear validation

The approach

Listing cars for rent

Owners and shops add a car with its name, brand, vehicle number, mode and daily rate, plus photos uploaded to Firebase Storage. Shops register through a short three-step sign-up (shopkeeper info, shop basics, shop social), and pin their location on the map instead of typing an address.

Rentalsols shop sign-up wizard with three steps: Shopkeeper Info, Shop Basic and Shop Social, showing name, email and password fields

Booking requests

A renter picks a car, checks the available dates and rate, fills in a short form and sends a request. The owner sees the request in the web app and accepts or declines it there. This keeps the process simple for both sides and avoids double bookings.

Car pooling with Google Maps

A driver creates a pool by choosing a pickup point and a drop-off point on the map, a departure time and the number of seats. The app stores the trip with its coordinates.

Rentalsols car pooling page with fields to pin source and destination locations, pick a departure date and time, and choose the number of seats

Showing trips only to nearby riders

When someone opens the pooling feed, the app compares their location with each trip's points and shows the trips within roughly a 1 km radius. A rider near Gulshan sees the Gulshan-to-DHA trip; someone across the city doesn't. From the feed, the rider sends a request to join, and the driver accepts it in the app.

The distance check uses the Google Maps API, so matching is based on real map coordinates rather than typed addresses.

Accounts and security

Users sign in with Firebase Authentication, can change their password (with re-authentication for safety), and see their own listings and pools in one place.

Architecture

Rentalsols architectureThe React web app is served by Firebase Hosting, signs users in with Firebase Auth and stores car photos in Firebase Storage. It reads and writes listings, bookings and pools in a SQL database, and uses the Google Maps API to pick locations and find trips within 1 km.FirebaseSign inServesUpload photosLocations · 1 km matchRead / writeFirebase AuthFirebase HostingFirebase StorageCar photosReact web appRedux Toolkit + Ant DesignGoogle Maps APIGeocoding · distanceSQL databaseListings · bookings · pools
The React web app is served by Firebase Hosting, signs users in with Firebase Auth and stores car photos in Firebase Storage. It reads and writes listings, bookings and pools in a SQL database, and uses the Google Maps API to pick locations and find trips within 1 km.
  • React web app → Firebase Auth: Sign in
  • Firebase Hosting → React web app: Serves
  • React web app → Firebase Storage: Upload photos
  • React web app ↔ Google Maps API: Locations · 1 km match
  • React web app → SQL database: Read / write

Technical highlights

  • Location-based matching: trips filtered by distance so each rider only sees pooling options within about 1 km
  • Map-first input: pickup, drop-off and shop addresses chosen by pinning on Google Maps, which is faster and more accurate than typing
  • Two-sided marketplace: owners, shops, renters, drivers and riders all served by one app, with requests accepted in-app
  • Built as a product team: designed, built and launched by a team of three as our own product
  • Organised state: separate Redux slices for listings, bookings, map and pooling keep a complex app manageable
  • Code splitting: the app is split into many lazy-loaded chunks so first load stays light

Results

Car rental marketplace and location-based car pooling in one app
2 products
Pooling trips shown only to riders within range of the route
1 km
Designed, built and launched as our own product
Team of 3

Next case study

All case studies
Imdaad home page hero reading 'Your Partner in Integrated Facilities Management' with an Explore our services button

Facilities Management · Corporate website · 2025

Imdaad: A Bilingual Corporate Website on React and Contentful

Freelance build of Imdaad's English and Arabic corporate website on React, TypeScript and Contentful, from mid-build to launch, plus a caching fix.

6–8 months from mid-build to full launch

  • React
  • TypeScript
  • Contentful (headless CMS)
  • English + Arabic (RTL)

Ready to build — or finish — your product?

Tell me about your idea, or what you've built so far and where it's stuck. In a free 20-minute call you'll get an honest assessment and clear next steps — no obligation.