Challenge Overview

Project Overview

We have an existing web based application that allows users to create service requests and save drafts locally, and when the request data is completed the user can submit the data via email.

The current app is built with Java, runs on a local / embeded jetty server and uses a local h2 database. The only time it needs internet access is when submitting the request.

We'd like to re-architect this application to be hosted on a public web server (what we refer to as the cloud) with support for offline usage using HTML5.

Competition Task Overview

The purpose of this challenge is to design the best solution to achieve the following objectives:

  • Run on a cloud server (Linux Server + Oracle DB) so it is accessible from anywhere on the network
  • Frontend must be HTML5 that supports offline usage, data will be stored locally in offline mode and synced to cloud database when online
  • Frontend must support both Chrome and Firefox
  • For client side storage, single DB implementation is sufficient (Web Storage / Web SQL / Indexed DB), but you should identify the best option for this application

Detailed Requirements

  • The current application runs locall on jetty and uses h2 database, the cloud server is a Linux server with tomcat 7 and Oracle 11.2
  • The new application will only be deployed on the cloud server
  • The new application must be HTML5 and support offline mode, with local storage that can be synced to the cloud server when it goes online. Note users might also save attachments to a request which needs to be cached in offline mode too.
  • In the new version users will have to login, all data remains separate from other users, but the database is otherwise shared. So add a user_id column to identify which data to use. When offline, last login will be used and remembered. After login, we will read a field from the request header which will identify the user, this identity is used when we sync data to the oracle database on the cloud.
  • The architecture needs to be extensible (or needs to be really clear on how we can extend this solution), since the code you're looking at is just phase 2 of the application, and we have phase 3 & 4 going on in parallel which will add more data / tables / pages. 
  • The current application is not built with HTML5, we need a plan to convert this to HTML5 and this challenge must identify a plan to do this. The architecture must also provide sufficient technical details on how to implement this. Keep in mind that the current application uses jsp but to make it support offline mode, we may have to switch to static HTML + Javascript + CSS only for frontend, which means we might need to make all services RESTful.
  • Please consider and clearly describe how your solution handles the following cases:
    • The offline version should be auto updated to match the online version if updates are deployed to the server side while the app is offline. The process should be seamless to the user.
    • If changes are made to the server side database (like new tables / columns, deleted columns etc...), the offline data needs be updated to match the new database schema or there needs to be some way to preserve the local data and let user correct it. However the less user interaction it requires the better
    • If for any reason the browser failes to download any resource for offline mode, there needs to be some obvious way to explicitly let the user know that they can't use the app in offline mode until all resources are cached locally.
    • I'm not sure if there's any size limit on local data storage, but this application allows users to upload attachments and these need to be properly handled too in local storage. You can't just keep track of the file paths since the user might delete the files after they attach them to a service request.

Open Source Library

If you need to use anything not already used in the current app, please get approval from us.

Technology Overview

This is a high level list, for detailed list please check the existing application.

  • Linux Server
  • Java
  • JSP
  • Oracle 11.2
  • Tomcat 7
  • HTML5
  • CSS3
  • Chrome
  • Firefox

Documentation Provided

Register to download our existing code from challenge forum.



Final Submission Guidelines

Submission Deliverables

  • Application Design Specification
  • TCUML
  • Assembly Specs (no components)
  • ERD
  • Approach / plan to update frontend to be HTML5

Submission Guidelines

For each member, the final submission should be uploaded to the Online Review.

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30044491