Richard Hu loves to eat. He lives in NYC, one of the most diverse cuisine community in the world. But he used to eat things he was familiar with, rarely venturing out his comfort zone, until his Muslim friend came over to his neighborhood and he wanted to make sure she adhered to Halal. This led him to try out Afghan food, which he enjoyed despite normally not being in love with spicy food, and Uighur cuisine, which he could inadequately describe as a mix of the tastes of influencing western Chinese cuisine, with some of the spices common in Muslim cuisine, but ultimately a unique taste in and of itself. His introduction of these underrepresented cuisines in NYC helped him expand his palate, but made him worried about his lack of culinary experiences in underrepresented cultures.
On January 23, 2021, Richard invited hackathon partner and friend Luis Dominguez to his home to try out foods that Richard enjoyed, but Luis Dominguez never had. Richard introduced lamb and beef Chinese BBQ skewers, Citron tea, brewed green tea, and Shanghainese soup dumplings. Luis said that if it weren't for his friendship with Richard, it might be years before he would try the dishes himself, or worse, never before his palate changes as he ages.
While nothing will match the personal excitement and curiosity of going out and trusting friends' opinions on new foods, our webapp aims to encourage more exploration of great food in the world.
What it does
This is a mobile reactive webapp, since the question of "What should I eat" is usually asked by people being outside and hungry. Conveniently, various restaurant search engines have quick and accessible integration with their mobile applications.
For minimum viable product, a user will be first directed to input any dietary restrictions, health or personal. Any dishes or restaurants that violate an ingredient blacklist derived from these inputs will not be shown to the user. Optionally a user may also provide a history of their past foods, so the application will avoid the same or similar foods that may be too soon to eat again, and encourage variety.
The application will display various restaurants or specific dishes that are not mentioned in either the blacklist or eating history, and first prioritize underrepresented, then never experienced, cuisines. Prices, links and redirects to food delivery or search services will be shown on a user's screen.
Should a purchase of newly-experienced dish be noted, display any gamified milestones like "Culinary adventurer - explore 10 different cuisines", or "Unpredictable - don't eat the same type of cuisine for your last 10 takeouts".
A final page will request that the user review the dish in the ordering apps, and thanks them for their willingness to try something new.
How I built it
Front end and back end were divided based on experience, while we were going over the technology and why we coded in a certain way to get all team members consistent in application structure.
Front end was constructed using Handlebars and Bootstrap to allow for dynamically created content based on whatever back end sent out.
Challenges I ran into
Errors like forgetting to add the "--save" option when doing npm package installations to have it added to the package.json often cause a lot of problem if all team members' environments were not identical. There were also some odd issues with passing data through jquery when in a local environment; many of the testing was done with fixed mock data, and what data that needed to be passed had to be agreed upon exactly.
Accomplishments that I'm proud of
What I learned
We learned a lot about the necessity of good communication between team members for consistent progress. This project was also an extremely useful exercise in debugging and interpreting error codes.
What's next for Surprise My Palate
While minimum viable product was very close to what we envisioned, there are certain features that we agree should be considered before this is fully usable.
- User database to store people's long term meal history and their meals' time stamps; there was an intention for our algorithm to avoid a certain food, ingredient, or cuisine for say, 3 days, to avoid back to back or too-soon repetition.
- Incentives or gamification rewards/coupons to encourage variety (if you visited a place too soon, there will not be a coupon for that meal) or achievements for certain milestones
- A nice to have would be information and history of underrepresented cuisines.