Search and filter rating
Filter from list
The paradox of choice often plagues us during mealtimes - faced with so many options, we are unsure of what to choose. This is a big problem especially when we are eating in someplace unfamiliar to us, and we personally faced this problem when trying to find food around NTU today as none of us come here often (a problem made worse by the fact that we were all hungry on many different occasions). It is also pretty troublesome to have to do searches and to read through multiple food blogs. As financially aware students who do not have an income, we are also always on the lookout for discounts. Thus, we wanted to have an easy-to-use platform that would be able to show the places with good deals and also recommend other options within proximity.
What it does
The home page shows a map with all the food outlets that have discounts marked on the map. If a search is done for a particular location, the map zooms in onto that particular location and the food outlets in the area are also shown. With this, we are hoping that users will be able to have an easy way of knowing their best options with as little clicks as possible. Aside from the map view, especially for thrifty users who are more focused on knowing all about the discounts, we have another list view where all the food outlets with discounts are shown. Users are also able to filter through food outlets based on their ratings.
How we built it
The server was written in Python with Flask, while the front-end was done with basic HTML/CSS/JS with jQuery and Bootstrap. Data for location-based food outlets is obtained from the Google Maps API; information about food discounts periodically scraped from @kiasufoodies is parsed and stored in an sqlite database. We hosted the application on Heroku.
Challenges we ran into
Scraping the Telegram channel proved to be rather challenging as Telegram does not implement a standard RESTful API, and also uses the MTProto protocol for encryption, which was new to us. Extracting all the relevant data proved to be a big challenge and took up a lot of time.
Designing the site to be mobile-friendly was also a big challenge for us as we are generally more experienced in desktop site development. However it was important to make the site mobile friendly as the whole idea of our project was that it should be convenient to use on the go, and so we pushed through with it.
Accomplishments that we're proud of
We are really happy with the fact that we made an app that we can actually put to use after this hackathon is over. This is especially the case as it is the first hackathon for all of us, and we also participated in the CTF so we weren't at full strength the whole time. Considering this, for us to be able to produce a properly working service in such a short time is something that we feel proud of for sure.
What we learned
We learned that we can really get a lot done if we just sit down and put our minds to it, and we are really surprised by the amount of work that we managed to accomplish. For many of us, we don't have experience with developing software projects of this size (although admittedly this isn't extremely large scale), and this was a valuable experience for us to revise and develop new technical skills, and also to learn how to collaborate quickly.
What's next for Where's The Food?
We can definitely expand our database of discounts by finding more sources aside from the kiasufoodies channel. Similarly, we should also be able to obtain more data about the places by using Google's places API, which we chose not to do this time as we were afraid that we would make too many API calls during our testing. We also want to implement a feature where users can filter the results based on food preferences or on other factors in order to customize their user experience.