Challenge Overview

1.1 Project Overview

The client for this project is looking to expand its automotive brand. Their current automotive digital strategy lacks an industry-specific marketing brand/platform, resulting in low viewership of digital content and low quality/quantity of contacts in the database.

The goal of the DRIVEN project is to introduce a sustainable automotive-specific application that aggregates content across the firm, digitally delivers that content to stakeholders worldwide, and can evolve with advancements in mobile technology and digital communications.

This project is expected to produce a mobile app supporting iPad and Android, with strong backend service support.  

This assembly is responsible for integrating UI prototype with the backend. The prototype is implemented with AngularJS and PhoneGap. The backend is REST API built upon the Magnolia CMS.

 

1.2 Challenge Requirements

A complete list of deliverables can be found in the TopCoder Assembly competition Tutorial at:

http://apps.topcoder.com/wiki/display/tc/Module+Assembly+Competition+Tutorial

Note: Please read the whole Application Design Specification first. All the details not mentioned in this specification are provided in that document.

 

1.2.1 REST API specification

Please read the REST API Specification for details of the REST APIs.

This assembly specification mainly specifies the integration points for each screen, referring REST APIs using the section numbers in REST API Specification document.

 

1.2.2 Home (see the prototype and home.png)

  • What’s New / Most Popular / Most Favorited / Most Shared contents will be retrieved using “8.1 Search Contents” REST API. Please note prototype does not have "What's New", please add it as the first row.

  • Pagination should be used so that when user scrolls to the end of the grid / list, more will be loaded. The content API has Limit and Offset parameters to use.
  • What's New content should be displayed in the carousel for now.

  • Polls / Login / Logout / LinkedIn Login and Register are out of the scope of this challenge. But you will need to mock the Login functionality to be able to test My feed / My dashboard related features.

 

1.2.3 Dashboard (see the prototype and screens in screens / dashboard folder )

