With the current situation at hand, it has become challenging to leave the comforts of home and more importantly know when to visit places like supermarkets to stock up on daily essentials. People plan their trip to the supermarket based on their convenience (e.g. after work) but often end up in a crowded situation with long queues. This poses a potential health risk not only for the shopper but also for his/her fellow shoppers.

What it does

  • displays nearby supermarkets based on your current location (i.e latitude & longitude)
  • displays current status (based on popular times data)
  • displays LIVE status (depending on availability of data)
  • links to Google Maps for more information or to get directions from your current location to selected supermarket.

How I built it

  • used NodeJS + Express for the backend
  • used ReactJS (Hooks) + Material-UI for the frontend
  • implemented web scraping logic to get popular times data as it was not available from the standard Google APIs
  • backend + frontend deployed on Heroku

Challenges I ran into

  • coming up with a solution that can be readily used by anyone and anywhere in the world (without the hassle of downloading apps or requiring user registration/input)
  • initial idea was for users to update the crowd level of supermarkets that they've been to, but realised that there's not much incentive for them to do so
  • data scraping from APIs that power Google Maps was not entirely accurate as response was not of a fixed format in general

Accomplishments that I'm proud of

  • completing backend + frontend within 24 hours
  • application is kinda not incurring any costs (hosted on Heroku free plan + not utilising actual Google Map Developer APIs) (scaling is a separate issue)
  • application does not require much effort from the user (i.e. simply load the url on the browser & that's it!)

What I learned

  • react hooks
  • how to scrape data from public APIs/pages (somewhat)

What's next for crowdy

  • improve accuracy of data scraping
  • support waiting times (if any)
  • support distance [DONE]
  • support sorting by distance/crowd [DONE]
  • support other types of locations where crowded situations may occur
    • shopping malls [DONE]
    • pharmacies
  • integrate to actual Google Maps Developer APIs for nearby search (but requires API key and additional costs)
+ 1 more
Share this project: