Key Information

Register
Submit
The challenge is finished.

Challenge Overview

The purpose of this project is to build a mobile application which will be used in the client stores to provide help for customers that come to the store looking for help with their account.  This challenge will do an initial service integration and will update the UI with some updates from the client.

Updated UI

An updated UI is available in the forum.  It's relatively close to what the initial UI was, with some differences in the header / navigation and some colors and minor UI changes.  Please use the PDF to perform the updates, unless you have Adobe InDesign and can load the source files.

Login service

The final application will use login services that aren't currently exposed publicly.  We have built some wrappers to mock the functionality but return "real" data.  A sample Ruby script is provided in the forum.

When a user logs in, we will retrieve *two* separate login tokens - a CIMA token and a WebSec token.  These tokens have to be attached to all API calls to the Timeline service detailed below.

We are going to wire up the login in this challenge to the mock services, and we will eventually switch out the configuration to point to the "real" service.  The username and password will be passed to the WebSec service, and the CIMA token is retrieved using just the client ID and client secret.

Timeline service

On the customer profile is a grid in the bottom right that shows the timeline for customer requests.  We want to fill this in with Timeline data retrieved from the timeline service.  This service is part of the iOS Base Libraries, which are linked into the git project as a submodule.  You will be expected to update the Timeline service with some updated specifics in terms of authorization (see sample Ruby script attached in the forum).  You will need to properly apply the bearer tokens retrieved above (CIMA and WebSec) to all Timeline API calls.  This is new functionality that is *not* implemented in the current base libraries.

The grid in the bottom right will be filled in with the various events.  Clicking on a cell will show the details, as now seen in the updated storyboards provided.

Configuration:

Please make sure that all endpoints, servers, client IDs, and client secrets are configurable in the app as these change regularly as the client provides us with new details.

Swift

Please target the latest version of Swift, iOS 9, and XCode for the app.  

Your submission should be well laid out and encapsulated.  It's important that the UI be able to load data asynchronously since all the data will come from the network.  Don't block on anything in the UI while waiting for data to load.

3rd party plugins

If you would like to use third party libraries for anything shown in the UI, please get approval in the forum.  Generally, anything with an MIT or BSD license is fine, but GPL or LGPL licensed libraries won't be approved.
 
Submission format

We will target the "develop" branch in the Git repo.

Your submission should be provided as a Git patch file against commit hash 22258da1219b4f5fbd396480554647cc26b18994.  MAKE SURE TO TEST YOUR PATCH FILE!
 

 

Final Submission Guidelines

Please see above

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30054582