UPick:A Food Picker App

Using React Native and various APIs

A picture of the UPick logo

Project Overview

UPick is a mobile application that I worked on during the 2020 Fall quarter in the course CSE 110: Software Engineering at UC San Diego. In this course, I worked in a waterfall team of nine other students to develop software of our choice. The primary function of the app that we created is to suggest restaurants for users based on their preferences. The app is built with React Native and uses the Yelp and Edamam APIs.

A picture of the UPick homepage
The UPick homepage

The UPick app obtains various preferences by requiring users to fill out a page that asks about their various preferences for restaurants. UPick also allows for users to merge their preferences into a group in order to accomodate the preferences of an entire group. Additionally, UPick has a page for users to log their spending as well as an option to receive recipes instead of restaurants recommendations based on their preferences.

A picture of the preferences page in UPick
The page to enter user dining preferences in UPick

The UPick app suggests a restaurant to a user by using their input preferences as filters to pass into the Yelp API. The app returns the most recommended restaurant from the Yelp API based on these preferences. If the user is receiving recipes instead of restaurant recommendations, their preferences are passed into the Edamam API and its results are returned.

A picture of the restaurant chosen by UPick
An example of a restaurant generated by UPick

My Role in the Project

Each person in our team selected a specific role from the choices offered by the class. My position on the team was the software architect. I was in charge of designing the systems that implement the various features of the UPick application. Part of this design process involves creating user diagrams for each of the use cases in UPick.

A picture of the legend for UPick user diagrams
The legend for UPick user diagrams

The user diagrams that I created represent the application's backend functionality as well as serve as schematics for developers on my team to use during implementation. One of the main processes in UPick is entering user preferences. Below is a user diagram for this process which I created.

A picture of UPick preferences user diagram
Input preferences user diagram for UPick

Source Code

A picture of the GitHub logo