How dhanunjaya23-02-2006/uber-clone works
Uber Clone is a two-sided ride-hailing app. Riders authenticate, search addresses, review route and fare options, request and track rides; captains authenticate, share availability and location, accept nearby requests, verify pickup by OTP, and complete payment in cash or manually confirmed UPI. The backend routes these actions through controllers and services into MongoDB, with OpenRouteService and Socket.IO integrations. Frontend page-to-page and API wiring is only partly shown, so documented capabilities are represented without asserting unsampled call relationships.
Main entry points: ride.controller.js Ride Lifecycle · App.jsx Client Routes · auth.middleware.js Token Authorization · ride.routes.js Ride Routes
Components 25
Rider and Captain Client
- Client Routes
frontend/src/App.jsx - Rider Trip UI
frontend/src/pages/Home.jsx - Rider Ride UI
frontend/src/pages/Riding.jsx - Captain Availability
frontend/src/pages/CaptainHome.jsx - Captain Ride UI
frontend/src/pages/CaptianRiding.jsx
API and Identity
- Rider Authentication
backend/controllers/user.controller.js - Captain Account
backend/controllers/captian.controller.js - Token Authorization
backend/middlewares/auth.middleware.js - Rider Routes
backend/routes/user.routes.js - Captain Routes
backend/routes/captian.routes.js - Map Routes
backend/routes/maps.routes.js
Ride Operations
- Ride Routes
backend/routes/ride.routes.js - Ride Lifecycle
backend/controllers/ride.controller.js - Fare Calculation
backend/services/ride.service.js
Persistence and Mapping
- Rider Records
backend/models/user.js - Captain Records
backend/models/captian.model.js - Ride Records
backend/models/ride.model.js - Token Blacklist
backend/models/blacklistToken.model.js - Map Queries
backend/controllers/map.controller.js - Geocoding and Routing
backend/services/maps.services.js
Realtime Dispatch
- Socket.IO Dispatch
backend/socket.js
Other components
- Rider
- Captain
- OpenRouteService
- MongoDB
Connections 37
- Rider → Client Routes: uses
frontend/src/App.jsx - Captain → Client Routes: uses
frontend/src/App.jsx - Client Routes → Rider Trip UI: routes to
frontend/src/App.jsx - Client Routes → Rider Ride UI: routes to
frontend/src/App.jsx - Client Routes → Captain Availability: routes to
frontend/src/App.jsx - Client Routes → Captain Ride UI: routes to
frontend/src/App.jsx - Rider Routes → Rider Authentication: dispatches
backend/routes/user.routes.js - Captain Routes → Captain Account: dispatches
backend/routes/captian.routes.js - Ride Routes → Ride Lifecycle: dispatches
backend/routes/ride.routes.js - Map Routes → Map Queries: dispatches
backend/routes/maps.routes.js - Rider Routes → Token Authorization: authorizes
backend/routes/user.routes.js - Captain Routes → Token Authorization: authorizes
backend/routes/captian.routes.js - Ride Routes → Token Authorization: authorizes
backend/routes/ride.routes.js - Rider Authentication → Rider Records: reads and writes
backend/controllers/user.controller.js - Rider Authentication → Token Blacklist: blacklists
backend/controllers/user.controller.js - Captain Account → Captain Records: reads and writes
backend/controllers/captian.controller.js - Captain Account → Ride Records: aggregates stats
backend/controllers/captian.controller.js - Captain Account → Token Blacklist: blacklists
backend/controllers/captian.controller.js - Token Authorization → Rider Records: loads rider
backend/middlewares/auth.middleware.js - Token Authorization → Captain Records: loads captain
backend/middlewares/auth.middleware.js - Token Authorization → Token Blacklist: checks blacklist
backend/middlewares/auth.middleware.js - Ride Lifecycle → Ride Records: updates rides
backend/controllers/ride.controller.js - Ride Lifecycle → Rider Records: loads rider socket
backend/controllers/ride.controller.js - Ride Lifecycle → Geocoding and Routing: geocodes pickup
backend/controllers/ride.controller.js - Ride Lifecycle → Fare Calculation: gets fare
backend/controllers/ride.controller.js - Ride Lifecycle → Socket.IO Dispatch: sends ride events
backend/controllers/ride.controller.js - Fare Calculation → Geocoding and Routing: gets route metrics
backend/services/ride.service.js - Map Queries → Geocoding and Routing: requests map data
backend/controllers/map.controller.js - Geocoding and Routing → Captain Records: searches nearby
backend/services/maps.services.js - Geocoding and Routing → OpenRouteService: requests geocoding and routes
backend/services/maps.services.js - MongoDB → Rider Records: stores
- MongoDB → Captain Records: stores
- MongoDB → Ride Records: stores
- MongoDB → Token Blacklist: stores
- Rider Trip UI → Ride Routes: requests rides
- Captain Availability → Ride Routes: accepts offers
- Captain Ride UI → Ride Routes: updates ride