Requirements
To gather these requirements, we have been holding weekly meetings with Professor Richard.
During these meetings we discuss what he is looking for in the final product, and we brainstorm potential requirements with him.
This helped us tremendously because it gave us insight into what areas we should focus on throughout the project.
We have also been doing plenty of research in our own time and reporting back to Professor Richard during these meetings.
Along with this, we have also met with the Sean Ryan who is working close to St. Mary's Food Bank concurrently to ensure that the work we are doing is compatible with theirs.
Our main functional requirements that we have identified through our acquisition process are as follows:
For Our Mobile App
Navigation Page:
- A Search Bar to enter a location, a map component to give navigation instructions to the nearest food bank/pantry based on location.
Digital Pantry:
- A home page for the pantry, where users can navigate to pages to add ingredients or manage their current pantry.
- A page to add food items, where users input a UPC or item name, as well as quantity. Here users can also elect to flag ingredients received from a food box.
- A page to view currently owned ingredients. From here users can select ingredients they own to search recipes that include them.
They can also edit the quantity or delete food items from this page if they no longer have or wish to use them.
Recipe Management:
- Recipe Search: A page to search and view recipes by rating, ingredients, cuisine, difficulty to make, and time to make. From here you can view and "Favorite" recipes you like to print or use them from the app.
- Recipe Print: A print recipe page, where you can queue up recipes in your bookmarked section to print.
Alternate app view:
- Other than the default app view, it has been requested that there be a separate view of the app for food bank workers to ensure ease of access to the important features they will need on the job.
For Our Admin Portal
Food Distribution Site Page:
- This page is used for the management of the food distribution sites.
Recipe Management Page:
- This page is used for the management of the food recipe database.
For Our Database
- Virtual Pantry: We need a pantry table to store what food the users have.
- Recipes: A recipe table will also be necessary to store all the recipes.
- Distribution Sites: We need a site table to store the location data for all Food Bank distribution sites.
- The SNAP retailers: We need a retailer table to store the GIS data for SNAP(The Supplemental Nutrition Assistance Program) retailers.
- Users: We need a user table to store all the information about users and administrators.
For Our Analytics
- Data Collection: Data will be collected using the Google Firebase framework, which allows data points to be collected using "Event Listeners", which "Listen" for a certain action to be performed (such as pressing a button or entering text), which triggers a response.
- Data Analysis: Firebase will unpack and keep track of the various bits of information sent by the app through the event listeners, which can then be shown through a console.
- Viewing Data: The collected data will be viewable in the Google Firebase Console through an administrator account, which will have to be created during the development phase.
For APIs
- Methods: The API will consist of methods that will send queries to the database depending on what the method does. For example, one method will have to search for and return a selection of recipes based on the ingredients specified by the function call, while another one will have to check the login credentials of the user.
- Server: The API will need to be hosted on a web server, which will allow it to receive requests from the app. For testing purposes, we will host the API locally on one of our personal computers, but it should be able to work with any major hosting provider.
If you are seeking more detail in either our requirements or acquisition process, please refer to our Requirements Specification document.