Key Information

Register
Submit
The challenge is finished.

Challenge Overview

We have recieved a submission that is good but need additional fixes, the submitter is not available and we are offering $200 to fix the issues in his submission, the details posted here http://forums.topcoder.com/?module=Category&categoryID=32407


Let's App is a mobile social network app to help users connect with friends and plan on site activities.
 
The goal of this challenge is to update the comments thread in the Activity/Photo details screen to have real time comments using Pubnub.com. In addition to improve the UX of these screens.
 
Challenge Requirements
 
Invision App

To view current design screens we prototyped and currently integrating with backend you can check here :
 
Activity Details screen https://projects.invisionapp.com/share/765X7JXVY#/screens/115618505
Photo (shared or posted) Details screen https://projects.invisionapp.com/share/765X7JXVY#/screens/128264199
 
Amazon Mobile Hub iOS SDK
Amazon Mobile Hub SDK already integrated with the current XCode project, we have the signup and signin flows integrated.
 
If you are facing a problem with current SDK or when making calls to AWS Lambda function, please post in forums, it might be AWS configuration issue.
 
Features To Integrate
The scope will integrate following features :
- Real time comments using pubnub.com
- Revamp how we pull comments and post it.
 
The pubnub real time integration will be in the iOS side not the backend side, meaning that when user post a comment and get added to backend, we emit the action to channel.
 
Integration Requirements
1. Current app will reload comments every few seconds, this behavior will be removed in this challenge.
2. When opening the screen pull the comments as currently done.
3. Change the spinner to be only in the comments section without the current dark background. It is currently blocking actions in the screen until comments are loaded.
4. Subscribe user to the channel to start publishing or receiving real time comments.
5. You need to study pubnub and investigate how to emit and receive messages.
6. The channel will cover the whole screen details, but for now we are only addressing comments section, in future it will address updating activity, likes, invitees, and photos.
7. The following actions will emit to the channel :

1. Posting a comment.
2. Posting a comment with photo : in this case the emit should wait until photo is fully uploaded.
3. Posting a photo without comment via comment section : in this case the emit should wait until photo is fully uploaded.
4. Adding photo to activity : in this case emit should wait until photo is fully uploaded.
5. Liking a comment/photo.

8. Document the structure of the message to emit in the code, not sure about the valid format but we expect you can pass a json object.

1. For posted comment/photo it can have the following fields, it will be the response of the posted photo or comment object.
2. For like action it can be the comment#Id

9. Also we expect that each action to be emitted will include an action type to identify what the action so ios app can render it properly, i.e. actionType=comment expect new comment received, actionType=like, a new like for comment. This will give us flexibility to add more actionType in futures to handle activity update or other real time update in the screen.
10. Take into consideration that the pubnub.com will be used from backend in future to emit messages to ios apps for these detail screens.
11. Update the displayed photos in the comments thread or details screen to use the correct dimension as mentioned here https://drive.google.com/open?id=0B5_NPazXhVVyaXRZZnlqc01ORnM
12. When adding a photo or comment with photo please start with the small size that need to be rendered in the comments section, once it is uploaded immediately make the call to backend. Don’t wait until the large size image is uploaded, the large size should be uploaded silently and posting comment should not wait for it to be fully uploaded to s3.
13. When posting the comment show it in the comment thread right away even if it includes a photo, add a fade styling or spinner below the date section in comment as indication the comment is being posted and app is working on it instead of using the spinner with dark background.
14. When user leaves the screen, unsubscribe the user from the channel.
15. BUG TO FIX : comment will include likesCount field, should be used to set the likes count for each comment.
16. BUG TO FIX : myLikes array is returned from GetComments function used to set the like/heart of each comment for the currently logged in user.


Again, it is very important that the ios app be fast in processing the action without letting the user wait for long time, that simply by showing the content posted by the user even if there is a background task that do a backend call or upload. YOUR submission will be judged based on this note.
 
Postman File
Attached in the challenge forums postman file that you can use in postman app to test the lambda functions, see sample calls and responses https://www.getpostman.com/
The URL you will use to test the calls is http://54.164.65.111:3500
 
For FB and Google access tokens we create demo page to get them  http://54.164.65.111:5000 (this is only needed when you test the backend via postman, you will use the FB/Google iOS SDK to get these tokens if user signup using these social networks)
 
The function's name in postman is in format /User/{function_name}, the AWS lambda function format is User_{function_name} so when you invoke function make sure to follow the format User_{function_name}.
 
Deliverable
- Git patch file of the changes you made to the XCode project.
- Deployment guide and verification document.
 



Final Submission Guidelines

.

ELIGIBLE EVENTS:

2016 TopCoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30053446