Giter Club home page Giter Club logo

harvest1's Introduction

README

Harvest

Harvest is a customer engagement platform for local farmers markets and their customers. Harvest makes it easy for users to learn about farmers markets, the vendors themselves, and their products. It is meant to provide users with a convenient way to interact with a world of fresh fruit and vegetables. Whether you are new to the farmers market scene or an experienced veteran, our app will have something for you to enhance your farmers market experience. You can make sure your local vendors will have their usual goods or you can do research on a completely new farmers market. Planning your trip becomes easy with our application.
All of the information you could want is coherently laid out for you. With less than 5 clicks you can find the location and hours of operation of a farmers market along with the vendors and products that will be present. You will never show up to a farmers market and be disappointed to find that the product you are looking for is not there. Finding new products to enjoy and organizing which ones to buy will be a breeze. Harvest takes any stress out of the farmers market experience.

User Stories & Feature

Customer(User)

  • can check out near by farmers markets.
  • can see which vendors have a specific product.
  • can specific product and want to know which vendor has it and is open now.
  • can be able to view all local products from all local vendors.
  • can go to a farmers market page and check which farmers markets are open now.
  • can explore markets around me and see the vendors at each market and what each vendor has.
  • can see some popular products nearby
  • can save products to my grocery list.
  • can review Farmers Markets I’ve been to.
  • can request system help schedule a reasonable shopping plan base on time and location

Farmer(Vendor)

  • be able to showcase all of my products
  • can have a personal page that has my store’s products and information.
  • be able to have an online presence and showcase my personal store.
  • be able to see any available Market places for me to sell my goods at.

Market Manager

  • be able to have a page that shows which vendors operate at my Marketplace.
  • be able to contact vendors to be able manage the store in its markets and reject or accept join-in request from a vendor.

Demo

Here is a live demo deployed on heroku with fake data : https://harvest-farmermarket.herokuapp.com/

Notes

In  order to run the search function on the localhost, one must run the command in the terminal

- rake sunspot:solr:start

Data is also aleeady seeded. This can be redone with

- rake db:seed

The site is hosted on harvest-farmermarket.herokuapp.com. The search function is not accessible through there as deploying the solr gem on heroku costs fifteen dollars a month

Site Snapshot

Home Page

Sign Up and Sign In Page Form

Sign Up Log In

Market Home Page

Head Store Review
MarketPage Head MarketPage Store MarketReview Store

Store Home Page

Head Products Review
MarketPage Head MarketPage Store MarketReview Store

Update Store Information

Product Detail Page

Manage Product

Add Product Information Update Product Information

Search Result

Shopping Schedule

Personal Profile Page

Update User Information

Nearby Markets

Email Template

DataBase Schema

  • After coming up with several example user stories, we set upon building the models for our different users, their relationships and functionalities. The database is broken down into all those entities. We use a standard schema, so all tables have IDs and based off their relationships, they have foreign keys. Figure 2 shows the database schema.

  • After creating an account, a new tuple is created in the Users table. The only geographical data we ask for is zip code, which is enough for finding local farmers markets. The only points where we ask for specific geographic data is within the Markets table. Store location can be implied through the market they conduct business at. This is modeled through a Store-Markets table. That table is linked to the Requests table, which is used for linking a vendor's request for his store to appear on the market's store directory.

  • Users request to become vendors through their profile page. From there, they can start their own store. At the time of creation, vendors must enter their open and close time, which must exist within the limits of the hours of any markets they sell things at. Market owners then must go to their own profiles to accept any requests to join their market page. Because of the limited amounts of farmers markets in the United States, entry for a farmers market to our site's database must be manually done.

  • Different user functionalities are all contained within the site's database model. Reviews for stores and markets are separated into two tables, both have fields containing the review, the user, and the entity. Separating the two was a design choice to improve retrieval speeds and to ease coding as a singular table holding both reviews would need an additional field for differentiating the two. Subscriptions and the Shopping list is simply a table holding the IDs of the respective entities. In the case of our image storage, the database models interfaces with the ruby gem, paperclip. The table's field is then configured for the gem's validations and support image resizing.

Development

Want to contribute? Great!

To fix a bug or enhance an existing module, follow these steps:

  • Fork the repo
  • Create a new branch (git checkout -b improve-feature)
  • Make the appropriate changes in the files
  • Add changes to reflect the changes made
  • Commit your changes (git commit -am 'Improve feature')
  • Push to the branch (git push origin improve-feature)
  • Create a Pull Request

Built with

  • AWS - DAmazon Web Services offers reliable, scalable, and inexpensive cloud computing services. Free to join, pay only for what you use.
  • dropzone.js - DropzoneJS is an open source library that provides drag’n’drop file uploads with image previews
  • PaperClip -
  • Google Maps - The best of Google's Powerful Mapping for your business
  • bcrypt - bcrypt() is a sophisticated and secure hash algorithm designed by The OpenBSD project for hashing passwords. The bcrypt Ruby gem provides a simple wrapper for safely handling passwords.
  • Bootstrap - Build responsive, mobile-first projects on the web with the world's most popular front-end component library.
  • Sunspot_solr - Solr provides a bundled Solr distribution for use with Sunspot. Typical deployment environments will require more configuration, but this distribution is well suited to development and testing.
  • Fast-stemmer - Fast-stemmer is simply a wrapping around multithreaded Porter stemming algorithm.
  • Byebug - Byebug is a Ruby debugger. It's implemented using the TracePoint C API for execution control and the Debug Inspector C API for call stack navigation. The core component provides support that front-ends can build on. It provides breakpoint handling and bindings for stack frames among other things and it comes with an easy to use command line interface.

To-Do

  • Improve search algorithm
  • Make a more robust search algorithm for more complex searches. Attain faster search speeds by indexing products against markets for better distance related searches.
  • Expand Functionality
  • Possibly create an algorithm that suggest products, vendors, or markets based on location, preference, and shopping list.

Team

Huiming Jia Tim Hu Yanique Beraa
Huiming Jia Tim Hu Yanique Beraa

harvest1's People

Contributors

huimingjia avatar huxtim avatar y-seac avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.