Got Eggplant?

Overview

Got Eggplant? is an iOS app for the easy creation of grocery lists with the additional capability of tracking expiration dates for pantry items. The app was developed with 3 other students between January 2018 to May 2018 to fulfill the course requirements of a Wireless Mobile Software Engineering course.

Motivation

As a budget conscious college student with roommates, I noticed a large quantity of food in our apartment would often go to waste. We would go on grocery trips only to realize that the food we came back with already existed in our kitchen, causing an excess in our shared kitchen and eventual waste when the food could not be consumed prior to its expiration date.

The motivation behind Got Eggplant? was to solve this unfortunately all too common issue of consumer food waste by allowing users to have better control over their groceries. The main features of this tool is to aid users in the creation of a grocery list, account for existing pantry items, and locate nearby grocery stores.

Ideation

To further understand what features would be beneficial, I conducted research in the form of informal interviews with some members of the general population to gather feedback on their grocery buying process. As it will be an iOS app, I focused on gathering data from iPhone users. The resulting data reflected that the most commonly used list app on iOS was Apple’s Reminder app, and that food pantry tracking was non-existent.

As a result, the features of focus were:

1. Grocery list creation

2. Grocery store locator

3. Barcode scanner

4. Pantry manager

High Level Design

From a high level point-of-view, the high level design consists of multiple views in the storyboard with each view controlled by a view controller. All view controlled views are subclasses of the UIViewController class. This acts as the controller for the model, consisting of three Swift files:

1. The barcode reader, which imports the AVFoundation in order to access the camera and scan barcodes of any format.

2. The location manager that imports both CoreLocation and MapKit for user location and for identification of the nearest grocery stores.

3. The grocery and pantry lists, that allow the user to create grocery lists while accounting for existing food in the kitchen and pantry.

All view controllers are properly segued (linked to tab bar) and held as children to the UINavigationController. This allows us to create many separate view controllers, which each have their own data file.

Final Results

The final app was uploaded onto an iPhone and each feature was tested to ensure correct behaviour.

1. Authentication

2. Grocery and Pantry lists

3. Map view

Reflection

We explored the addition of features that required the use of a calendar. However, available resources only had information for Apple Calendar. While it is possible to add expiration dates of food items etc. to the Apple calendar, it would clog up the user’s Apple Calendar. In an effort to ensure our app would not diminish the user experience in any way, we decided to not pursue this avenue for improvement.

Other features were explored for implementation. However due to lack of time and resources along with the desire to create as polished a product as possible, we determined it was apt to instead focus on the existing product. As I learn more I hope to create increasingly complex apps.