Bupa Australia Coding Test

Thank you for your interest in joining the Engineering team at Bupa. To better assess your strengths and knowledge, please kindly complete the following coding test to the best of your ability, using whichever language, tools, libraries and methods you want as long as it accomplishes a solution.

We are rating you based on your understanding of the problem and how you go about solving it; we want you to show us how you would tackle this problem if you were already working together as a team at Bupa to release an enterprise product.

The Issue

The JSON data for this task is provided through an API. More info here with the Swagger Documentation

We have some data on books and their owners. The data of the JSON format is structured to look something like this:

    Book Owner 1
      Name
      Age
      Books
        Book A
          Name
          Type
    Book Owner 2
      Name
      Age
      Books
        Book B
          Name
          Type
        Book C
          Name
          Type

We would like you to build an app that would fetch the API data and output a list of all the books in alphabetical order under a heading of the age category of their owner. Owners aged 18 and above are considered Adults, Owners aged 17 and below are considered Children. This app consists of a server side, to return data similar to the above, and a client side, to fetch the data from your server and display the data to the user.

Screenshots of the app are as follows. The app does not have to be pixel perfect with the screenshots so don’t spend too much time getting it to look exactly like this for every breakpoint.

Desktop View

Desktop View

Mobile View

Mobile View

Important information:

  • When you click “Get Books”, all books are shown, grouped and sorted
  • When you click “Hardcover only”, only hardcover books should be shown, and the “Books owned by Adults” and “Books owned by Children” should now say “Hardcover Books owned by Adults” and “Hardcover Books owned by Children” respectively
  • The blue colour used throughout the app is #0079c8
  • The mobile breakpoint is 600px
  • The app must be a react app, but you can use any libraries/frameworks/SDKs you choose apart from that
  • Please document any assumptions you make
  • The code you present should be of production quality so think about all the code needed before proceeding to production that you normally write
  • Submissions will only be accepted via github, bitbucket or zip file
  • Use industry best practices
  • Use the code to showcase your skill

Once you have completed the test, please submit your solution to your recruitment contact. And again, thank you for your interest in Bupa and hope to meet you soon for an interview.