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. |
- 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
- 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.
- 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.
Here is a live demo deployed on heroku with fake data : https://harvest-farmermarket.herokuapp.com/
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
Sign Up | Log In |
---|---|
Head | Store | Review |
---|---|---|
Head | Products | Review |
---|---|---|
Add Product Information | Update Product Information |
---|---|
-
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.
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
- 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.
- 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.
Huiming Jia | Tim Hu | Yanique | Beraa |