Projects/No Car No Problem — Ride-sharing platform
No Car No Problem — Ride-sharing platform

No Car No Problem — Ride-sharing platform

Full ride-sharing app with customer/driver/admin/support roles, real-time chat, geospatial ride matching, and driver verification workflow.

Next.jsReactTypeScriptMUIExpressPrismaPostgreSQLPostGISSupabaseSocket.IOMapLibreChart.js

About this project

Built by a 9-person team over three Agile sprints. The system is a full transportation platform with four user roles: customers book rides, drivers accept and fulfil them, admins verify driver applications, and support staff handle tickets. The backend uses Prisma with PostgreSQL PostGIS so pickup/destination/driver_location are stored as native point types and queried geographically. The trickiest part was the ride state machine — every ride moves through on_the_way → arrived → picked_up → completed with an end_reason (completed / customer_canceled / driver_canceled / no_show), and the driver lifecycle is a separate three-state machine (waiting → verified or rejected) with admin attribution stored on every transition.

  • Four-role inheritance modelled in Prisma (customer / driver / admin / support all FK to user)
  • PostGIS point columns for pickup, destination, driver_location — geo queries handled natively
  • Socket.IO chat keyed per ride, plus support ticket system tied to specific rides
  • MapLibre GL on the frontend, Chart.js dashboards, Playwright E2E tests

Key features

Four roles

Customer / driver / admin / support

Geospatial rides

PostGIS point storage + lookup

Per-ride chat

Socket.IO room per ride

Ride lifecycle

on_the_way → arrived → picked_up → completed


Screenshots

User profile

Selecting location

Driver accepting a passenger

Support Ticket


Tech stack

Next.js
React
TypeScript
MUI
Express
Prisma
PostgreSQL
PostGIS
Supabase
Socket.IO
MapLibre
Chart.js

Other projects