The Problem

Building a production-grade ride-hailing mobile app requires integrating maps, payments, authentication, real-time ride state, and a backend database. Most tutorials stop at a static UI mockup. This repo demonstrates a full-stack implementation—auth via Clerk, payments via Stripe, location via Google Maps, and a Postgres-backed API layer—so developers can see how these systems work together in one codebase.

What This Does

The app is an Expo/React Native Uber clone with a working end-to-end ride flow: onboarding, sign-in/sign-up, home map with live location, ride search with Google Places autocomplete, ride selection and confirmation, Stripe payment, and a profile screen. The app/(root)/(tabs)/ folder holds the four main tabs (home.tsx, rides.tsx, chat.tsx, profile.tsx), and app/(root)/ contains the multi-step booking flow (find-ride.tsx, book-ride.tsx, confirm-ride.tsx).

The backend is an Expo Router API layer under app/(api)/ with route handlers for users, drivers, rides, and Stripe payment intents (user+api.ts, driver+api.ts, ride/create+api.ts, (stripe)/pay+api.ts). State is managed with Zustand (store/index.ts), and the UI is styled with Tailwind/NativeWind (tailwind.config.js, components/). The lib/ folder contains the auth, fetch, map, and utility helpers.

How To Use It

This is a tutorial companion repo (YouTube: JavaScript Mastery), so setup assumes you follow the video. The package.json lists dependencies; install with npm install.

Configuration requires environment variables for Clerk, Google Maps, Stripe, and a Postgres connection string. The README points to the tutorial for exact key names—they are not documented in the repo itself.

Running it is a standard Expo project: npx expo start. The entry point is app/index.tsx.

npm install npx expo start

The repo does not include a .env.example, so you'll need to source required keys from the tutorial.

Real-World Use

This is a solid reference architecture for a location-based service MVP. The API route pattern (app/(api)/ride/create+api.ts) shows how to expose serverless endpoints from an Expo app, and the Stripe integration (app/(api)/(stripe)/pay+api.ts) is a working payment flow you can adapt. A team building a similar product could fork this, swap the Postgres schema for their own, and keep the client structure.

Code Health & Issues

Med - No tests - No test files exist. The ride booking, payment, and auth flows are untested, which is risky for a payment-enabled app. Med - No CI/CD - No .github/ or CI config. There's no automated build or test gate. Med - No LICENSE - Usage and redistribution rights are unclear. This is a tutorial repo, but still a blocker for commercial use. Low - No env template - No .env.example; required keys are only in the video tutorial. Onboarding friction for anyone not watching it. Low - Monolithic API - app/(api)/user+api.ts and driver+api.ts mix auth, DB, and business logic. Fine for a demo, but not a pattern to copy for scale.

The Bottom Line

A solid, working full-stack reference for an Expo ride-hailing app. The code is coherent and the integration points (Stripe, Clerk, Postgres) are real and functional. It's best used as a learning resource or a starting scaffold—not a production codebase, given the missing tests, CI, and license.