GearShare – Peer-to-Peer Vehicle Rental Platform

HTML, CSS, Java Script, MongoDB | Project Management

Project 1 image

A Snapshot of the Project Page

GearShare is a full-stack web application designed to enable peer-to-peer vehicle rentals. Similar to platforms like Turo, it connects car owners with individuals looking to rent vehicles, offering a decentralized and user-friendly alternative to traditional car rental services. Built with MVC architecture, the platform supports car listings, rental requests, secure user sessions, and administrative approvals—all within a clean, responsive interface.

Tools Used

Car Provider and Seeker

In the GearShare platform, a car provider is an individual who owns a vehicle and lists it on the application for rental. Providers can upload details about their cars—including model, price per day, and availability—and make them visible to potential renters. They are responsible for approving or declining rental requests submitted by seekers and managing their listings through a dedicated dashboard. This role is essential to the platform’s peer-to-peer model, allowing everyday vehicle owners to earn passive income by sharing their unused cars.

A seeker, on the other hand, is a user who browses the platform in search of a vehicle to rent. Seekers can filter listings based on location , date, vehicle type, or price, and submit rental requests to specific providers. Once approved, they gain temporary access to the vehicle for the agreed duration. The seeker experience is designed to be simple and flexible, offering an affordable and convenient alternative to traditional car rental services through direct interaction with car owners.

GearShare for Providers: From Listing to Booking

A car provider on GearShare can manage their listings and rental activity through a clean, role-specific dashboard. They begin by creating vehicle listings using a structured form where they input the car title, daily price, type, description, and an image URL. Once submitted, the listings are displayed in a personalized “My Car Listings” section, showcasing all registered vehicles with detailed metadata including rental rate, vehicle type, and description. Providers can view incoming booking requests submitted by seekers, each with a specified time frame, location, and message. From their requests page, they have full control over approving or rejecting each request, with booking status updates reflected immediately. The provider profile centralizes all this functionality, showing contact information, active listings, and request management tools, making it easy for users to track rental activity and maintain their offerings in the GearShare ecosystem.

Browse. Select. Go: The Car Seeker Experience

A car seeker on GearShare starts by exploring a curated gallery of available vehicles, where each listing displays key details—model name, daily rate, and a brief description—alongside a high-quality image. With intuitive search and filter controls (by name, type, or price), seekers can quickly narrow down options that match their needs. Clicking “View Details” brings up a dedicated car page featuring full specifications, rental ID, and a prominent “Request to Rent” button.

When ready to book, seekers fill out a simple request form overlay—selecting start/end dates, pickup location, and an optional message—and submit their reservation in one click. All active and past requests live in the “My Requests” dashboard, where seekers can monitor status updates (Pending, Approved, or Rejected) and view booking details at a glance. This streamlined workflow ensures a seamless, self-service rental journey from discovery through confirmation.

Database & Design Model

GearShare uses a MongoDB database—accessed via Mongoose—to persist its core entities (Users, Cars, Requests, and Bookings) in separate collections linked by ObjectId references. Providers and seekers are distinguished by a role field in the Users collection, with Cars pointing back to their owner via providerId and Requests tying together seekerId, providerId, and carId. Approved requests spawn immutable Booking records, and each document carries timestamps (createdAt, updatedAt) for auditing and sorting. On top of this data layer sits an Express-based MVC architecture: Models enforce schema validation and helper methods; Controllers implement business logic (e.g., availability checks, request approval) and coordinate model updates; and Views, built with EJS templates and Bootstrap, render dynamic HTML pages for listing cars, submitting requests, and managing profiles. This combination of a document-oriented database with a clear MVC separation ensures both data consistency and maintainable, scalable code.

Coding & Architecture

  1. Node.js/Express MVC with Mongoose models, EJS templates, and Bootstrap UI
  2. MongoDB schemas use ObjectId links and timestamps; role-based auth and input validation ensure security
  3. bcrypt-hashed passwords, Express-session authentication, role-based middleware, plus both client- and server-side input checks to prevent invalid bookings.
  4. Clear folder separation (models/, controllers/, routes/, views/, public/), and development tools like VS Code and MongoDB Compass for rapid iteration.

Scrum-Driven Project Management

  1. Two-week sprints moving from Business Case → Prototyping → Final Implementation.
  2. Sprint planning, daily stand-ups, and sprint reviews enabled quick feedback and iterative refinements.
  3. Eight formal meetings with stakeholder using detailed minutes, governed by a shared Project Charter to keep scope, tasks, and responsibilities aligned.
  4. Backlog tracked through prototype wireframes and milestone schedule; future features (payments, ratings, live-location) maintained for ongoing development.

Thank you for taking the time to view my project!