iOS Code Challenge Bonprix - aacml/Recruiting GitHub Wiki
We have created a small technical test for you to showcase how you work. Your task will be to create a small iOS Application that should open links in a WebView and use a hierarchy navigation that opens if you touch on a category node.
Challenges
- Setup a new SingleViewApplication
- Implement a TabBarController with a Tab for the "Shop" and a Tab for the "Assortment"
- Each Tab should contain a NavigationController
- The "Shop" Tab should contain a WebView and load https://www.bonprix.de on Startup.
- The "Assortment" Tab should contain a ViewController or SwiftUI view for displaying the Assortment entries.
- The Assortment entries must be fetched via an API Rest Call
- The API Endpoint for the navigation entries is
https://codechallenge.mobilelab.io/v1/bonprix/navigation
and requires the following API-KeyN8Nx0OwOvo1iuN2ZkFHZlyVKBVgoIcy4tUHMppO5
asx-api-key
request header field. - You can preview the response in the terminal if you use curl with the header option to set the x-api-key
curl -H 'x-api-key:N8Nx0OwOvo1iuN2ZkFHZlyVKBVgoIcy4tUHMppO5' https://codechallenge.mobilelab.io/v1/bonprix/navigation
- The JSON structure of the response:
- The API Endpoint for the navigation entries is
{
"categories": [
{
"label": "Shop",
"url": "https://www.bonprix.de"
},
{
"label": "Damen",
"url": "https://www.bonprix.de/kategorie/damen/",
"image": "https://image01.bonprix.de/bonprixbilder/teaser/app/channels/app-dez-19a.jpg",
"children": [
{
"label": "Zur Übersicht",
"url": "https://www.bonprix.de/kategorie/damen/"
},
{
"label": "Mode",
"url": "https://www.bonprix.de/kategorie/damen-mode/",
"children": [
{
"label": "Alle Artikel anzeigen",
"url": "https://www.bonprix.de/kategorie/damen-mode/"
},
{
"label": "Neuheiten",
"url": "https://www.bonprix.de/kategorie/damen-neu/",
"children": [
{
"label": "Alle Artikel anzeigen",
"url": "https://www.bonprix.de/kategorie/damen-neu/"
},
{
"label": "Oberteile",
"url": "https://www.bonprix.de/kategorie/damen-alle-neuen-artikel-oberteile/"
}
]
}
]
}
]
}
]
}
Interaction
-
Node Interaction: If you touch inside a node a new ViewController/SwiftUI view must be pushed on the NavigationController. The entries of the cells are the children of the selected node. The title of the current ViewController/SwiftUI view is the label of the selected node. Moreover a back button will be displayed.
-
Back button Interaction:
If the user presses the back button the current ViewController/SwiftUI view needs to be popped.
-
Link Interaction:
If you touch on a link a new ViewController/SwiftUI view must be pushed and the url of the selected link should be loaded inside of a WebView.
-
Teaser Images:
The top nodes may have an image set. This image shall be displayed as Teaser image for the nodes and children.
Please have a look at the following gif for a better understand of the functionality:
Or download the bonprix App from the German App store.
Interaction should look like the current iOS Version of the bonprix App available on the German App Store
Hint:
- Feel free to use a framework for Networking operations, if so please use cocoapods to include the dependency in your project.
- You do not need to style your app like the bonprix design. Focus on the interaction and functionality.
Requirements
- Your code must be written in Swift 5.x
- Minimum supported OS must be iOS 14
- Use Xcode 13.x
- Write tests
- It must compile and run in the iPhone Simulator
- Write a paragraph or two on how you approached the work and what you considered during development
- We like git so feel free to send us the link to your repository or send us the project as zipped archive
Additional Information
We understand that you’ve probably got a full-time job and a personal life so doing the above test could be definitely finished in a couple of hours.
If you have any questions, email us and we can add it to this readme.
Good luck!