My Feeds (dashboard-my_feed.png)

  • The Contents displaying is almost the same as "1.2.2 Home", but there should be one more row "My Feed" to display the contents the user subscribes to. It should be placed upon What’s New / Most Popular / Most Favorited / Most Shared contents. Note that the prototype is incorrect, you should add 4 more rows.
  • Frontend will call “5.7 Get Current User Preferences” REST API to get user preferences (selected categories etc.). This REST API is not implemented yet, please use a harcoded list of categories to mock by defining a method to return the hardcoded preference, we will replace the method logic in the future.
  • Then frontend will call “8.1 Search Contents” REST API with the selected categories /  content types in the user preferences to get contents for My Feed
  • Pagination should be used so that when user scrolls to the end of the grid / list, more will be loaded. The content API has Limit and Offset parameters to use.
  •  Mark Favorite/Bookmark
    • “8.4 Mark Content as Favorite” REST API should be called
  • Unmark Favorite/Bookmark
    •  “8.5 Unmark Content as Favorite” REST API should be called
  • Share
    • ShareThis (http://www.sharethis.com/) should be used to do social sharing
    •  “8.7 Mark Content as Shared” REST API should be called to track the sharing
  • Like
    • ShareThis should be used to do social liking
    •  “8.8 Mark Content as Liked” REST API should be called to track the liking.
  • Filter feature can be triggered from the left upper button (see screens/dashboard-filter.png), it should call “6.1 Get All Categories” REST API to retrieve all categories, the categories should be listed under Explore section besides My Feed. Clicking any category can mark it as selected category to filter. In the FILTERS Section, All and 3 content types (Articles, Video and Podcast) should be listed, the default selection is all 3 content types, user should be able to choose any combination of content types. User clicks the APPLY button will call "8.1 Search Contents" API call with the selected category and content types.
  • “Search” should call “8.1 Search Contents” REST API. The search result should be the same as index.html#/culture, just change the title from category name to Search Results.
  • Login and Logout should be mocked in this challenge

Right Dashboard Panel (See dashboard-right_dashboard_panel)

  • The user name and user picture should be displayed, you can mock the data for now.
  • Bookmarks, Liked, Shared and History are out of the scope.
  • Preference and Contact us are out of the scope.
  • Logout should be mocked.
  • NOTIFICATIONS section is in the scope. It should receive the notifications sent from Magnolia to APNS or GCM and displayed here.

1.2.4  View article

  • This page should show article content, the title/text are available from Content model.
  • If the content type is DOCUMENT and of PDF format, PDF viewer plugins will be used to show the PDF content (obtained from “8.3 Download Content Binary” REST API).
  • “8.6 Mark Content as Viewed” REST API should be called to mark the content as viewed.
  •  Related contents should be retrieved using “8.1 Search Contents” REST API with the same category and content type as current content.
  • Favorite/Share/Like should work as dashboard
  • Download should call “8.3 Download Content Binary” REST API.

1.2.5  Podcast

  • This page should use HTML5 <audio> element to play the audio.
  • “8.6 Mark Content as Viewed” REST API should be called to mark the content as viewed.
  • Related contents should be retrieved using “8.1 Search Contents” REST API with the same category and content type as current content.
  •  Favorite/Share/Like should work as dashboard.html
  •  Download should call “8.3 Download Content Binary” REST API.

1.2.6  Video

  • This page should use HTML5 <video> element to play the video.

  • “8.6 Mark Content as Viewed” REST API should be called to mark the content as viewed.

  •  Related contents should be retrieved using “8.1 Search Contents” REST API with the same category and content type as current content.

  • Favorite/Share/Like should work as dashboard.html

  •  Download should call “8.3 Download Content Binary” REST API.

1.3   Test and Verification
  • You should setup the Magnolia CMS and config all the REST API needed for this challenge.

  •  You should config the needed categories for the driven application, you can refer to the prototype for a list of sample categories.

  • You should config the 3 content types : article, postcast and video.

  • You should put test contesnts for all these categories and content types - very important. It'd be great if we can get test data population automatically done.

  • Both Apple Notification and Android Notification should be tested.

1.4     Deliverables

  •  Source code and configuration files.
  •  Deployment guide to configure and verify the application. The verification should contain all the required pages with the thorough test data prepared in 1.3

1.5     Technology overview

·         Java 7

·         HTML5

·         JCR 2.0

·         JavaScript

·         OAuth 2

·         JSON

·         LinkedIn API

·         SQL Server 2012

·         Tomcat Application Server

·         Amazon Kindle Fire (Android 4)

·         iOS 8

·         Adobe Analytics

·         Insight API JavaScript Client

·         Magnolia CMS 5.3.9 https://www.magnolia-cms.com

·         Jackrabbit 2.8.0 https://jackrabbit.apache.org

·         Apache Commons IO 2.4 https://commons.apache.org/proper/commons-io/

·         Scribe-java 1.3.7 https://github.com/fernandezpablo85/scribe-java

·         SLF4J 1.7.7 http://www.slf4j.org

·         AngularJS 1.4.1 https://angularjs.org

·         PhoneGap latest version http://phonegap.com

·         PhoneGap PDF Viewer Plugins

·         https://build.phonegap.com/plugins/896 (for iOS)

·         https://github.com/cyberkatze/pdfViewer (for Android)

·         lawnchair 0.6.1 http://brian.io/lawnchair/

·         PhoneGap PushPlugin 2.4.0 https://github.com/phonegap-build/PushPlugin

·         java-apns 1.0.0 https://github.com/notnoop/java-apns

·         GCM Java Client https://github.com/google/gcm/tree/master/client-libraries/java/rest-client

1.6     Existing Documents

  • Class Diagrams
  • Sequence Diagrams
  • Application Design Specification
  • Assembly Specifications
  • REST API Specification
  • JCR Custom Node Types Diagram (included in TCUML)
  • The Backend REST API application with deployment guide
  • The driven application prototype
  • The screens

 



Final Submission Guidelines

  • The whole source codes and configuration files.
  • The deployment guide with verification details.

ELIGIBLE EVENTS:

2016 TopCoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30051563