An open API service indexing awesome lists of open source software.

https://github.com/asif-khan-2k19/quickride

QuickRide is a MERN Stack based ride booking web application that replicates the core functionalities of Uber, OLA, etc. This app includes user and captain registration and login, ride requests, real-time geolocation, fare calculation, and ride management.
https://github.com/asif-khan-2k19/quickride

express geolocation-api googlemaps-api jwt-auth mongodb nodejs ola-clone quickride react ride-booking-app ride-hailing tailwindcss uber uber-clone

Last synced: about 2 months ago
JSON representation

QuickRide is a MERN Stack based ride booking web application that replicates the core functionalities of Uber, OLA, etc. This app includes user and captain registration and login, ride requests, real-time geolocation, fare calculation, and ride management.

Awesome Lists containing this project

README

          



# QuickRide - Full Stack Ride Booking Application

QuickRide is a feature-rich project built using modern web technologies. It replicates the core features and functionalities of the existing ride booking platforms, including **user authentication**, **ride booking**, **real-time location tracking**, **fare calculation** and **real-time communication**. The application features a clean and responsive user interface, ensuring an intuitive user experience. Designed as a learning and portfolio project, it showcases skills in **frontend and backend development, API integration, and real-time features**.

---

⭐ **If you found this project helpful or interesting, please consider giving it a star on [GitHub](https://github.com/asif-khan-2k19/QuickRide)! It helps others discover the project and keeps me motivated to improve it.** ⭐

---

## πŸ“š Table of Contents

1. [Tech Stack](#tech-stack)
2. [Features](#features)
3. [Screenshots](#screenshots)
4. [Quick Start](#quick-start)
5. [Environment Variables](#environment-variables)
6. [Contributing](#contributing)
7. [License](#license)

---

## βš™οΈ Tech Stack



| **Category** | **Technologies / Tools** |
| ------------------ | --------------------------------------------------------------------- |
| **Frontend** | HTML, CSS, React.js, Tailwind CSS, Google Maps |
| **Backend** | Node.js, Express.js, MongoDB, Socket IO, NodeMailer, Google Maps APIs |
| **Authentication** | JWT (JSON Web Token), bcrypt |
| **Deployment** | Vercel, Render |
| **Dev Tools** | Postman, npm, Nodemon, ESLint, Custom Logger |

---

## ✨ Features

### πŸ” Authentication & Authorization

- Secure email/password login with full form validation
- Email verification and logout functionality
- Forgot and change password support
- Role-based access control (User and Captain)
- Session handling and route protection (unauthorized access is blocked)

### πŸ§‘πŸ» User Management

- Edit personal profile details (name, email, phone)
- Ride history tracking
- Form validation for all user inputs

### πŸ“ Location & Mapping

- Pickup and destination selection with address auto-complete
- Real-time location tracking on interactive maps
- Route visualization with distance and estimated time calculation

### πŸš– Ride Booking System

- Supports multiple ride types: Car, Bike, and Auto
- Live ride status updates: Pending, Accepted, Ongoing, Completed, Cancelled
- Concurrency control: A ride request can only be accepted by one captain
- Automatic ride cancellation after timeout
- Accurate fare estimation based on distance and time

### πŸ”„ Real-Time Updates

- Socket-based updates for ride status and live locations
- Real-time in-app chat between rider and captain
- Chat messages are stored in the database with timestamps
- Access control ensures only assigned rider and captain can view the conversation

### πŸ‘¨β€βœˆοΈ Captain (Driver) Interface

- Accept or reject incoming ride requests
- Real-time updates for trip progress
- Role-specific access to ride-related actions

### 🧰 System Utilities

- Custom logger to persist frontend and backend logs in the database
- Force reset feature to clear all local app data and recover from unstable states
- Popup alert system for immediate feedback (success, error, warning)

---

## πŸ–ΌοΈ Screenshots

Authentication

![User Auth](./Frontend/public/screens/user-auth.png)

Sidebar Navigation

![Sidebar](./Frontend/public/screens/sidebar.png)

User Module

![User Module](./Frontend/public/screens/user-module.png)

Captain Module

![Captain Module](./Frontend/public/screens/captain-module.png)

---

## ⚑ Quick Start

### πŸ“ Project Structure

```

πŸ“‚ Backend // Node.js + Express server
πŸ“‚ Frontend // React.js application

```

### 1. Clone the Repository

```bash
git clone https://github.com/asif-khan-2k19/QuickRide.git
cd QuickRide
```

### 2. Install Dependencies

#### Frontend

```bash
cd Frontend
npm install
```

#### Backend

```bash
cd ../Backend
npm install
```

### 3. Run the Application

#### Frontend (React + Vite)

```bash
npm run dev
```

#### Backend (Node.js + Express)

```bash
npm run dev
```

### 4. Open the App

- **Frontend**: [http://localhost:5173](http://localhost:5173)
- **Backend**: [http://localhost:3000](http://localhost:3000)

---

## 🌐 Environment Variables

Create `.env` files in both `Frontend/` and `Backend/` directories.
`.env.example` files are already present in the folders.

### Frontend `.env`

```env
VITE_SERVER_URL=http://localhost:3000
VITE_ENVIRONMENT=development
VITE_RIDE_TIMEOUT=90000
```

### Backend `.env`

```env
PORT=3000
RELOAD_INTERVAL = 10
SERVER_URL=http://localhost:3000
CLIENT_URL=http://localhost:5173
ENVIRONMENT=development
MONGODB_PROD_URL=
MONGODB_DEV_URL=mongodb://127.0.0.1:27017/quickRide
JWT_SECRET=
GOOGLE_MAPS_API=
MAIL_USER=
MAIL_PASS=
```

---

## 🀝 Contributing

We welcome community contributions! To contribute:

1. Star this repository
2. Fork this repository
3. Create a new branch (`git checkout -b feature/YourFeature`)
4. Commit your changes (`git commit -m 'Add your feature description...'`)
5. Push to the branch (`git push origin feature/YourFeature`)
6. Create a Pull Request

---

## πŸ“ License

This project is licensed under the [MIT License](LICENSE).

---

**Ready to contribute? Let’s build something amazing together.**