Register
Submit a solution
The challenge is finished.

Challenge Overview

Project Overview

We currently have an Asset Library, which is a repository of reusable code components that we leverage for the delivery of cloud-based solutions for our consulting customers. It's a JQuery app that runs on AWS and accesses a database that's on Salesforce. Our users are exclusively in Salesforce, so the UI is iframed into a Visualforce page (and the users can access the data in Salesforce using the native Salesforce UI as well). The application is an "Asset Search", that's basically a custom search against the Asset object in Salesforce (see screenshot in forum).

Competition Task Overview

We want to replace the internal, home-grown search implementation with a much higher-quality, existing cloud-based REST search API.  Previously we build a PoC using Amazon CloudSearch (see http://www.topcoder.com/challenge-details/30038825) and it worked very well and covered exactly what we expected, but now we want to make some more enhancements to this PoC.

The following requirements must be implemented by this challenge:

  • Add filtering to the Asset Search. Similar to the screenshots we provided (in PreviousDocuments.zip), but more generic and comprehensive. It should be a generic, configurable filter that could add any of the Asset fields that have a fixed set of values (services practice, type, subtype, release stage, platform, etc.). What we mean by this is we don't just want hardcoded filters, we'd like a generic filtering component that can be told which fields to show, and it shows those. Similar to filters on Amazon's search (http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=tents) or REI's search (http://www.rei.com/search?query=tents). UI is not particularly important, but should be usable to do the filtering.
  • Expand the indexing to also index Asset Collections. We'll provide a new unmanaged package that includes Asset Collections, but they basically just aggregate Assets, and have a few metadata fields that should be indexed. There's a many-to-many junction object between them (called Assets in Collection).
  • Expand search to also show results for Asset Collections. Add a second sub-tab for Asset Collections - a single search runs against both Assets and Asset Collections, and shows the results on the 2 sub-tabs. 
  • Add filtering to the Asset Collection tab just like the Asset tab. Should be able to use the same generic filter code as the Assets subtab, but applied to the Asset Collections fields.
  • Provide a control on the Assets and Asset Collections subtabs to sort the results on that tab. Sort options are Newest (based on Creation Date of the record in Salesforce) and Alphabetical (based on the Name field of Asset or Asset Collection)

The storyboard (asset collection search and filtering for tc.pdf) can be found in contest forum, it shows one search with 2 tabs of results, plus the idea for filtering and sorting.

The UI is just to show the features; you don't need to follow it, except that the separation of Assets and Asset Collections into separate result sets and filters is important. You should start with the code from the past contest (PoC.zip), and use that for search results.

Here's an unmanaged package that includes Assets (as in last contest) and Asset Collections - https://login.salesforce.com/packaging/installPackage.apexp?p0=04t90000000AfaP

The same data load file will continue to work for Assets. We don't have a data load file for Asset Collections, but they're very easy to create in Salesforce and this is a required deliverable in your submission.

Technology Overview

  • Amazon CloudSearch
  • Salesforce
  • JQuery / Bootstrap / AngularJS

Documentation Provided

Register to see attachments in the forum.



Final Submission Guidelines

Submission Deliverables

A complete list of deliverables can be viewed in the TopCoder Assembly competition Tutorial at: http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorials 

Below is an overview of the deliverables:

  • Fully Implemented PoC that covers all requirements (old requriements must not be broken).
  • Salesforce / AWS development guidelines must be followed, for example: Salesforce requirest at least 75% test coverage in order to deploy to production code.
  • A complete and detailed deployment documented explaining how to deploy the application including configuration information.
  • The build script(s) to build/deploy the application (if applicable).
  • Test data to run/verify your submission.

Final Submission

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

ELIGIBLE EVENTS:

2014 TopCoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30039098