Being frugal students, we all wanted to create an app that would tell us what kind of food we could find around us based on a budget that we set. And so that’s exactly what we made!
What it does
You give us a price that you want to spend and the radius that you are willing to walk or drive to a restaurant; then voila! We give you suggestions based on what you can get in that price in different restaurants by providing all the menu items with price and calculated tax and tips! We keep the user history (the food items they chose) and by doing so we open the door to crowdsourcing massive amounts of user data and as well as the opportunity for machine learning so that we can give better suggestions for the foods that the user likes the most! But we are not gonna stop here! Our goal is to implement the following in the future for this app:
- We can connect the app to delivery systems to get the food for you!
- Inform you about the food deals, coupons, and discounts near you
How we built it
We have both an iOS and Android app that authenticates users via Facebook OAuth and stores user eating history in the Firebase database. We also made a REST server that conducts API calls (using Docker, Python and nginx) to amalgamate data from our targeted APIs and refine them for front-end use.
Authentication using Facebook's OAuth with Firebase. Create UI using native iOS UI elements. Send API calls to Soheil’s backend server using json via HTTP. Using Google Map SDK to display geo location information. Using firebase to store user data on cloud and capability of updating to multiple devices in real time.
The android application is implemented with a great deal of material design while utilizing Firebase for OAuth and database purposes. The application utilizes HTTP POST/GET requests to retrieve data from our in-house backend server, uses the Google Maps API and SDK to display nearby restaurant information. The Android application also prompts the user for a rating of the visited stores based on how full they are; our goal was to compile a system that would incentive foodplaces to produce the highest “food per dollar” rating possible.
Challenges we ran into
- Finding APIs to get menu items is really hard at least for Canada.
- An unknown API kept continuously pinging our server and used up a lot of our bandwith
- First time using OAuth and Firebase
- Creating Tutorial page
- Implementing modern material design with deprecated/legacy Maps APIs and other various legacy code was a challenge
- Designing Firebase schema and generating structure for our API calls was very important
Accomplishments that we're proud of
A solid app for both Android and iOS that WORKS!
- Dedicated server (VPS) on DigitalOcean!
- Cool looking iOS animations and real time data update
- Nicely working location features
- Getting latest data from server
What we learned
- How to use Docker
- How to setup VPS
- How to use nginx
- How to use Firebase
- How to OAuth works
- How to utilize modern Android layouts such as the Coordinator, Appbar, and Collapsible Toolbar Layout
- Learned how to optimize applications when communicating with several different servers at once
What's next for How Much
- If we get a chance we all wanted to work on it and hopefully publish the app.
- We were thinking to make it open source so everyone can contribute to the app.