This app helps user to manage their contacts like Add and edit existing contacts. It's basically sync contacts from the user device.
Please go ahead and play around :)
- Sync user device contacts based on user permission
- It will ask user permission to allow and dont allow for contact syncing.
- Show contact details in Item list (name and first letter for name in avatar sectin with attractive color)
- Have Add button to navigate to contact manage screen
- When user press contact list item, will be able to redirect to show user's details such as email, name and edit button.
- Flatlist used for all the list to show to the user contact
- Manage contact screen (create contact) have text input to add user details such as name, email, phone number
- Project working on both Android and iOS
- Project running on latest RN 0.65.1
- I have created app UI as per some best pratice approach.
- I could not cover the bonus points due to current company work, Willing to implement in the future
- Architecture and approach - (Using Container and View pattern for design patten and proper folder structure Architecture && tried TDD approach)
- Execution - App runs successfully in both Android and iOS
- Testability - Used Jest for Unit testing and Enzyme for component testing.
- Code readability and style - Written clean code and very convenient to read. Maintained proper comments and kept style files wisely. (Tried to use all latest methods)
-
Step 1 : download code from repo
-
Step 2 : remove yarn.lock file from download code
-
Step 3 : do npm install or yarn install ( if you have configured yarn in your project )
- pod install ( all of your packages to be installed in your Pod file ) - yarn run ios or react-native run-ios ( app will run in your simulator or connected iOS device )
- open your android studio and make sure your gradle getting success ( all of your packages to be synced in your gradle ) - yarn run ios or react-native run-android ( app will run in your emulator or connected Android device )
Project is created with:
- react (17.0.1)
- react-native (0.64.2)
- react-native-gesture-handler (1.10.3)
- react-native-safe-area-context (3.2.0)
- react-native-screens (3.4.0)
- react-native-contacts (7.0.2)
- react-native-permissions (3.0.5)
- jest (26.6.3) - devDependencies
- enzyme (3.11.0) - devDependencies
- enzyme-adapter-react-16 (1.15.6) - devDependencies
- flow-bin (0.156.0) - devDependencies
- eslint 7.14.0 - devDependencies
- used Prettier for code formatting
- Handled all the NULL checks in all components and showing console for API failure.
- Created flatlist for displaying contact details.
- Provided Loader (Activity indicator) before API calling. Loader will shown in upper middle of the screen, just for user interaction.
- Created Navigator and Routes for maintaining stacks/screens
- Created ColourPalette for maintaining colors