Challenge Overview
Note - This challenge has a shorter appeals timeline (12h) and a fixed review fee of $180
Welcome to the TI Mobile iOS API Integration challenge.
We’ve run two challenges for this app so far.
TI Mobile iOS App Prototype Challenge - This has built all the screens for iOS app
TI Mobile Nodejs Backend Assembly Challenge - This has built all the required backend APIs for this app
Challenge Requirements
In this challenge, you will use the existing app codebase which implements the iOS app prototype and integrate all backend APIs.
-
Please refer to the provided Swagger & Postman collection for understanding the API
-
Please see the API to screen mapping document to understand which API is used on which screen
-
The following APIs/ screens are in scope
1) Login screen (https://marvelapp.com/jfjdh2g/screen/33360333 )
For local sign up create user functionality (POST /signup) will be used. For login POST /login will be used. For forget password POST /initiateForgotPassword will be used.
2) Get states (https://marvelapp.com/jfjdh2g/screen/33341322 )
GET /lookups/states will be used.
3) Search racetracks (https://marvelapp.com/jfjdh2g/screen/32622009, https://marvelapp.com/jfjdh2g/screen/32622012 )
Search racetracks (GET /racetracks) and search TrackStory (GET /trackStory).
4) Get track story and user progress (https://marvelapp.com/jfjdh2g/screen/32358828 , https://marvelapp.com/jfjdh2g/screen/32358827 )
Get TrackStory (GET /trackStory) and get TrackStoryUserProgress (GET /trackStory/{id}/userProgress).
5) Get comments (https://marvelapp.com/jfjdh2g/screen/32622018 )
To get the comments GET /comments should be used. To post the comment POST /comments should be used.
6) Complete additional task and receive points (https://marvelapp.com/jfjdh2g/screen/33341317 )
PUT /trackStoryUserProgress/{id}/completeAdditionalTask will be used.
7) Complete the story and receive rewards (https://marvelapp.com/jfjdh2g/screen/32358812 , https://marvelapp.com/jfjdh2g/screen/32358815, https://marvelapp.com/jfjdh2g/screen/32358814 )
PUT /currentUser/trackStoryUserProgress/{id}/complete and PUT /currentUser/trackStoryUserProgress/{id}/receiveRewards will be used.
The following APIs are NOT in scope and will be included in the next challenge.
A) Get user cards and badges (https://marvelapp.com/jfjdh2g/screen/32358817 )
GET /currentUser/userCards and /currentUser/userBadges
B) Get the user statistics (https://marvelapp.com/jfjdh2g/screen/32358819 )
GET /currentUser/statistics
C) Get the user profile info (https://marvelapp.com/jfjdh2g/screen/32358821 )
GET /currentUser
D) Get the achievements (https://marvelapp.com/jfjdh2g/screen/32622019 )
GET /currentUser/achievements
E) Get the daily tasks (https://marvelapp.com/jfjdh2g/screen/32622022 )
GET /currentUser/userDailyTasks
F) Get the market cards (https://marvelapp.com/jfjdh2g/screen/32622013 )
GET /cards
G) Get bookmarked racetracks (https://marvelapp.com/jfjdh2g/screen/32637259 )
GET /currentUser/racetrackBookmarks
H) Facebook Login
General Notes
NOTES
-
Only iPhone is in scope, the app will run in scaled mode on iPad. There should be NO hardcoding of data on respective screens once above mentioned APIs are implemented.
-
The code for iOS app prototype and backend is available in our Github repos. Please see forums for how to get access
-
All source code changes must be well commented and MUST follow existing coding conventions
-
If you face any API issues or have doubts related to request response for any API, please raise it in the forums so it can be clarified by client.
-
App must support iOS 11.x
-
All code must be written in Swift and the project must use latest XCode version. Do not use Objective-C or Bridging approach
-
Please ask in the forums if you wish to use any open-source third-party libs to ensure there are no license violations
Final Submission Guidelines
- XCode Project with all source code that addresses the requirements
- Deployment guide with configuration & verification steps. Describe all config params and include steps to run
- Demo video (Mandatory and will be scored down if not provided)
- Winner will be asked to raise a merge request to the repo