Challenge Overview

This challenge is the culmination of a series of Topcoder Competitions to develop auditing capability for products in the HP US Product Store.  We've developed a web crawler to pull the raw html from the site, and data extraction processes to parse data and put information into the Vertica database platform.  We've also developed a REST API which allows clients to access the data in JSON format over HTTP.  In this challenge we're going to develop the first client for this service -- a Product Inventory Audit Web application.  The front end for this application has been developed in the following prototype challenge:  http://www.topcoder.com/challenge-details/30051245/?type=develop&noncache=true.

This web application has essentially 3 screens.  You be using the API mentioned above to populate product information in the web application.

1.  Dashboard
2.  Search
3.  Product Detail 

You do not need to implement the alerts.html screen or the login.html page found in the Final Fix.zip.

Notes: 

1.  Dashboard - This is essentially a simplified version of the search screen.  You'll be using the products API interface.  There are a couple of adjustments here to make:

���a.  Select by Status should be changed to "Select by Availability Status".  We're not currently capturing the "Out of Stock" status.  The current availability values should be "All", "Available", "Not Available", and "Removed".  A product is available if its auditTimeStamp = yesterday and the comingSoonDate is null or is less than yesterday.  A product is removed if the auditTimeStamp less than yesterday .   A product is "Not Available" if its auditTimeStamp = yesterday and the comingSoonDate = yesterday.
b.  We should add a product filter.  The values for the filter should be "All", "Desktops", "Laptops", "Tablets", "Laser Printers", "Inkjet Printers".
c.  The columns for the results table should be:  Product Name, Product Type, Rating (also shows # of reviews), Availability Status, Product Number, Price
d.  The page should an export to csv function.

2.  Search - This screen allows users to search on a variety of dimensions.  You'll be using the products API interface.

a.  Search dimensions selected in the left bar should be added to the search tags.
b.  The search box should allow users to search the productName and productNumber fields.
c.  The values currently support in the Availability selection are All, Available, Not Available, Removed.   A product is available if its auditTimeStamp = yesterday and the comingSoonDate is null or is less than yesterday.  A product is removed if the auditTimeStamp less than yesterday.   A product is "Not Available" if its auditTimeStamp = yesterday and the comingSoonDate = yesterday.
d.  Remove the Compatible OS search section.  That isn't supported the with the current version of the API. 

3.  Product Detail - This screen shows the product details.  You'll need to determine the type of product (from the search or dashboard screen) so you know which API all to use.

The api has the following endpoints:

/api/v1/products
/api/v1/products/:product_number
/api/v1/products/:product_number/images
/api/v1/products/:product_number/relatedaccessories
/api/v1/desktops
/api/v1/desktops/:product_number
/api/v1/laptops
/api/v1/laptops/:product_number
/api/v1/printers
/api/v1/printers/:product_number
/api/v1/tablets
/api/v1/tablets/:product_number

The API is public and can be accessed at the following location:  http://52.89.140.95:8080.  This example uses curl:  curl -v -H "Content-Type:application/json" -X GET "http://52.89.140.95:8080/api/v1/products" | python -m json.tool.  

The API also supports a robust set of search parameters.  These are listed in the following Google Doc: https://docs.google.com/spreadsheets/d/10SNWr54IANT1df9po0wfL_L68fxgduLW6IdcuiHfKys/edit?usp=sharing.  In addition to the parameters discussed there, the API provides capabilities for paging and sorting.  There is a document attached which provides detailed examples of the API's usage: test_files.zip.

Also attached is the underlying schema of the database.  You don't need to interact with the database directly in the challenge.  But the API maps closely to the underlying database schema.

Technology:

  • Java version 1.8

Supported Browsers:

  • IE10+
  • Latest Google Chrome (Windows & Mac OS)
  • Latest Safari (Windows & Mac OS)
  • Latest Firefox (Windows & Mac OS)


Final Submission Guidelines

- Please use Java-based technologies and frameworks to build this web application.   You have flexibility about which web development frameworks you'd like to employ.
- Please use Maven as your build tool.
- You should provide a .war file that can be deployed to java-based web server such as Tomcat or Heroku.
- Upload all your source code in a zip file.
- Provide documentation for your solution. Your documentation should provide precise deployment instructions, system requirements and dependencies, and instructions on how to run the application.
- A screen-share video of your application is required describing its features, basic design and the API’s that your application uses.  You do not need speak English in your video and you will not be penalized if you don't.  Simply type/cut and paste a few lines into a text editor to subtitle your submission where explanation is required.

ELIGIBLE EVENTS:

2016 TopCoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30051778