Programming challenge used to assess skill level and problem-solving abilities.
No Internet-> Failed Fetch -> Internet Connection -> Successful Fetch
With the corresponding Activity Indicators.
The simulation shown in the video was made using a 1Mbps network to be able to visualize the slow progression in the loading of the images from server.
- - IDE: Xcode 11.6
- - Target: iOS/iPadOS 13.6
- - Orientations: Portrait
- - UI Framework: UIKit
- - UI Development: Programmatic UI's with Autolayout
- - Third Party Frameworks: No third party frameworks used
- - Simply Start
Kin+Carta.xcodeproj
project and Build/Run
-
- AppIcon:
Flat Icon ContactBook
-
- App Icon Maker:
https://appicon.co/
- - Activity spinner to indicate initial network activity
- - Pull to refresh in case internet is not working.
Create an app that fetches JSON from the URL below and displays the results as shown in the screenshots on the next page. Your app should match the layout and formatting in the screenshots as closely as possible. (Colors and fonts do not need to be exact.) Please use the image assets provided.
https://s3.amazonaws.com/technical-challenge/v3/contacts.json
-
- The contacts should be grouped into two sections: Favorite Contacts and Other Contacts. Within each section, they should be sorted alphabetically by name.
-
- Each cell should display the associated contact’s small image. Use the included small placeholder image when appropriate.
-
- If a contact is a favorite, display a star emoji ( ⭐️ ) in front of their name. The emoji might look different depending on your platform.
-
- Tapping on a contact should take the user to the detail page for that contact.
-
- Display the contact’s large image on this page. Use the included large placeholder image when appropriate.
-
- If the contact does not have a particular piece of information, that row should not appear on their detail page.
-
- In the top right corner, display a button that allows the user to favorite and unfavorite a contact.
-
- Use the “Favorite True” and “Favorite False” assets provided.
-
- When the user favorites or unfavorites a contact, the home page should be updated to reflect that change.
-
- Your app only needs to support portrait orientation on a phone, but it should scale properly to different sized screens. You do not need to support landscape orientation or tablet devices
-
- You do not need to persist the data between sessions.
-
- Use any third party frameworks you’re comfortable including in your project.
-
- Use the latest non-beta version of your platform’s IDE (Xcode, Android Studio, etc.). - You only need to support the latest OS version of your platform.
-
- When you send your project back to your K+C recruiter, please outline the steps necessary to build and run your project.