Challenge Overview

Note - If you're an Android developer but do not have a Salesforce background, this is a good challenge to participate on as all Salesforce interactions are done via the Salesforce Android SDK which abstracts some of the complexities. We'll try and provide all required support in the forums for any Salesforce help. Go for it!

A major distributer is interested in building a new system to help their drivers manage their sales in a more effective way.  We will be starting with a basic prototype to show that this can be a solid solution.

CLIENT REQUIREMENTS:

Community members participating in this challenge must be 21 years of age or older.  Your registration for this challenge is your confirmation of age.  If you do not meet this age requirement, you are not eligible to receive any prizes for this challenge.

All submissions are required to include a basic text file including only the following information:

"I certify that I am 21 years of age or older.  My birthday is DD/MM/YYYY"

Please fill in the date with your actual birthdate.

REVIEWER:

Confirm this information is provided by each challenge submitter prior to reviewing any submissions.  Missing age verification is an immediate disqualification.

Please build a prototype Android mobile application for both phone and tablet that connects to Salesforce standard APIs and stores data in offline mode.

The goals we want to accomplish with this challenge:

  1. Show that Android is a solid performing platform for the use cases mentioned for this app

  2. Show that we can easily integrate with Salesforce using the Mobile SDK

  3. Show that Offline capabilities are intuitive and seamless

The driver of a semi-truck will go to the warehouse in the morning and get the list of his stops for the day (also called his route) while his truck is being loaded with product.  The driver then departs to each stop to deliver product.  After the driver is done with all deliveries, he will return to the warehouse.

Please complete the following use cases:

  1. Every morning, the driver should be able to actively sync his accounts, and orders for all the stops he has that day

  2. Driver should be able to view a list of orders for that day and see details of each order

  3. Driver should be able to see line items in the order, including product details and pricing

  4. Driver should be able to see account details associated with each order

  5. Driver should be able to route to that location using the device’s GPS

  6. Driver should be able to mark an order complete while online and offline. When it's completed offline, it should be synced back to Salesforce when the drivers syncs manually with Salesforce.

We do not have any PSDs/ designs to follow, so we do not expect this application to be branded or styled perfectly but it should follow the Android UI conventions and look asethetically polished.  Please create the applications based on the included wireframes.  

Specifications:

  1. This should be a native Android application that should be fully functional in offline mode (Use the SmartStore capabilities from Salesforce Android SDK)

  2. You will need to register for a free Salesforce dev org. We are expecting that you’ll be using standard objects, fields and APIs, so there is no extra setup involved.  You can register for a free developer org here!  

  3. The app will leverage the oAuth capabilities for authentication that are by default provided by the Salesforce Android SDK. Getting Started Guide here.

  4. The user should be able to trigger the sync mode - This should purge the old data and download new data for that day.  Use a passive alert when completed (explained below)

  5. Data should be persisted on the device using the SmartStore.  This will be a key/value type data storage as it will be easier to manage with the UI (less code/queries).

  6. The routing to a location using GPS should open the device’s google maps application and automatically route to that location - no need to build a map into this app.

  7. Passive alerts should be used for saving orders back to Salesforce.  The order may be marked complete while in offline mode.  That order record should be flagged as dirty at that time.  When the device regains a connection, there should be a process that grabs all dirty orders and updates them in salesforce.  When successful, show a passive alert on the screen for 5 seconds that says “X records have been saved.”  If error, show passive alert as well.

BONUS!

  • In the Android application, create the ability for the driver to see the accounts plotted on a map.  You can populate Latitude and Longitude on the Account record and plot those locally.

 

Data Model

Below are the objects you will need to setup dummy data for.  These are all standard objects in Salesforce so you shouldn’t need to create any config.  Please plan to use the fields that are shown in the wireframes. If you need help populating data in the Salesforce org, please post in the forums

  • Account - Standard Account in Salesforce

  • Product - Create dummy product records and add them to a pricebook

  • Order - create an order for an account and add order line items to it (these refer to the product).  There is a standard Salesforce UI to create this data very easily.

    • You will also need to create a Contract record, which is referenced on the Order.

Wireframes

Wireframes are at:  http://pnxebi.axshare.com/#p=android_frame_for_desktop_view

01 - Splash

  • displayed when user opens app and app is loading

02 - Sync

  • this screen is displayed when app is syncing with Salesforce

  • the app will sync with Salesforce when:

    • user opens the app for the first time that day

    • user clicks the sync icon in upper left hand corner

03 - Home

  • Card in upper left will always link to the map of delivery

    • action button: View Delivery brings up the native google map application with the day’s delivery locations

  • Remaining Cards will show the Accounts scheduled for delivery that day

    • displays the Account Name and Address

    • action button: View Order displays order details (see 04 - Order)

    • action icon:  Location icon brings up the  native google map application with that account location

04 - Order

  • displays Account Name and Address

  • displays Order Number and Order Total

  • action icon:   Location icon brings up the  native google map application with that account location

  • action button: Order Complete changes the order status to complete and displays the home screen

05 - Saving to Salesforce

  • when the app is Saving completed order information back to Salesforce, an alert message will be displayed

  • to view the alert message in the wires, make sure the wire is showing the phone frame and click on the wifi icon at the top



Final Submission Guidelines

A complete list of deliverables can be viewed in the Topcoder Assembly Competition Tutorials.

Additionally,

  1. All code should be well-commented.

  2. Code must work for Android API level 19 and above

  3. Target devices are Samsung Galaxy S4 & S5. 

  4. Lock down the app to portrait mode.

  5. Provide a video overview of your submission

ELIGIBLE EVENTS:

2016 TopCoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30052541