FreshPrice / Fresh

The hottest crowd-sourced grocery store price app around.
https://this-is-fresh.herokuapp.com/
5 stars 3 forks source link

Fresh

Fresh is the hottest crowd-sourced grocery store price reporting app around.

Fresh is a web application that helps consumers make cost-friendly choices for groceries. Users can post grocery prices, locations and images to the app, and see reported deals submitted by other people. Leave thumbs up or down to help validate posts. Compare the prices of groceries through the search and sort features. When you find a deal that you like, bookmark them for later and see them in the shopping list.

Demo

Table of contents

  1. Introduction

  2. Requirements

  3. Development

  4. Presentation

Introduction

Who is it for?

Fresh is for everyone!

What will it do?

Users can post grocery prices, locations and item to the app. Users can see all the posts that have been submitted to the app. Users can search and filter all the posts for specific items in the app.

What type of data will it store?

Location and items will be stored as strings. Prices of items will be stored as numbers.

What will users be able to do with this data?

Users will be able to see a list of posts with location, prices and grocery items. Users will be able to view location on a map, filter items by type and sort items by prices.

What is some additional functionality you can add/remove based on the constraints?

Create a shopping list which displays the lowest price found for each item and their location. Users will be able to leave thumbs up or down on prices to validate them.

Requirements

Basic Functionality Requirements

Minimum Requirements

Standard Requirements

Stretch Requirements

Basic Technology Requirements

HTML/CSS/Javascript

React/Redux/Meteor and the Front End

Meteor and the Back End

NoSQL and MongoDB

{  
   "_id":"FhuZdERA3mqC394jx",
   "name":"Papaya",
   "price":1.66,
   "unit":"per lb",
   "createdAt":"2019-08-06T02:52:09.389Z",
   "rating":0,
   "imageSrc":"/images/Papaya.png",
   "location":{  
      "address":"Real Canadian Superstore, Southeast Marine Drive, Vancouver, BC, Canada",
      "coords":{  
         "lat":49.2084913,
         "lng":-123.0996485
      }
   }
}

Release Engineering

Basic Contribution Requirements

Erica: Creation of autocomplete geo-suggest component using Google Maps API, addition of marker on the map component with lat/lng received. Incorporation of user accounts and logic of information hiding from random users. Implmentation of the shopping list, which allows users to add, edit and clear grocery items from the database. Setup of Email component that enables users to send themselves an email with their current shopping list using Meteor methods. Formatting the form for new postings, submit button disabled until every field is filled out. Making and reviewing PRS for code-review and feedback.

Nicole: For project implementation, I contributed to the frontend using React and Redux by implementing sorting to sort posts by price or latest time posted, thumbs rating to rate deals, modal form to submit deals, price field validation in modal and more. I also worked on design and layout, which led the final app to look very similar to the original mock-ups. As a team player, I reviewed many PRs and pair-programmed.

Yao: Primarily involved in project setup, incorporating and initializing Meteor, Redux, React, Mongo, and Heroku deployment and configuration. Managing required accounts and access user credentials. Layout initial application with Google Map, search bar, cards and new post elements. Implement redux store and backend Meteor methods to interact with MongoDB for item creation and retrieval, rating manipulation, search bar item additions. Add custom image uploading to Fresh form with image compression and storage in MongoDB and then display image based on dynamic source. Configure and enable Fresh for continuous deployment on Heroku. Made multiple bug fixes and promote best practices through PRs and pair-programming.

Challenges, Learning, and Future Directions

Challenge Encountered

Future Direction

Initiative and additional Contributions

Development

Mock up prototypes

mockup2 mockup1

Local

Run meteor run in root directory to begin serving on localhost:3000

Run meteor reset to start with a fresh local MongoDB instance

Local, with Atlas hosted MongoDB

Run sh start.sh in root directory to begin serving on localhost:3000 while targetting the Atlas hosted MongoDB and enabling Emailing of password reset and shopping lists.