Android Code Challenge Bonprix - aacml/Recruiting GitHub Wiki

We have created a small technical challenge for you to showcase how you work.

Your task will be to create a small application that should open links in a web view and use a hierarchy navigation that opens if you touch on a menu button.

Challenges

  • Implement a app that displays the bonprix assortment
  • 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-Key N8Nx0OwOvo1iuN2ZkFHZlyVKBVgoIcy4tUHMppO5 as x-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:
{
  "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 navigation level must be "pushed onto" the navigation. The entries of the cells are the children of the selected node. The title of the current view is the label of the selected node.

  • Back button Interaction: If the user presses the back button the current "navigation level" will be removed from the "stack".

  • Link Interaction:

    If you touch on a link the webview should load with the url of the selected link.

Please have a look at the following gif for a better understand of the functionality:

Hint:

  • Feel free to use any libraries or frameworks that you would in a real application.

  • You do not need to style your app like the bonprix design. Focus on the interaction and functionality.

  • Consider adding the animation (see the existing application) if you have the time.

Requirements:

  • Consider test coverage: unit test and/or UI tests
  • Write a paragraph or two on how you approached the work and what you considered during development
  • Please use Kotlin to write the app
  • We like git. So feel free to use commits to show the approach you took and to send us the link to your git repository on github, bitbucket, etc 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. Finishing the above challange should definitely be doable in a couple of hours.

If you have any questions, email us and we can add it to this task.

Good luck!