Changes e
Changes e
TEAM MEMBERS:
[Link] - 23BCE20106.
[Link] - 23BCE20127.
M. LOKESH - 23BCE20132.
INDEX
1. INTRODUCTION:
1.1 Objectives
1.2 scope
2. REQUIRMENTS SPECIFICATIONS:
2.1 Functional Requirements
3. MODELING:
3.1 Use Case Diagram
3.6 ER Diagram
4. IMPLEMENTATION:
4.1 Pseudo code
5. TESTING:
5.1 System testing
5.2 Test objectives
6. RESULTS.
7. CONCLUSION.
1. INTRODUCTION
1.1 OBJECTIVE
This document's goal is to outline requirements for a long-distance ride-sharing program. This
module makes it feasible for users to connect with drivers who are providing long-distance
rides in a smooth and effective manner. Important goals consist of:
enabling drivers to register and post their journeys using an easy-to-use interface, complete
with information about the location, available seats, and prices. Enabling users to sign up for
the platform in order to look for and reserve long-distance transportation. Displaying real-time
booking information, such as trip confirmations and seat availability.
1.2 SCOPE
For long-distance travel, the concept offers a ride-sharing service that links drivers and
passengers. It is designed for drivers who want to split gasoline expenses or consumers
searching for inexpensive travel options.
The system consists of: Functional requirements include the ability for drivers to register and
post trip information, such as the route, departure time, number of seats available (e.g., three
cab seats available), and fare per seat. In addition to booking long-distance taxis, passengers
can register and look for rides by destination.
The platform addresses the lack of a system for long-distance ride-sharing. Drivers can manage
trip postings (e.g., Hyderabad to Vijayawada with 3 vacant seats), and passengers can book
rides in real time.
1.5 REFERENCES
1.7 OVERVIEW
The system includes two main sections:
1. Overall Description: Describes user roles, trip posting, and booking flow.
[Link] SPECIFICATIONS
• Drivers and passengers register with personal details (drivers include vehicle
information).
• Drivers post trips with details like route, departure time, available seats, and fare.
• Passengers search for rides by route and date, view trip details, and book seats.
4. Real-Time Updates:
• Passengers and drivers can provide ratings and feedback after trips.
8. Optional Feature:
EVALUATION:
• The specifications guarantee that the system will perform as intended, including
efficient trip posting, booking administration, and real-time updates to satisfy user
demands.
DESIGN:
EXCEUTION:
• To ensure functionality and integration, code is generated for every module, including
booking management, trip publishing, and user registration.
EXAMINING:
UPKEEP:
i. PERFORMANCE REQUIREMENTS
• The system shall ensure user interface screens load within two seconds.
• Search queries for available rides and trip details shall respond within five seconds.
• The system shall be developed using HTML, CSS, and JavaScript for the front end and
[Link] or Python for backend APIs.
iii. RELIABILITY
• The system shall ensure error-free functionality during the launch and perform consistently
under expected loads.
iv. AVAILABILITY
• The system shall maintain an uptime of 99.99% to ensure consistent availability for
both drivers and passengers.
v. PORTABILITY
• The application shall be accessible across devices, including desktops, laptops, and
mobile phones.
• It shall be compatible with major operating systems, including Windows, macOS, iOS,
and Android.
vi. MAINTAINABILITY
• The system shall support plugin-based enhancements for new features like payment
gateways or advanced analytics.
• Regular updates for bug fixes, security patches, and new functionalities will be
supported.
3. MODELING
3.1 Use Case Diagram
Use Case Diagram Explanation:
A Use Case Diagram helps to understand how different users interact with the system. In this
ride-sharing project, there are three main users:
3. Admin – The system manager who handles user verification and ride monitoring.
How the system works:
• User Registration/Login – A new user must sign up by entering their name, email or
phone number, and password. This ensures security and user identification.
• Booking a Ride – The passenger enters their pickup and destination details, and the
system shows available rides.
• Posting a Ride – If a driver is traveling somewhere and wants to take passengers, they
enter the details like starting point, destination, available seats, and time.
• Confirming a Booking – Once a ride is booked, the system notifies the driver and
passenger. The passenger gets the driver’s contact details to communicate directly.
• Payment Process – The system provides different payment options such as cash, UPI,
card, or wallet.
• Ride Status & Notifications – The system updates passengers and drivers about any
cancellations, delays, or confirmations.
• Admin Role – The admin ensures that only verified users access the system and helps
in case of disputes or issues.
3.2 Class Diagram
Class Diagram Explanation: A Class Diagram is used to show the structure of the system
by defining different classes, their attributes (data), and methods (functions). It helps in
understanding how different parts of the ride-sharing system work together.
Main Classes in the Ride-Sharing System:
1. User Class
b) Attributes: user_id,name,email,phone_no,password,role(passenger/driver)
2. Ride Class
3. Booking Class
4. Payment Class
5. Admin Class
Description:
The Activity Diagram represents the step-by-step workflow of the Passenger Module in the
RideSharing System. It shows how a passenger registers, logs in, books a ride, and views ride
history, along with decision points such as authentication and ride confirmation.
Passenger Registration:
• User enters details (name, email, phone, password, address).
Passenger Login:
Ride Booking:
Ride History:
Logout Process:
6. Database Component – Stores user details, ride details, booking information, and
payment records.
7. Notification Service – Sends updates to users regarding ride confirmations,
cancellations, and reminders.
1. Lifelines – Represent different entities like User, System, Ride Management, Booking
System, and Payment Gateway.
1. User Registration/Login
a) The user enters login details (name, email,password).
booking request.
the user.
This Sequence Diagram clearly illustrates the step-by-step interactions, ensuring smooth
communication between users and the system.
3.6 ER Diagram
• User - Booking - A user (passenger) can make multiple bookings, but each booking
belongs to one user. (One-to-Many)
• User - Ride - A user (driver) can create multiple rides, but a ride is hosted by only one
driver. (One-to-Many)
• Ride - Booking - A ride can have multiple bookings, but a booking is linked to only one
ride. (One-to-Many)
This E-R Diagram helps in designing the database structure by clearly defining how different
elements are connected, ensuring data consistency and efficient management of ride-sharing
operations.
3.7 Deployment Diagram
as:
2. Application Server
3. Database Server
a) Uses MongoDB to store user details, ride details, bookings, and payment
transactions
a) Google Maps API → Used for location tracking and route optimization
a) Client Devices ↔ Application Server → Users interact with the system via web browsers
or mobile apps
b) Application Server ↔ Database Server → The app server retrieves and stores data in
the database
c) Application Server ↔ External Services → Fetches location details from Google Maps
and processes payments via payment gateways.
3.8 Object Diagram
In the ride-sharing system, the object diagram represents instances of users, rides,
bookings, and payments at a specific time.
Main Objects in the System:
1. User Object (Passenger & Driver)
a) Passenger1: User {name: "Amit", contact: "9876543210"}
b) Driver1: User {name: "Raj", contact: "9123456780"}
c) Represents a registered passenger and driver in the system
2. Ride Object
a) Ride1: Ride {from: "Hyderabad", to: "Vijayawada", date: "2025-02-14",
time: "10:00 AM", seats available: 2}
b) Represents a ride offered by a driver at a specific time and location
3. Booking Object
a) Booking1: Booking {passenger: "Amit", ride: "Ride1", status: "Confirmed"}
b) Represents a confirmed booking for a passenger on a ride
4. Payment Object
a) Payment1: Payment {passenger: "Amit", amount: "500 INR", status: "Paid"}
b) Represents a completed payment for the ride
State Chart Diagram Explanation: The State chart Diagram represents the different
stages of a ridesharing process. It starts when the user opens the app and requests a ride by
entering pickup and drop-off locations. The system then searches for a driver.
• If a driver is found, the ride proceeds.
• When the driver accepts, the ride starts and continues until the destination is reached.
• After completion, the user makes a payment. If payment is successful, the ride is
marked completed; otherwise, a retry is prompted.
System Architecture Explanation: The Ride-Sharing System Architecture outlines the key
components involved in a ride-hailing platform.
It consists of:
1. User Interfaces:
a) Passengers can access the service via a Mobile App or Web App.
b) Drivers use a dedicated Driver App to receive and complete ride requests.
2. Backend Server:
3. Database:
a) Stores User Data, Ride Requests, and Payments for efficient system operations.
4. External APIs:
This is a Data Flow Diagram (DFD) for a Ride-Sharing System that illustrates the flow of data
between different components.
Description of the Data Flow
a) The user initiates a ride request, which is sent to the Ride Matching Service.
a) It processes the request and communicates with the Backend Server to find an
appropriate ride.
3. Backend Server
4. Driver Interaction
5. Payment Processing
a) If the ride requires payment, the system forwards the request to the Payment
Gateway.
b) The Payment Gateway processes the payment and updates the Payment Status.
6. Final Steps
a) The backend notifies the driver and the passenger about the ride confirmation.
Key Components
➢ User Database & Ride Requests: Stores user details and ride data.
[Link]
PSEUDO CODE:
Define handleSubmit function (called when user submits the login form)
Start by:
If the email does not end with the allowed company domains:
➢ At the end of handleSubmit, set loading to false to stop showing the loading
indicator
SAMPLE CODE:
PASSENGER:
navigate = useNavigate();
vehicleType: '',
});
DRIVER :
const DriverVerification = () => { const { user,
navigate = useNavigate();
});
...prev,
[name]: value
}));
};
ADMIN :
const AdminDashboard = () => { const navigate = useNavigate();
setIsMainAdmin(mainAdminStatus);
if (storedAdminList) {
setAdminList([Link](storedAdminList));
}, []);
LOGIN PAGE:
const Login = () => { const { login, isAuthenticated,
isLoading } = useAuth();
return (
/>
</div>
);
};
5. TESTING
5.1 TESTING:
Software testing is a critical element of software quality assurance. The purpose of testing is
to discover errors. Testing is the process of trying to discover every fault or weakness in work
product. The intent of testing is to ensure that the software system meets its requirements
and user expectations and does not fail in an unacceptable manner.
a) To ensure that during operation the system will perform as per specification.
e) A good test case is one that has a high probability of finding a system discovered error.
5.4.1 White Box Testing: White box testing is a testing in which in which the
software tester has knowledge of the inner workings, structure and language of the
software, or at least its purpose. It is purpose. It is used to test areas that cannot be
reached from a black box level.
5.4.2 Black Box Testing: Black box testing is testing the software without any
knowledge of the inner workings, structure or language of the module being tested.
Black box tests, as most other kind of tests, must be written from a definitive source
document, such as specification or requirements document. It is a testing in which the
software under test is treated, as a black box. You cannot “see” into it. The test
provides inputs and responds to outputs without considering how the software works.
5.4.3 Unit Testing: Unit testing is essentially for the verification of the code
produced during the coding phase and the goal is the test the internal logic/program.
In the generic code project, the unit testing is done during coding phase of data entry
forms whether the functions are working or not. In this phase all the drivers are tested,
they are rightly connected or not.
5.4.6 System Testing: System testing ensures that the entire integrated software
system meets requirements. It tests a configuration to ensure known and predictable
results. An example of system testing is the configuration oriented system integration
test. System testing is based on process descriptions and flows, emphasizing pre-
driven process links and integration points.
5.5 Test Cases:
Valid login using Email, password Login successfully Login successfully Test Passed
email
Invalid login( wrong Wrong Email, Password Login failed Login failed Test successfully
email)
Invalid login(wrong Email, wrong password Login failed Login failed Test successfully
password)
Empty fields No email or password Error message Please enter all Test successfully
entered displayed fields
Valid Sign-up Name, Email, Phone Account created Account created Test Passed
,Password, Gender Successfully Successfully
Sign – up with Existing email, other Error message “Email already in use” Test Successful
Existing Email valid details
Sign-up with Existing phone, other Error message “Phone number Test successfully
existing phone valid details already in use”
number
Sign-up with Email, phone Error message “Name is required” Test successfully
missing name ,Password ,Gender
Sign-up with Name, Email, Phone, Error message “Password is Test successfully
missing password Gender required”
Sign-up with Name, Email, Phone, Error message “Please select Test successfully
missing gender Password gender”
Valid Ride From Location, To Ride request Ride request created Test Passed
Request Location, Phone Number created successfully successfully
Missing Empty From Location, Error message "Please enter From Test Successful
From valid To Location, Phone displayed Location"
Location Number
Missing To Valid From Location, Error message "Please enter To Test successfully
Location Empty To Location, Phone displayed Location"
Number
Missing Valid From Location, To Error message “Phone Number is Test successfully
Phone Location, Empty Phone displayed required”
Number Number
Invalid From Location, To Error message “Enter a valid Phone Test successfully
Phone Location, Invalid Phone displayed Number is required”
Number Number
Valid Vehicle Vehicle Model, License Vehicle info Vehicle info updated Test Passed
Update Plate, Color, Year updated successfully
successfully
Missing Empty Model, License Error message "Vehicle Model is Test Successful
Vehicle Plate, Color, Year displayed required"
Model
Missing Model, Empty License Error message "License Plate is Test successfully
License Plate Plate, Color, Year displayed required"
Missing Model, License Plate, Error message "Vehicle Year is Test successfully
Vehicle Year Color, Empty Year displayed required"
Upload Aadhar, Driving License Documents Documents uploaded Test Passed
Verification uploaded uploaded successfully
Documents successfully
Missing No document uploaded Error message "Upload required Test successfully
Verification displayed verification
Documents documents"
View Driver logs in $1500 earnings ₹1500 earnings Test Passed
Earnings displayed displayed
Check Active Driver logs in 0 Active Rides 0 Active Rides Test Passed
Rides displayed displayed
[Link]
Login page
CODE:
const Login = () => { const { login, isAuthenticated,
isLoading } = useAuth();
// If user is already authenticated, redirect to dashboard if (isAuthenticated && !isLoading) { return <Navigate
to="/dashboard" replace />;
}
return ( <div className="min-h-screen flex flex-col items-center justify-center p-4 animate-fade-in"> <div
className="w-full max-w-md mb-8 text-center">
</div>
/>
</div>
);
};
Sign Up page
CODE:
const SignUp = () => { const { signup, isAuthenticated,
isLoading } = useAuth();
// If user is already authenticated, redirect to dashboard if
return (
</div>
/>
</div>
);
};
Dashboard
CODE:
const handleModuleSelect = (role: 'driver' | 'passenger' | 'admin') => {
setUserRole(role);
navigate('/passenger/dashboard');
navigate('/driver/terms'); }
navigate('/admin/login');
};
Passenger Page:
CODE:
const PassengerDashboard = () => {
navigate = useNavigate();
vehicleType: '',
});
Admin Page:
CODE:
const AdminDashboard = () => { const navigate = useNavigate();
setIsMainAdmin(mainAdminStatus);
if (storedAdminList) {
setAdminList([Link](storedAdminList));
}
}, []);
Driver Page:
CODE:
const DriverVerification = () => { const { user,
navigate = useNavigate();
vehicleType: 'car'
});
...prev,
[name]: value
}));
};
[Link]
The ride-sharing project provides a convenient and efficient solution for connecting
passengers with drivers through a secure and user-friendly platform. With features like easy
registration, ride booking, real-time tracking, and driver verification, the system enhances the
overall ride-sharing experience. Additionally, the earnings dashboard for drivers and the
admin control panel ensure smooth operations and monitoring.
However, the project also has certain drawbacks. Security and privacy concerns, last-minute
ride cancellations, and surge pricing can affect user satisfaction. Legal and compliance
challenges, along with system limitations such as high server loads and payment failures, may
impact the platform’s reliability. One major drawback is the lack of a booking module, which
restricts passengers from reserving rides directly through the system. Implementing this
feature in future updates will significantly improve the project’s functionality.
Overall, the project lays a strong foundation for a ride-sharing platform, but further
enhancements, particularly in ride booking and security, are necessary to make it a fully
functional and scalable solution.