The candidate is required to develop a web application needed for a company that supply humanoid robots to be used alongside humans for the purpose of companionship, work, adoption, soul mate, etc. etc. The web application will show to the user a list of humanoids and the details of a single humanoid.
The project codebase must be managed in two Github repositories (one for the backend and one for the frontend). A README.md file must be present (in both) indicating the steps required to run the project in a local environment. The application must also be deployed on a PaaS such as Heroku. The candidate is also asked to develop tests for the two repositories (both frontend and Backend).
- Django with Python3 for the backend
- React for the frontend
The candidate is free to use any other library he/she deems necessary.
Concerning backend side test development is highly recommended the use of the Django testing tools whereas, for the frontend, the React testing library is required, alone or together with Jest and/or Enzyme. For the thumbnail generation we suggest one of the following libraries: Pillow or easy-thumbnails.
For the backend the candidate is required to write unit tests for all models and functional tests for all views of the Django application.
For the frontend will suffice writing at least one test that will mock a Backend API http call.
The Django app si required to query fakeJSON API in order to download the humanoids data using the following body in the http request:
{
"token": "<personal-token>",
"data": {
"name": "nameFirst",
"surname": "nameLast",
"address": "addressFullStreet",
"zip_code": "addressZipCode",
"city": "addressCity",
"country": "addressState",
"phone": "phoneHome",
"mobile": "phoneMobile",
"email": "internetEmail",
"bio": "stringLong"
},
"_repeat": 10
}
Retrieved data must me saved in a database.
NB in order to query the fakeJSON API the candidate needs to be registered to get a personal token.
For each humaniod the application should also download a picture from thispersondoesnotexists.com and generate two thumbnails (medium 300x300 and small 75x75) to be used respectively in the detail of the single humanoid and in the list of humanoids.
NB2 The candidate wouldn't have to worry about the mismatch between the data and picture details (in particular concerning the sex and age of the humanoid) even if indeed it would be an interesting problem to tackle!
Synchronization with the API must be done periodically. We suggest to use a Django command that could be launched manually in a development environment and scheduled to be launched periodically using the Heroku Scheduler for production environment.
The frontend will request for data of the latest humanoids inserted in the backend, through a REST API endpoint. The frontend app will show a list in which each item contains the most relevant humanoid information (name, surname, country, country flag and picture). Paginated results are also required. Moreover users should be able to filter the list by name and surname or by country, making new requests to the backend with appropriate parameters. By clicking on one of the items in the list, the user will be taken into a detail page where the enlarged picture will be displayed together with all the other fields found in the FakeJSON API as depicted in the Wireframes. Responsive visualization (for tablets and mobile phones) is also required.
Fake JSON Quick Start
https://fakejson.com/quick_start
Django DOCS
https://docs.djangoproject.com/en/3.2/
React