The coding test is best shown as a copy and paste so you can appreciate the scope of it.
Coding test
This coding test is designed to show us your thought process and approach, as well as
demonstrate your skills. How much effort you put into it is up to you, but typically we
would expect two to three hours is reasonable. Some people choose to spend more -
that’s fine, but not required. You are welcome to stop whenever you like.
We are not expecting you to spend an insane amount of time on this. We feel that, using
the right technologies, it is possible to achieve what the test asks for, in the timescale
indicated. If you cannot achieve everything exactly as you would ideally like, let us know.
Feel free to ask us questions if you need to.
Technologies
Use whatever languages, frameworks, etc. you feel are best, or are most comfortable
with. This could be something spangly-new and cutting-edge, or old-school and boring -
it’s your call. Points will not be won or lost based on this choice, providing it is fit for
purpose for the requirements.
The only technology requirement that we have is that it should be able to run on Linux -
either a standard Linux VM, or using AWS systems. Beyond that, you are free to specify
architecture and system dependencies as you see fit.
Please choose an appropriate CSS framework or implement something so that what we
review is pleasant to look at and shows some thought as to layout and interactivity.
Requirements
Create an application which will allow at least two users to log in simultaneously and
manage items in categories. The categories should be in a hierarchy of potentially
infinite depth. The items only require a label.
The users should be able to perform standard CRUD (including moving items and
categories around in the hierarchy), plus if one user makes a change, the other user
should see the change (if appropriate) without manually refreshing their page.
Your solution should follow best practice and be robust and scalable.
User journeys
Mark wants to keep track of his belongings. He logs in, and is presented with a list of
categories, showing the different levels visually. He adds “Electronics”, and under that,
“Televisions”. To this category he adds the items “49-inch LCD”, “40-inch plasma”, and
“32-inch CRT”.
Sandy logs in and creates “Gaming consoles”, and under this, the items “PS4 Pro”, “XBox
One X”, and “Nintendo Switch”.
Mark sees Sandy’s entries appear. He moves “Gaming consoles” to sit under “Electronics”.
This change appears on Sandy’s screen as soon as he has done it.
Bonus points
The following areas are not required, but if you choose to include them we will count
them as bonus points.
● Authorisation (user levels, permissions, ACLs, roles, etc.) in addition to
authentication. For instance, allowing some users to edit, and some to view only.
● Appropriate and sensible tests.
● Any other dimensions on the data that might be useful, e.g. tagging.
● Responsive design techniques for different screen sizes, mobiles, etc.
● Any form of notifications - e.g. toast, element styling - to alert the user that
something on their screen has changed.