Project 3 (Can I Eat This?)
Team: Esraa, Francheska, Naomi
Table of Contents
- App description
- User Stories
- Wireframes Web Version
- Wireframes Mobile Version
- Visual representation of the database
- APP flowChart
- ERD or other visual representation of your database
- Technologies used
- Ways to see the project
An app for people who care about the ingredients in their food!
Step 1: Users register their dietary restrictions on the user preferences page and can save their issues. Such as allergies to peanuts or shellfish, lactose intolerant, gluten-free, or other specific dietary restrictions.
Current allergen list:
- Tree Nuts
- Milk (lactose intolerant)
- Wheat (gluten-free)
Step 2: Users quickly and easily take a picture of the barcode of a food item to check the ingredients. Using Optical Character Recognition (OCR) the app checks if any of the ingredients from the product match with any of the saved user preferences.
Step 4: The app displays the results of the thorough ingredient check (over 60 keywords for each) and indicates whether the user can eat the item or not. Rendering each of the unique allergen issues and whether they are present in the product or not.
Step 5: In history, the user can save their past products searched and preferences, stored in an external database.
As a user, I want to use the app in the browser and on a mobile device.
As a user, I want to see cute icons for each of my allergen preferences.
As a user, I want to add and edit the ingredients I am careful about in my User Profile.
As a user, I want to quickly and easily take a picture of the product's barcode then and immediately see if the product contains any ingredients I don't want.
As a user, I want the option to write the barcode (maybe is the user's preferred way for security reasons, or camera doesn't work, etc), and immediately see if the product contains any ingredients I don't want.
As a user, I want to 'red flag' ingredients I am careful about. Such as items I am allergic to examples include: peanuts, gluten, dairy, etc.
As a user, when I enter the product barcode, I want to know if I'm using the wrong number of digits or letters by mistake.
As a user, I want an editable history of all the products I already looked up.
As a user, I want to see the product picture (if available) and see the list of ingredients.
As a user, I want to edit my allergen preferences in the profile page and get an updated history page.
Here is the initial thinking we started with:
Homepage, Scan Barcode and Product Info:
User Profile and History:
- Grab the item barcode (by scanning the UPC number, or write it in an input field)
- Validate the barcode, 12 digits number
- Make an axios call to find the product information (product name, ingredients)
- Use the barcode to call another API for the picture
- Get the user list of allergies from the database
- Compare the product ingredients the user’s allergies
- Store the comparison information from the two APIs to database
- Display the picture of the product if found or use a placeholder
- Allow the user to change their list of issues, after clicking on the profile page
- Display the previously selected issues and allow the user to modify selections
- If the user wants to see the previously searched items, allow user to click on History page
- Allow the user to delete a product by clicking on X
- For wrong links, 404 page is available.
ERD/VISUAL REPRESENTATION OF DATABASE:
- CSS Frameworks
- Optical Character Recognition (OCR) API
- Nutritionix API
- Open Food Facts API
- Cloudinary API
- ZenHub (project boards)
- Balsamiq (wireframes)
- Lucidchart (app/project flow)
- Slack (communication)
- Postman (API and DB testing)
- Ice-cream (for sanity :)
SEE THE PROJECT:
Database hosted on Heroku:
- To access the products information: https://caneatthis.herokuapp.com/api/information
- To access the user issues: https://caneatthis.herokuapp.com/api/allergies
- GitHub of database: https://github.com/esraa2525/canieatthis
Download Project & Install
- Git clone or download this project
- Make sure to
- Cd to the
npm startand app should be available on localhost:3000