Challenge Overview
CHALLENGE OBJECTIVES
-
Build the mobile app prototype for the security and dashboard modules using ReactNative.
-
This is part 2 of the prototype and we have a lot more to come soon.
PROJECT BACKGROUND
-
We believe that our customers have more important things to do than wrestle with complex products or spend valuable time administering their banking arrangements. We recognize that professional and personal lives often overlap and our mission is to help empower our customers to achieve their ambitions by serving all their banking needs.
-
Banking customers are looking for a bank that can help them make their deal happen in an efficient, secure, fast, and flexible way as much as it can.
-
We understand different people want different things from "Relationship management"
-
We expect a counter-trend of “committed” relationships as customers react to digitization in our services.
-
Our goal in this project is to create strong direct relationships with our customers. We want to provide everything - a blended bank, preferential banking for their family, and open to non-banking services via our digital app (Responsive Web App and Mobile Hybrid App)
TECHNOLOGY STACK
-
React Native
-
Redux
-
Bootstrap
-
HTML5
-
CSS3
-
Material UI for icons / form validator / etc.
-
Axios for API integration
-
Typescript
-
JSON
-
Router
-
iOS
-
Android
CODE QUALITY
You must take code quality into consideration, for example, you should create components for reusable UI / features instead of copying and pasting the same code everywhere. This is considered a major requirement in the scorecard during the review.
API INTEGRATION
We don’t have the API ready yet but please make sure you don’t hardcode any data, instead please create local JSON files and use these as data sources for the new pages. You should create local services to get data from the JSON files and properly implement state management using Redux.
DEVICE SUPPORT
The mobile app will need to support both phone screens (portrait mode only) and tablet screens (landscape mode only).
This challenge will only cover the phone screens but you should keep the requirement of tablet support in mind and make your code as reusable and as easy to extend as possible.
SCREEN REQUIREMENTS
In general, please implement all the screens mentioned below, and make sure you cover all the details from design.
-
Splash Screen and App Launch Icons
-
For splash screen let’s use M - 15 - 10.png
-
For launch icons check M - 15 - 13 and M - 15 - 14 screens
-
-
Login Demo & Conditions
-
Implement the login demo video popup as shown in design M - 04 - 5
-
-
Recover User ID
-
Implement the recover user id flow as shown in design
-
Details like validation, and OTP must all be correctly implemented. Please note that when entering OTP the user must be able to enter all 6 digits directly without pressing tab or other keys, and when incorrect OTP is entered, it must be possible to clear all 6 digits at onces instead of deleting them one by one
-
-
Account Locked
-
Implement the account locked after 3 failed attempts logic as shown in design
-
-
Unlock account
-
Implement the unlock account flow as shown in design
-
Implement the logic of verifying security questions, at least 3 out of the 5 questions must be properly answered
-
Please have a mock service method to verify the security answers, and the data source should be json
-
-
Service Error
-
Implement the service error screen as shown in M - 13 - 2
-
-
Dashboard
-
Implement the Finance Manager section
-
Please just use static images for the charts for now
-
Not need to implement the Modify / Save feature for now
-
-
Implement the notifications screen
-
All the notifications should be coming from json, and the different filters should work
-
Mark as read should work (marks notifications as read and removes the red dot)
-
-
Implement the side menu expand / collapse
-
Implement the Logout function
-
Implement the Support screen though the two links can be static for now
-
All the sections except bor Recent transactions and Finance Manager can be expanded / collapsed
-
-
Fix the following bugs:
-
When user is entering OTP or Secure PIN, show the digit a bit longer before hiding it
-
Auto dismiss the keyboard in all places when input is done or user taps the “confirm” / “login” button
-
When using the Suggest Strong Passcode feature, the passcode should be revealed by default, and only the 1st password should be populated, otherwise the user may not even get a chance to see what the passcode is and move next
-
Lock the UI to portrait mode only for phone screens
-
On dashboard, rename title “Recent” to “Recent transactions”
-
Make sure check marks are displayed on the set passcode screen
-
-
Other screens
-
Any other screens not mentioned above are out of the scope of this challenge
-
GENERAL REQUIREMENTS
-
Please check the document ReactNative-ApplicationStructuring-110920-1646.pdf carefully and follow the guidelines and requirements in the document.
-
Must follow the provided design unless changes are explicitly mentioned above.
-
The UI must work on all mainstream screen sizes (both iOS and Android).
-
Show loading spinners when populating data from API / local JSON to UI
-
Implement validation errors (for example: invalid input on login / signup screen)
-
No errors with prod build
-
You are expected to create a detailed README file including information on how to set up, run, and verify your application.
CODE REQUIREMENTS
-
ES6 syntax is preferred, as Babel has been set up to handle transpiling the syntax to the current JavaScript standard.
-
Follow the existing coding convention and standards in the base code.
-
Ensure that there are no lint errors.
-
Follow a clean folder structure.
-
Create reusable components.
JAVASCRIPT REQUIREMENTS
-
All JavaScript must not have copyright by a third party. You are encouraged to use your own scripts, or scripts that are free, publicly available, and do not have copyright statements or author recognition requirements anywhere in the code.
-
Use ES6 linter for code quality
LICENSES & ATTRIBUTION
-
Licenses to be followed in development:
-
Apache License 2.0
-
MIT License
-
Common Development and Distribution License
-
Eclipse Public License version 2.0
-
-
Sufficient information regarding third-party assets must be present in your documentation. This includes the author, license info, and a direct link to the asset online.
BROWSER REQUIREMENTS
-
iOS 10+ (iPhones in portrait mode only)
-
Android 5+ (phones in portrait mode only)
Final Submission Guidelines
FINAL DELIVERABLES
-
Full code that covers all the requirements.
-
A detailed README file including information on how to set up, run, and verify your application.