Case study · Product · Mar – Apr 2023

CarpoolX

Android app that matches riders headed the same way so they can share a taxi.

Role
Team of 4: repo lead, most of the Flask backend and auth, core screens
When
Mar – Apr 2023
With
Henushan Bala, Rafeed Iqbal, Allison Cook
Repo
JavaScript · ★ 1 · last push Oct 2023

01 The problem

Riders going the same way each pay for their own taxi. Sharing one splits the fare, but only if you can find each other, know the price up front and feel safe riding with a stranger.

02 What I built

Four of us built it in two weeks (Mar 30 – Apr 13, 2023) as a React Native Android app on a Flask and Firebase backend. I was the repo lead and the main backend author, and built most of the account and safety screens; teammates owned ride requests and matching, ratings and private group rides.

03 Highlights

  • Led the repo: scaffold, navigation and a feature-branch workflow. Merged all 38 pull requests that landed and wrote 119 of 156 commits.
  • Wrote most of the MVC Flask backend: multi-user Firebase Auth sign-in, tokens kept in the Android Keystore, token-checked endpoints, and the controller and model layers.
  • Built login and registration, the profile, taxi verification by door code, taxi details and passenger reports.
  • Teammates built ride requests and matching with Google Maps routes and fare estimates (Henushan Bala), end-of-ride ratings (Rafeed Iqbal) and private group rides (Allison Cook).

04 Key decisions

  1. A thin API in front of Firebase

    The app talks to a Flask server split into account, rideshare and taxi controllers over one Firebase model layer, instead of calling the database from the phone.

  2. Tokens in the Android Keystore

    The session token lives in the Keystore, and the API’s endpoints check it before doing anything.

  3. Safety as features

    Riders confirm the taxi by its door code and can report a passenger, and every ride ends with a rating.

05 Architecture

  1. 01Android appReact Native
  2. 02AuthFirebase Auth, token in Keystore
  3. 03Flask APIAccount, rideshare, taxi
  4. 04FirebaseOne model layer
  5. 05MapsRoutes and fare estimates

React Native client, Flask API, Firebase for auth and data, Google Maps for routes and fares.

06 Stack

React Native
One JavaScript codebase for the Android app.
Python
Flask
The API, split into controllers per domain.
Firebase
Google Maps Platform
Routes and fare estimates (built by a teammate).

07 Links & sources

The project’s links and the public sources this write-up draws on.

08 Also on GitHub

All repositories on GitHub →