Ride-Hailing App Project Documentation
1. Project Overview
Project Name: Tariqi
Technology Stack:
      Frontend: Flutter
      Backend: Node.js (Express.js)
      Database: MongoDB
      Authentication: JWT / Firebase Auth
      Real-time Communication: WebSockets
      Payment Integration: Stripe / Paymob
      Maps & Routing: Google Maps API / OpenStreetMap
Project Objective:
SmartRide is a dynamic ride-hailing platform that allows users to create and join rides based
on their preferred routes, time constraints, and driver schedules. Unlike traditional ride-
hailing services, SmartRide offers ride-sharing optimization by considering multiple user
preferences while ensuring efficiency and time-bound rides.
2. User Scenarios
User Registration & Authentication
      Users sign up/login using email, phone number, or social accounts.
      Drivers and passengers have different profile settings.
      Users set their home/work locations for quick access.
Ride Creation & Matching
      Passengers: Enter pickup & destination, preferred time range.
      Drivers: Set available ride schedule and route.
      The system matches passengers based on similar routes and timing.
      Rides are auto-adjusted to optimize shared routes.
      Passengers receive ride options based on time and available seats.
Dynamic Ride Management
      The system calculates the best pickup/drop-off sequence.
      If a new passenger joins, the estimated arrival time is recalculated.
      A maximum trip duration threshold ensures a fair ride experience.
Real-time Tracking & Notifications
      Live ride status updates via WebSockets.
      Passengers get real-time driver ETA updates.
      Notifications for ride start, delays, and cancellations.
Payments & Rating System
      Cashless payments via Stripe or Paymob.
      Users can rate drivers and fellow passengers.
3. Project Workflow & Structure
Frontend (Flutter)
      Pages:
           o    Login/Register
           o    Home (Search/Create Ride)
           o    Ride Details (Join/Track Ride)
           o    Driver Dashboard (Manage Rides)
           o    Payments & Profile Settings
Backend (Node.js + MongoDB)
      APIs:
           o    User Authentication: /api/auth/signup, /api/auth/login
           o    Ride Management: /api/rides/create, /api/rides/join,
                /api/rides/update
           o    Real-time Updates: WebSocket /ws/rides
           o    Payments: /api/payments/checkout
4. Working Timeline
Phase                      Task                         Duration       Team Members
Week 1   Planning, Setup, Tech Stack Selection          3-4 Days   Everyone
Week 2   User Authentication (Frontend & Backend)       1 Week     Backend (2), Frontend (2)
Week 3   Ride Creation & Matching Algorithm             1 Week     Backend (2), Frontend (2)
Week 4   Real-time Tracking & WebSockets                1 Week     Frontend (2), Backend (2)
Week 5   Payments & Notifications                       1 Week     Backend (2), Frontend (2)
Week 6   Testing, Debugging, UI Enhancements            1 Week     Everyone
Week 7   Final Deployment & Presentation                2-3 Days   Everyone
Conclusion
This document outlines the structure, workflows, and key features of the SmartRide project.
The team will follow an agile approach, iterating on features while ensuring smooth
integration between frontend and backend components. With structured APIs and real-time
tracking, we aim to deliver a seamless ride-sharing experience that optimizes travel time
while enhancing user convenience.