John Smith has been a farmer for a number of years and he has been using an offline inventory system to manage his day to day farming business. The offline software system that he is currently using allows to record sales and keep track of his apple fields but that's about it. Having heard of the wonderful online solutions that are available to he has decided to hire you to build a better system for him.
His requirements in a nutshell are:
* He plants, grows, harvest and sell fifty three apple varieties - he needs to use the website to allow customers to see the available varieties of apples and express interest.
* As more than one customer can express interest for an apple variety, customers are to be served on a first come first served basis.
* Customers can be new or returning customers (never registered or registered with the site/have bought produce before). Apple produce is collected onsite (cash payment) although there is thought for a future option that would allow shipping of produce.
* Visitors to the site should be able to search and browse produce varieties for items on offer.
* Only registered users should be able to use the site and register interest for apple produce.
* The farmer should be able to search through the sales history.
Level 1 : Account creation
Create an HTML5 form allowing visitors to create an account with the site. The form must mandate basic contact details but should also allow for personal information to be included (think facebook). Account details are to be stored in your MySQL database. Information should be stored in a secure way.
Visitors should be able to choose a username and password. The system must prevent duplicate usernames being chosen. Newly created accounts should remain inactive until they are verified by handshaking the email details (Level 3).
Level 2 : Authentication
Provide a login form that allows members to authenticate with the site using their username and password. These credentials should be compared with the information recorded in a MySQL database.
Note that you will need to initiate some form of session state to prevent unauthorised access to further activity. New members will also need to verify their account details (Level 3) before being allowed access to further activity with the site.
Level 3 : Verify account
Account verification will require sending a message to the email address provided in Level 1. This email message should include some sort of key that enables a member to activate their newly created account after they have authenticated with the site. Members should not be allowed to make further use of the site until they have verified their account.
Members should only be required to verify their account the first time that they authenticate.
Level 4 : Editing details
Provide HTML5 forms that allow authenticated members (who have verified their account) to add to and edit existing information stored about themselves.
Note: Editing information is not the same as re-entering information, the user may only be seeking to correct a spelling mistake and so should not be required to re-enter complete data. The simplest way to implement this is to re-use the form that you created in Level 1 but populated with default values extracted from your database.
Level 5 : Offer apple varieties and express interest
Provide HTML5 forms that allow our farmer to advertise apple varieties he grows -These forms should allow to upload images associated with the produce. Images may be stored as either files on the server or as records in the MySQL database.
Level 6 : Allow customers to express interest on an apple variety
These forms should allow members to be able to express interest on an advertised apple variety. The system should allow for editing and deleting of an offer. An offer can be in the form of "I am interested in 500 kilos of apples variety type 1 and I am willing to offer £1000 pounds". These offers are to be sorted displayed based on price per kilo.