Create a web site for an apple farm.
John Smith has been a farmer for a number of years and he has been using an offline inventory system to organize 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.
You are required to produce web sites that pass HTML 5 validation using https://validator.w3.org. You are also required to produce web sites that pass at least the Priority 1 W3C web content accessibility guidelines (Cynthia Says at https://www.contentquality.com/). Passing such validation is easier with simple pages.
When designing your web pages you could give serious consideration to security, usability and how CSS and JavaScript can be used to enhance usability. Your sites are required to show and operate correctly and consistently on all popular web browsers, i.e. Microsoft Internet Explorer, Mozilla, Firefox, Opera, etc. Client side (JavaScript) and server side (PHP) scripts could be used to validate input data from all forms.
Functionality to be achieved
This is expressed as a number of levels. The level of functionality implemented in your application will calculate the maximum possible mark that you can achieve. The actual mark awarded depends strongly on the quality of your work. Make sure that you fully understand the grading criteria.
It is recommended that in designing your websites (and databases) you should allow for all of the features to be implemented. In building the websites each level should be attempted in increasing order. Starting with Level 1 you should incrementally enhance your work to include the next level.
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.
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.
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.
Level 7 : Keyword Search
Provide a means for our farmer to search the order history of all orders placed in the system. Search results should be initially returned in a brief list format where each entry in the list may be clicked to show full item details. Result lists may become lengthy and should therefore be paginated.