Key Information

Register
Submit
Status: ‌Cancelled failed screening

Challenge Overview

Project Overview

Document Canvas iPad App is an iPad app for concept of document canvas where user can interact with salesforce chatter files and organize them into local folders.

This challenge is to build this iPad app by latest Swift programming language and iOS 8.

Competition Task Overview

For this challenge, the following features are required:

  • Native/iPad Portrait Only/iOS 8+,  bundle ID is com.appirio.mobile.dc
  • Build by latest Xcode6 beta6/Swift, Use Swift as full major language anywhere possible, Objective-C can be used ONLY where Swift does not support a specific feature.
  • Integrate with Salesforce Mobile SDK and Salesforce Chatter REST API, we built one PoC Swift implement and you can take the winning code as reference. 
  • Chatter file download and upload functions should be encapsulated as two Swift scripts, which code is organized in a way that it will be simple to include into other Swift projects and reuse. Need document for usage of this two scripts.
  • Offline support: 
    • All feed data(non local folder/file) can be cached by SmartStore Soups which tie to auth lifespan, and will be re-fetch in each login.
    • Any downloading files will be paused when device offline and auto start downloading when back to online.
    • In offline env, any network opertaions in feed list view (refresh feed, scroll to bottom to fetch next page, download new file, logout, new post, comment, like, filter feed list) will popup alert "This operation is unavailable for offline deivce". and will auto allow operate when back to online.
    • When start the app in offline env, goto document canvas view directly.
  • In current phase, presume this app and device is used by single user, don't need consider multiple/different users login OAuth and offline data secure.
  • Based on storyboard (Standard & Retina). detail comments see "UI" section below.

UI

  • Launch Image (Page_1)
  • Login(Only required when device online): Use OAuth redirect to login salesforce then display feed list(Page_2_0), see provided code; if token expired in app running and request get fail, you need auto send refresh token to get new token to retry failed request.
  • Chatter File Feed list (Page_2_0): GET /chatter/feeds/files/me/feed-elements
    • newer is on top, auto load next page when scrolling to last item.
    • update the list by calling "updatesUrl"(see API) when login this app or clicking "Refresh" in left slidein menu.
    • Only files types configured in the app can "Move file to canvas". which should be configured in plist with both file types(images jpg/png/gif, PDF, word doc/docx, ppt/ppx, xls/xlsx) and icon image files mapping.
    • Click "Move file to canvas" will start downloading file(Download_Flow.jpg), the UI will display state like Page_2_6 and then Page_2_7. you need maintain file state with its downloading/downloaded/deleted from local(same like not download).
    • Like, Comment will go to Page_2_3, Page_2_4
  • Filter(Page_2_1): select one item will request file feed with the selection, default is "All", others are group names for current user. No "Company Feed" here.
  • Menu(Page_2_2): slide in/out from/to left.
  • Create New Post(Page_2_5): can upload photo from gallery.
  • Document Canvas(Page_3_0):
    • All folders/files shoud be dragable; root and all folders should be dropable. Regardless of "My Canvas" and "Files from Chatter", able to DnD any and anywhere.
    • Swipe on screen to change pages, change pagination to small dots (pagination indicator.zip) as indicator without clickable.
  • "Files from Chatter"(Page_3_0) is one temp location for downloading(with progress) and downloaded(not organized into canvas) files from chatter feed. you can search or operate on local files.
  • "Files from Chatter" batch selection (Page_3_1), this display when toggle "Select" or "Select All", then you can batch "Move to my Canvas"(Page_3_4, Page_3_5) or "Delete"(Page_3_2, Page_3_3), Note delete files will cancel its downloading in case and delete it from local and update its state in its file feed back to "Move file to canvas".
  • "My Canvas": organize folders/files which downloaded and moved(drag) in my canvas. opertaions are almost same like upper,
  • Single File View(Page_4): only downloaded file can open to view by system support.

 

Documentation Provided

File Name Note
186250.zip Storyboard, Standard & Retina
pagination indicator.zip Pagination indicator PSD
Salesforce Mobile SDK Swift Integration.zip Proof Of Concept - Integrate Swift and Objective C and build iOS8 app with Salesforce Mobile SDK winning submission, you can take this as reference how to integrate Swift with Salesforce Mobile SDK. 
Note it works under Xcode6 beta2 but doesn't work under current Xcode6 beta6
SFDC_Swift-build-fix-6.5.zip This's our fix for the reference code to make it work under Xcode6 beta6


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 functionality defined by the requirements documentation.
  • A complete and detailed deployment documented explaining how to deploy the application including configuration information and verification.

Final Submission

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

 

ELIGIBLE EVENTS:

2015 topcoder Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30045204