<<<<<<< HEAD
RydZo is a person-to-person bike rental platform designed to connect bike owners with customers in a secure and trusted environment. It solves the chaos of unverified rentals by introducing strong identity verification, digital agreements, and a seamless booking flow.
RYDZO is a secure and reliable bike rental aggregator platform designed to connect bike owners with customers. It facilitates seamless booking, identity verification, and secure rental agreements.
This project is built as a college-level submission, focusing on a clean architecture, role-based access control, and essential features for a rental marketplace.
- Authentication: Secure JWT-based auth with Role-Based Access Control (RBAC).
- User Roles: Separate flows for Customer, Owner, and Admin.
- Verification System: Mandatory document uploads (Driving License, Aadhaar, etc.) with Admin approval.
- Bike Listings: Owners can list bikes with photos and documents (RC, Insurance).
- Booking Management: Complete rental lifecycle (Pending -> Confirmed -> Ongoing -> Completed).
- Digital Agreement: Mandatory rental agreement acceptance before booking confirmation.
- Ride Status: Simple status tracking for active rentals.
- Modern UI: Clean and responsive design using a Purple/Orange color scheme.
- Dashboard: Role-specific dashboards for Customers, Owners, and Admins.
- Browse Bikes: Search and filter available bikes.
- Booking Flow: Easy-to-use booking interface with date/time selection.
- Profile Management: Profile updates and document status tracking.
- Frontend: React.js, Tailwind CSS, React Router, React Icons
- Backend: Node.js, Express.js
- Database: MongoDB (Mongoose ODM)
- Authentication: JSON Web Tokens (JWT)
- Image Storage: Cloudinary (for profile and bike images)
RydZo/
├── backend/
│ ├── models/ # Database schemas (User, Bike, Booking, Agreement)
│ ├── routes/ # API endpoints
│ ├── controllers/ # Business logic
│ ├── middleware/ # Auth and validation middleware
│ └── server.js # Entry point
│
├── frontend/
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Application pages
│ │ ├── context/ # State management (Auth)
│ │ └── App.jsx # Main React component
│ └── package.json
│
└── README.md # Project documentation
- Node.js (v14 or higher)
- MongoDB (Local or Atlas)
- Cloudinary Account (for image uploads)
-
Clone the repository:
git clone <repository_url> cd RydZo
-
Install Backend Dependencies:
cd backend npm install -
Install Frontend Dependencies:
cd ../frontend npm install -
Environment Setup:
- Create a
.envfile in thebackendfolder. - Add the following variables:
PORT=5000 MONGODB_URI=your_mongodb_connection_string JWT_SECRET=your_jwt_secret CLOUDINARY_CLOUD_NAME=your_cloud_name CLOUDINARY_API_KEY=your_api_key CLOUDINARY_API_SECRET=your_api_secret
- Create a
.envfile in thefrontendfolder.REACT_APP_API_URL=http://localhost:5000
- Create a
-
Run the Application:
- Backend:
cd backend && npm run dev - Frontend:
cd frontend && npm start
- Backend:
- Register: Create an account as a "Customer" or "Owner".
- Verify: Upload required documents in the Profile section. These must be approved by an Admin.
- Owner: List a bike once verified.
- Customer: Browse bikes and make a booking request.
- Booking Flow:
- Customer sends request.
- Owner accepts request.
- Customer accepts Digital Agreement.
- Owner hands over bike (starts ride).
- Owner receives bike back (ends ride).
- Data Privacy: Passwords are hashed using bcrypt.
- Authorization: Protected routes ensure users access only permitted features.
- Validation: Input validation for all forms and API requests.
This project is created for educational purposes.
ad56538 (Initial commit: RydZo full-stack project)