Midnight, Tuesday 28 January 2014
Your task in this assignment is to design and implement the basis of a simple online auction system using HTML, CSS, Ruby on Rails.
The goal of the assignment is to design and implement a simple database-backed Web application that models one component of an online auction system such as eBay. The application should allow users to offer items for sale, to update and delete the items offered for sale, and to browse and search items that have been offered for sale.
Users may offer items for sale. Each item has a name (possibly a short phrase), a description, a category, a vendor, and a starting price. Names are short strings, descriptions are arbitrary length strings, vendors (for this assignment) are short strings, and starting prices are decimal values. Each category has a name (a short string) and a description (an arbitrary length string). Hence, the category field of an item should be a reference to the corresponding category. The item offer form should include a selection (a drop-down list) of category names to choose from. (The item update form should be similar.) s Note that the set of categories is determined by the developer; users can't alter the set of categories.
Users may search the set of items offered for sale by category, name or description. The category should be selected from a selection (as in the offer and update item forms) and a term to matched against the name or description should be entered into a single text field. Users may then browse all items by not selecting a category; they may browse all items in a single category by selecting the category and leaving the text field empty; and they may search for all items whose name or description matches a term in the text field with or without the restriction to a selected category.
The home page should display (a) a search form or a link to a search form and (b) an offer item form or a link to an offer item form.
Each page containing a list of items for sale (resulting from browsing or searching) should contain the name and category of each item in the list, and the name should be a link to a separate page containing the full details of that item.
From the page containing the full details of an item, users may either update or delete the item.
For simplicity, in this assignment you do not need to paginate results of browsing or searching, and you do not need to implement any authentication or authorisation mechanisms. (This means that any user can update or delete any other user's offering, but we'll correct this in Assignment 2.)
All user input must be appropriately sanitised and validated.
Cascading style sheets should be used to provide a simple, uniform, distinctive, usable interface to your application. Every page should have relevant HTML5 header, navigation and footer elements, but a multi-column layout is not required.
Because the SQLite database is not managed by Git and hence is not pushed to BitBucket, your app must contain code to generate sample data as described in lectures. Your code should generate at least 2 categories and at least 6 items. Please use the same naming conventions for this code as in the lectures.
The user interface must use HTML forms. It must use CSS to separate HTML document content from presentation. The development platform must be Ruby on Rails. Categories and items must be defined using separate models. HTML templates must be used appropriately.
The implementation must use good program structuring techniques as taught in this and other courses. As a minimum, all files should be briefly commented and properly laid out, and all CSS and (generated) HTML files should be valid.
Unnecessary files and code must be removed. Scaffold users: this means you!
For our convenience, please put your name, student number and link to the documentation in the footer of every page of your application.
Start work now!
Design and implement your solution incrementally.
Clarifications and more detailed suggestions may be given in lectures and laboratories and on the Facebook page.
Test your application thoroughly after implementing each new feature, and test it on at least two distinct browsers.
Perform usability testing by asking at least one person not in the class to explore the use of the application and to give you feedback.
Your application code should have minimal comments that describes anything non-standard or non-obvious. It should have a clear and up-to-date README file.
User documentation should be in a new static (HTML)page linked to from the footer of every page in the app.
The user documentation should contain:
When you are ready to submit, and you have successfully commited your final changes to the master branch and pushed the final repository to BitBucket and checked that the repository on BitBucket is correct and up to date, and that I have read access to the repository, then...
Send an email from your University email account to firstname.lastname@example.org with the exact subject line
2503ICT Assignment 1 Submission
The email body must contain your name, your student number, and the URL of your BitBucket repository (the URL will have the form https://bitbucket.org/rodney-topor/guestbook_app). That's all. I should then be able to clone your repository to my machine and follow your instructions in the documentation to populate the database and test the application.
We expect the structure of your application to be clear, simple, standards-conformant, validated, and well-documented. We expect the organisation and English in your implementation and documentation to be of high quality.
Assessment of your assignment will be based on functionality, implementation quality, documentation and submission. The breakdown of marks is approximately 14 for functionality, 5 for implementation quality, 3 for documentation and 3 for submission.
Keep your solution simple. You will not get additional credit for doing more than was requested.