Shreyas K Site Logo Image

CrowdSense

The CrowdSense is a tool designed to estimate waiting times at restaurants using Google Maps' Popular Times data, helping users plan their visits more efficiently. It provides helpful estimates, though the accuracy may vary based on current conditions.

1 / 10
Place photo
2 / 10
Place photo
3 / 10
Place photos
4 / 10
Place photo
5 / 10
Place photo
6 / 10
Place photo
7 / 10
Place photo
8 / 10
Place photo
9 / 10
Place photo
10 / 10
Place photo

Estimated Waiting Time

Estimated Waiting Time:

Project Overview

This project, CrowdSense, is a web application designed to help users predict wait times at various locations based on their popular times data. It integrates the Google Places API to retrieve detailed information about places, such as their name, address, and ratings, while also utilizing the populartimes API to analyze how busy a location is during different hours of the day.

The core functionality lies in providing users with estimated wait times by mapping the busy percentage (derived from popular times data) to a specific wait time range. The app displays this data visually through interactive charts, making it easy for users to assess how crowded a place might be at different times. The system uses asynchronous programming to fetch data efficiently and caches results for up to ten days to minimize redundant API calls.

The app is particularly useful for users who want to avoid long waits at popular locations, helping them plan their visits during less busy times. With its integration of Google Maps and the ability to search for any place, the application combines convenience with practical time-saving insights.

Features and Functionalities

Real-time Wait Time Estimation: Fetches current wait times using the popular times data of a location and converts the busy percentage into a practical wait time range.

Google Places Integration: Users can search for places via the integrated Google Maps interface, which provides place details such as name, rating, and photos.

Asynchronous Data Fetching: Uses asynchronous requests for fetching data from the Google Places API to provide fast and non-blocking user experiences.

Busy Chart Visualization: Displays busy hours data in an interactive chart, allowing users to visualize how crowded a place may be at different times of the day.

Automatic Caching: Results are cached for ten days to optimize API usage and reduce redundant requests.

Tools Used

HTML
CSS
JavaScript
Flask
aiohttp
aiocache
Google Cloud
Google Places API
populartimes API
pytz
Google Maps JavaScript API
Chart.js
Git
Nginix
Google Places Autocomplete
Docker Compose
AWS EC2
AWS S3