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
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.
Tokens in the Android Keystore
The session token lives in the Keystore, and the API’s endpoints check it before doing anything.
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
- 01Android appReact Native
- 02AuthFirebase Auth, token in Keystore
- 03Flask APIAccount, rideshare, taxi
- 04FirebaseOne model layer
- 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
- v2
- fullstack-portfolioA full stack portfolio made using React, Sass, and Sanity
- movie_websitePersonal movies from Firebase database to full-stack web application
- mathcheckTries to find all open assignments in Childsmath for course 2Z03 and send a SMS to your number. Uses Selenium and Python.
- Automate-runtimes-genres-from-movie-titlesRead google sheets database of movie titles and write runtimes and genres, from IMDB, into the database