Rich Media Web App Dev I

IGME-330

Project 3 - HTML5 Web App Mashup of Awesomeness!

1) Overview

Your mission is to create a useful and visually-rich HTML5 application that "mashes up" 2 or more Web services (XML- or JSON-based), and showcases your mastery of modern Web technologies. As before, you will be evaluated on your creativity in design, the quality of the experience you create, the extent in which you go beyond what we did in class, and the soundness of your programming.

Ideally the application will run in all modern browsers, but at a bare minimum it must run in Chrome on both Windows and Mac.

I. Web APIs

You must use 2 distinctive web service APIs in your completed project. The exact web services used are up to you (except that you may not use the Eventful API), here are some ideas:

For lists of even more Web services, see:

Note: This is a Web programming class so I expect you to "roll your own" when it comes to adding Web service capability to your pages. That means that JavaScript "widgets" that display (for example) Twitter feeds or the current weather are expressly forbidden. You have the knowledge to write these yourself if you desire this sort of functionality in your project.

II. Browser Technologies

You will also be required to utilize at least one HTML5 Web application technology, that we did not cover in class, in a significant way. A list of these are at https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5. Note that utilizing jQuery does not meet this requirement. You must implement the technology without the use of a library like jQuery.

The most straightforward way to meet this requirement is to use the localStorage API to save user data, for example the last term they searched for. Here's a helpful tutorial. On gibson, be sure to use unique key names like abc1234_search_term or abc1234_username, where abc1234 is your id, as we discussed in class.

III. Interactivity and UI

It is required that you utilize some of the features of the jQuery and jQuery UI libraries to improve the usability and interactivity of your web application. Your goal is to not create gratuitous effects, but instead "let the user know what's going on" with widgets like accordions, progress bars, and spinners; and effects such as fade-ins, fade-outs, and slides. (Note: You must additional effects besides fadeIn() and fadeOut() )

Alternatively, if you can achieve jQuery style effects without the use of a library, for example by utilizing CSS3 transforms/transitions/animations, you may omit the jQuery library.

The user should be able to interact with your application in a variety of ways. Keyboard, buttons, sliders, pull-downs, check boxes, and ??? - if appropriate for your application.

IV. Graphic Design Elements

V. Impact

2) Requirements and Grade Rubric

Doing the above well means a 'B' - we need to see "Above and Beyond" to award an 'A'.

3) Deliverables

The following schedule will hopefully keep you on track.

Phase 1 – Online Design Doc – due 9AM Wednesday 11/18 (week 13)

This HTML5 document will be an appropriately marked up valid HTML5 page. It will be college level work, attractively formatted, with an introduction, paragraphs, section headers, images, and so on. Write down some ideas, make some sketches, and decide what your application will do. Describe the following:

  1. The name of your project.
  2. Your name (and the name of your project partner if applicable).
  3. A one sentence application definition statement - What's it do? Who's it for? Example: A Food Finder for hungry RIT students. OR An earthquake and extreme weather tracker for weather buffs.
  4. Which Web services it will utilize. Give names and URLs.
  5. A full list of features you could possibly implement to meet the application definition statement.
  6. A filtered list of features to meet the product definition statement (and fit into our time frame)
  7. A sketch or mockup of your UI. (this can be a sketch, JPG file, or HTML5 Mock up)
  8. If you already have a working prototype, put a link to it!

Submission: Your concept document must be posted to the Web at: http://people.rit.edu/~abc1234/330/project3/ Also post this to the dropbox, with a link to the online version in the comments field. -15% deducted from final project grade if not completely done.

Phase 2 – Prototype – due 9AM Monday 11/23 (week 14)

A working prototype posted to the dropbox - the basic functionality of connecting to your web services and displaying some results should be functional. Get some feedback from the prof and your classmates on what could be improved before the final submission.

Submission: Post this to the dropbox, and bring it to class to share. -15% deducted from final project grade if not completely done.

Phase 3 – All Done! – due 9AM Friday 12/4 (week 15)

Submission: Post your app and documentation to the dropbox. Also post your app to the web and put a link to it on your online design doc.

Final Documentation

  • Word DOC:
    • Title Page - use a nice font!
    • The product definition statement and a list of features (recycle from design doc)
    • High-Level Architecture - (e.g. modules, classes)
    • Design Decisions
    • Technical Decisions
    • Document which HTML5 Technology you used
    • Document your Extras - (see below)
    • Give Credit Where Credit is Due - (see below)
    • Grade each team member and justify it.
    • -15% deducted from final project grade if not completely done.

Give Credit Where Credit is Due

The use of JS libraries like jQuery is approved to speed the development of your application, but the course expectation is that the overwhelming majority of the code was written by you. Once again, the use of JavaScript widgets that were written by others is prohibited.

To avoid plagiarism charges and an F in the course, be sure to document (both in your final documentation AND in code comments) each and every instance of borrowed media, scripts, classes, functions, or JS libraries. Give a link back to the original code or page.

Don't forget to give yourself credit - document your extra work!

Any doubts about what's OK to borrow? Ask in advance.