Web 2.0 Application in the Cloud

Implement and deploy a web application to Google App Engine.  Alternatively, you can target your virtual server.  Java or Python may be used for server-side code.  Feel free to use any software or libraries you can find (legally).  For example, you could use GWT on App Engine, implement a custom server in Python, run Java servlets from Tomcat, or anything else you want to do.  If you want to use a different language or platform, please talk to me first.

Your application should be your own design.  You should adhere to a layered architecture:
  1. Data Layer: database and any classes related to the database
  2. Logic Layer: any server-side classes
  3. UI Layer: any client-side classes
Each layer should be designed to be as independent as possible, communicating through interfaces where appropriate.  This is not a formal requirement, but will help you organize your code.


  1. use a database for persistence (Hibernate, JDO, JPA, or native/SQL interfaces are fine)
  2. provide a REST API (Atom, RSS, XML, JSON, JSONP, etc) or XML-RPC interface to information in your database
  3. implement an interactive client-side mash-up which uses your API and a third-party JSONP API
Additional Graduate Student Requirement

If you are enrolled in the 7xxx version of this course, you must additionally provide the following:

  • a short paper (1-3 pages or so) detailing the design of your application
  • online documentation of your REST API

Group Option

You may work with a partner on this project under the following conditions:
  • your clients must be functionally different in some way
  • you both must implement separate and distinct JSONP REST APIs for Requirement 2 above
  • your mash-ups must use each other's APIs; additional third-party APIs are also allowed (for visualization, for example)