Web Technologies Project on Car Pooling Application

A brief walkthrough of the Car Pooling project

This Car Pooling application allows users to:

  • Become a member of the carpooling community (register and login)
  • Join rides
  • Offer rides
  • See the most popular rides taken

Joining A ride

The user searches for:

  • Source (starting point)
  • Destination (drop off point)

On selecting a ride, choose the number of seats (based on availability)

The cost of the ride will be displayed and will ask for verification of booking the ride

Offering the ride

A registered user creates a ride by

  • Selecting the starting point (source)
  • Selecting the endpoint (destination)
  • Entering car model (registration)
  • Enter the number of seats available
  • Cost per kilometer
  • The offered pickup points

 Inclusion of features

  • Webservices using RESTful APIs
  • Ajax Patterns
  • Submission throttling
  • To populate the source and destination of the list being searched
  • Multistage download
  • On loading the home page, the images are downloaded one after the other
  • Comet
  • SSE (server-sent events)
  • To view the topmost rides driven/ joined

Use of framework

  • RESTful API’s
  • Flask micro framework
  • Bootstrap for CSS
  • Mongo DB (for the database)

Intelligent Component

  • Calculate the fare: – ((distance * cost/km) / seats), Distance is calculated using the haversine algorithm
  • haversine algorithm – Takes two points (their latitude and longitude) and used to calculate the distance
  • To select pickup points – K nearest neighbors used
  • The intelligent component is trained using the dataset having rows as Place name, latitude, longitude
  • The model generated is used to predict the nearest neighbors of any given place
  • To decrease calculation time a pre-computed matrix of given places with respect to  distance  from all other points (places) is used

Two such matrices are used:

  • Distance matrix
  • Indexes matrix

Leave a Reply

Your email address will not be published. Required fields are marked *