Frontend Assignment

Show your skills for the frontend developer position

In order to qualify for an interview, you must provide an implementation to this assignment. If you have already built something you’re proud of, this can be submitted instead, but it must contain code and document how you work in a web application-oriented context.

Data

We have exposed a subset of our public data to play with. We have removed any properties, that require prior knowledge about cultural heritage, so the data itself should be rather straightforward. It is real unedited data, so you will encounter incomplete data and text which is hard to understand. It should be noted that although the properties, documentation and examples are in English, the data itself is in Danish.

Technologies

In our current development we utilise the following enhancements and frameworks:

For package manager and task runner we’re using Yarn.

However you can use whatever technology you are most familiar with.

Endpoints

We have provided you with a minimal API that can be found here:
frontend.natmus.dk/swagger

It has two endpoints; Search and Image.

The documentation for the individual fields in the return type can be found in Swagger.

The search is based on Elasticsearch and uses the following syntax:
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html

Query examples could be:

Other than a list of Items, the search returns two headers, natmus-total-count which is the number of hits in total and natmus-page-count which is the number of hits returned.

Image

You input an image id and get an image in return. This image can either be the actual image, or a placeholder image telling you that the requested image is not public. This is an example of two data sources which are not perfectly aligned, a problem we will be solving with the system we are currently building.

The image id is a property on the the Item which is returned in the above mentioned Search endpoint.

The Solution

All solutions must be delivered as links in the job application to a public git repository containing the source code and either instructions to get it working on Windows or a link to a working online solution.

Example tasks

The following is simply meant as inspiration, any idea is fine, as long as it shows your craftsmanship.

Query Builder

We have many different roles, each with their unique requirement to query items. We want to give the users the freedom to dynamically create their own query when using the application, without learning the above mentioned query syntax. The idea is to wrap the complexity of the query syntax in a more user friendly way.

Data analysis

We have many items that contain almost no data. We want to present the most interesting items on the first pages. The idea is to analyse the items and images returned and estimate the most interesting items by whatever metric you chose.

Search & Display.

We want to present items to the users in the most accessible way after a search. Some users might prefer the details of a Card while others would like a condensed List. Some of the items have multiple images, making some form of detailed view of the selected item necessary.

Questions & Comments

Send a mail to Andreas Nauta Nygaard Pedersen (anp@natmus.dk)