Register
Submit a solution
The challenge is finished.

Challenge Overview

Project Overview

This app is like Pinterest or Tinder for all motorcycle owners. Motorcycle owners post pictures of their bike(s) and identify customizations they have made. Other motorcycle owners can search for and view bikes with the customizations they are interested in. Gamification is added to gather more data and to give it more stickiness.

Competition Task Overview

In previous challenges we have built a functional iOS app, now we are looking to fix some bugs and implement some enhancements.

General Requirements

  1. The app must be built using Swift and needs to be compatible with Swift 4 and Xcode 9.1
  2. The app must work on iOS 9+ and iPhone 5 SE and above
  3. The app is iPhone only and only needs to support the portrait orientation, it should work on iPads in scale mode though
  4. The code must be properly documented
  5. The app should provide good user experience, for example: when the app is performing actions that takes time (like uploading a document), the app should not look like it's freezing, instead a loading indicator should be shown to let the user know some action is in progress
  6. No hardcoded data in code, data should come from the API after the integration

Detailed Requirements

For this particular challenge, the following specific items need to be worked on:
  • Implement push notifications (API already supports it).
  • Messages screen is not tied to the web socket, only notifications are. Both new messages & online status should appear in opened messages page.
  • The browse by cards screen is not paged correctly, it should always request the first page.
  • Motorcycle link is not handled (should open a motorcycle’s details if logged in).
  • Existing flow for registration is not stable (requires a mail client installed on device, user might not want to use his primary mail with a social app) and is confusing (important info is conveyed as an dismissible alert). we need an intermediate screen to better show the important info.
  • It seems that the app is somehow caching some data and even when I log out the data is not cleared, it's causing error when we cleared all data in the backend and re-inserted real lookup data, while the iOS app still shows the old data and login.
  • I uploaded a motorcycle, added a comment, but the number of comments is not reflected on the motorcycle details screen.
  • Since we aren’t getting a website anytime soon, we need to replace all links with universal using a service like branch.io, the free plan should be enough (let us know otherwise).
  • Message duplication (something wrong with db upsert or it’s an insert somewhere)
  • The app sometimes crashes when panning on empty view on browse by card screen (seems to be in Koloda framework, might be ios11 specific).
  • Messages & comments - the textfield is jumping around for no reason in some cases.
  • Whenever I try to message myself, the app will keep showing the loading indicator on the message screen, and when I close that screen it says "Session Expired". I think that there's a bug in the iOS app. When user sends a message to himself, the back-end returns 400 error. It looks like this is not properly handled by the iOS app.
  • I can't seem to tap on a modified part photo to see a larger view of it on motorcycle details screen.
  • Many times after I login and try to view details of my own motorcycle, it crashes.
  • When sending a message with attachment/image, we can’t control send time, we can only send the message after upload completes. Right now the app doesn't handle this well, I think we can present the message right away, but we do need to check if sending has succeeded/failed and update the display accordingly. We need to properly handle this in the iOS app. You need to take care of details like ordering, some with progress, retries, timestamps, etc.
  • The link in refer friends is supposed to be usable with other means (not iMessage or email), we need to be able to create it, but not create a corresponding referrer object until it is used. We have modified existing POST to invitation endpoint to have a new type called "other" which does not require email or phone or name, the iOS app should be updated to support that.
  • We have fixed a few issues related to social login, and we expect the iOS app to be double checked / updated to work with these:
    1. For instagram login we are generating a unique fake email for the user
    2. For social login users oldPassword is no longer required to change the password
    3. Backend updated to make sure the account is verified after social sign-up. Note that the password will be clear if the email has not verified before.
  • Mark as read batch API is available for both messages and notifications, iOS app should be updated to use that.
  • Notofications now include a text field as well, so that it should be easier for the iOS app to display them (notification.type and notification.content).

Technology Overview

iOS 9+
iPhone 5 SE+
Swift 4
Xcode 9
Heroku
Amazon S3



Final Submission Guidelines

Submission Deliverables

- A single zip file including all files that cover all the mentioned requirements
- A complete and detailed deployment document in markdown format explaining how to deploy the application including configuration information.

Final Submission

For each member, the final submission should be uploaded via the challenge detail page on topcoder.com.

ELIGIBLE EVENTS:

2018 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30059569