Due to the current situation in the world, it is very difficult for people to even dare to step foot outside, let alone go to the beach. Even if people desire to go to the beach, the lack of a solid plan including food options, lodging, etc all contribute to the lack of enjoyment on some of these beach trips.
What it does
Beach Buddy takes in your address, zip code, or city name and scours the internet for the top 5 beaches near you, based on their beach rating. This beach rating is uniquely calculated with our novel machine learning algorithm, built on PyTorch. This algorithm takes into account several factors:
- Crowding at the beaches (important for maintaining social distancing)
- Weather/ Temperature (so you don’t have to raincheck)
- Distance from your inputted location to the beach (so you don't have to travel too far)
- Nearby (within 1 mile) food options to the beach (because we know you get hungry)
- Local lodging options (if the beach is too amazing to take in for one day, why not stay in a hotel and explore the beach again the next day)
Using these 5 main factors, and several other small components, Beach Buddy generates a rating out of 10 to recommend you the perfect beach for your next trip.
How I built it
Before this project, I was still getting introduced to the idea of creating a project. This project further developed my skills in the end-to-end programming pipeline. I started by first mapping out what I had to do:
- Build a basic Flask application
- Research and understand which factors go into deciding/planning a trip to the beach
- Find APIs/modules to get data about these various factors
- Create and train a machine learning model that optimizes variables listed above
- Portray all results in a pleasant manner on Flask application
- Add home page, aesthetic images, and details page that allows users to look at more details about each beach
- Add review-based content, so that people can add reviews for each beach and recommend to their friends on social media platforms
I followed this process thoroughly and used various Google Cloud Services to perform data/request collection. I also used various APIs including OpenWeatherAPI, WaveTide from NOAA, and various others. I trained my machine learning model on PyTorch, which I was completely new to prior to this project.
Originally, I had meant for Beach Buddy to be an IOS/Android application, but I was not very familiar with Flutter. Still, I was able to make some progress and created a basic visual interface that I will definitely build upon in the next few days.
I also learned the importance of using various REST APIs including Coastal CA and various location-based npm packages.
Challenges I ran into
I was very new to the core fundamentals of three very important parts of my project:
- Flutter (Xcode/Android-based applications)
- Flask (for running my python backend)
- PyTorch (for training machine learning models) I often ran into various errors, but my inspiration for this project motivated me to keep going. I often consulted YouTube videos about these topics and StackOverflow forums.
Accomplishments that I'm proud of
This project is nothing like one I’ve done before. I was very new to the use of Flask, Flutter, and PyTorch but learning the main fundamentals of each has really made me proud and has encouraged me to learn more about these various softwares.
I am proud that I completed this project, which has several components, all by myself within the span of hours.
What I learned
I fully learned the end to end programming pipeline of sorts. In particular, I learned the ins and outs of the various APIs I worked with and understanding how to train models on PyTorch. I also built up a strong intuition on using both Flutter and Flask.
What's next for Beach Buddy
There is a lot in store for Beach Buddy, as can be seen in the video demonstration. We have yet to fully deploy the Flask application and will be finishing that up soon by deploying onto Google Cloud. Also, as I have learned more about Flutter and the Dart language used in it, I look forward to creating a similar interface like the Flask application onto an IOS/Android platform for millions of people to use throughout the world.
As my previous project relied heavily on Facebook Messenger, I thought to brush up my skills in that domain by creating a Beach Buddy Facebook chatbot, so that people can quickly converse with a bot, rather than doing a website search (although using our web application would definitely provide more information).
I will continue posting updates to this submission, so keep an eye out for more about Beach Buddy!