Challenge Overview

1.     Project Overview

1.1     System Description

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 backend REST services support.  

This assembly is responsible for integrating UI prototype with the backend. In the integration  assembly #1, we already implemented part of the functionalities of mobile app. In this assembly challenge, you will implement the rest functionalities.

 

1.2     Competition Task Overview

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     Login

  • The normal Login will call “5.1 Login” REST API

  • Login with LinkedIn

  • Frontend will start OAuth2 web flow to obtain LinkedIn OAuth token

  • Frontend will call “5.2 Login with LinkedIn” REST API to login.

  • Appropriate client side validations should be performed before submitting the REST API request. The error state of each field is demonstrated in the prototype.

 

1.2.2     Sign Up

  •  Sign Up will call “5.4 Register User” REST API

  • Appropriate client side validations should be performed before submitting the REST API request. The error state of each field is demonstrated in the prototype.

 

1.2.2     Logout

  •  Logout will call “5.3 Logout” REST API

  • After logout, the page should be reset to the anonymous state.

 

1.2.3     Take Our Polls feature

  • Polls will be retrieved using “7.1 Get All Active Polls” REST API. You can assume there will be only 1 active poll in the system.

  • Poll vote will be made using “7.2 Submit Poll Answers” REST API.

  • Poll results will be retrieved using “7.3 Get Poll Results” REST API.

  • Please note that “Take Our Polls” widget only available after user logs in and exists in every page.

 

1.2.4     My Feed Update

  • Now “My Feed” feature is implemented with a predefined mock categories list. It should be updated to

    • Frontend will call “5.7 Get Current User Preferences” REST API to get user preferences (selected categories, etc.)

    • Then frontend will call “8.1 Search Contents” REST API with the selected categories/content types/etc. in the user preferences

    • Pagination should be used so that when user scrolls to the end of the grid/list, more will be loaded

 

1.2.5     Filter Panel Update

  • Time Filter at the bottom of the Content Types filter should be implemented. User can choose a date range to apply the time filter. Please refer to the prototype.

 

1.2.6     User Profile Panel

  • It should call “5.5 Get Current User Profile” REST API to get user profile, and show the Bookmarked / Liked / Shared / Viewed  contents on the page.

    • Clicking Bookmark should show the list of Bookmarked content

    • Clicking Liked should show the list of Liked content

    • Clicking Shared should show the list of Shared content.

    • Clicking History should show the list of viewed history.

    • If there are a lot of contents please use a scroll bar which allow user to drag down.

  • Clicking  the user name or the picture will pop up the dialogue to edit user.

    • Use “5.6 Update Current User Profile”  to update user profile

    • Use “5.9 Update Current User Password” will be called to update user password

    • “5.11 Update Current User Picture” will be called to update user picture

 

  • Clicking Preference will popup the dialogue to edit the the user’s preference. User needs to choose what categories he/she interested in. If the user does not have preference created, default to select all the categories. If user has preference, please populate it with existing data when user clicks it. REST API 5.7 and 5.8 should be used for this feature.

 

1.2.6     Notifications

  • 5.12 Register Notification Device Token should be used to register the notification token based on the current platform of the app.

  • The notification should be implemented.

 

1.3     Deliverables

  •  Source code and configuration files of the front mobile app.
  • If the backend api needs to be updated, please also submit the updated backend api.
  •  Deployment guide to configure and verify the application - Please update the existing front mobile app deployment guide.

1.4     Technology overview

  • Java 6
  • 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.5     Existing Documents

  • The backend API with the deployment guide
  • The frontend mobile app with the deployment guide
  • The prototype
  • Class Diagrams
  • Sequence Diagrams
  • Application Design Specification
  • Assembly Specifications
  • REST API Specification
  • JCR Custom Node Types Diagram (included in TCUML)


Final Submission Guidelines

Setup & Reference

  • Request access to the Gitlab repo group here http://tc-ragnar.herokuapp.com/ragnar/groups/5613f730d601610e000f21bd/284538, by posting on the forums, or emailing hohosky@gmail.com

  • Once added to the team, fork the repository and work off https://gitlab.com/dinnaco-driven/mobile-app/tree/feature/30050492-App-Integration-2.

Submission

  • Source code and configuration files of the front mobile app.
  • If the backend api needs to be updated, please also submit the updated backend api.
  • Deployment guide to configure and verify the application - Please update the existing front mobile app deployment guide.
  • Add jcori as a member of your forked repository
  • Winner will be required to submit a merge request on gitlab against the branch specified

ELIGIBLE EVENTS:

2016 TopCoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30050492