"Local Farm To You" - A Marketplace For Locally Produced Food
2. Acceptance Criteria
The basic implementation of the project assumes the application runs on a server and that various clients access it through a REST interface.
The RESTful API will be available here as soon as we clarify the project detail. This process will require you to ask lots of questions, in class, via email, etc.
I will not change the high-level requirements as a result of the requirements clarification process. However, I will document the decisions made in the Q&A document.
Here is the scenario that will be used to test your application.
3. Questions and Answers
Check here for answers before asking your TA or the teacher.
4. Extra Credit
The main purpose of this project is to practice object-oriented analysis, design and programming, not to teach you web development frameworks or relational databases. As such, the use of a database is expressly prohibited for the core project implementation.
There is a finer point to be made about the databases ban, namely that most students would start with the design of a database schema, the way they learned in a Databases class, instead of thinking about use cases, entity objects, etc.
In fact, the database should be a plug-in to your application, the same way the delivery mechanism should be, whether command line, web, etc.
We can talk about extra credit iff (if and only if) your core project implementation works impecably. This point will not be debated.
If you complete your core project implementation on time and feel adventurous, then you can get extra credit for implementing a web client for the customer.
5. Project Description
The idea is that farmers can register with Local Farm To You (LF2U henceforth) to create what you could call a "virtual grocery stand" where they describe what they produce and what's available for delivery presently. For example many farmers produce tomatoes, however, the tomatoes are only available during certain times of the year. Please note that certain products may be available all the time, such as milk, honey, meats, etc.
Each farmer must specify what zip codes they deliver to.
Consumers register with LF2U and can then order products from the farmers available that deliver in the consumer's zip code.
LF2U is the entity that manages the software that you'll be developing, takes care of the server where the software is running, takes payment from consumers, takes care of paying the sales tax to the proper government bodies, and then pays the farmers after taking a small administrative cut from the money collected.
Sounds pretty sweed, doesn't it?
LFTU will maintain of catalog of all the things farmers produce and are willing to sell and deliver, e.g. tomatoes, cucumbers, eggplant, potatoes, cabbage, milk, cheese, honey, eggs, meats, etc.
Each farmer will be able to select a generic product from the catalog, e.g. "honey" and then add a personal description to it, e.g. "Organic clover honey". The farmer can specify the price per unit of product, e.g. ounce, pound, pint, gallon, etc. The farmer can also specify the delivery charge.
Consumers should be able to view the farmers that deliver in their zip code. Consumers should be able to see what a specific farmer produces and what's available for delivery; a consumer should be able to select a list of products to be delivered to their address and place an order with LF2U; the order could contain a note with delivery instructions. When the order is placed the consumer will receive a confirmation token.
A consumer should be able to see all products available for them to order; for each product they could see how many farmers offer the product.
Consumers can view their outstanding orders. A consumer can cancel an order if they wish, but it has to be done before the end of the day.
Farmers can view orders that need to be delivered today. Same for orders that need to be delivered tomorrow. A farmer should also be able to get a report that breaks down quantities to be delivered by product such that they know how much to harvest/prepare for delivery.
When the order is delivered, the delivery person can confirm delivery by submitting to LF2U the confirmation token that was given to the customer when the order was placed.
One of the LF2U employees will be tasked with responding to consumer and farmer support issues. It would be very helpful if this employee could search for consumers/farmers, view their orders and the status of those orders, etc.
Finally, LF2U management should be able to request a report that shows total revenues during a certain time frame, the LF2U cut, and what needs to be paid to farmers, broken down by farmer.
I have all sorts of other ideas for how to make LF2U great - see below for some of them - but I'm afraid it would be too much for a student in the cs445 class that needs to complete the project by mid-November.
Here is a list of ideas for the future:
$Id: project.html,v 1.2 2016/08/31 17:16:00 virgil Exp $