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.
Introduction
Requirements
Development
Presentation
Fresh is for everyone!
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.
Location and items will be stored as strings. Prices of items will be stored as numbers.
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.
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.
Minimum Requirements
Standard Requirements
Stretch 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
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.
Challenge Encountered
Future Direction
Run meteor run
in root directory to begin serving on localhost:3000
Run meteor reset
to start with a fresh local MongoDB instance
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.