Frontend Technical Test for TeamITG
You’ll want to ensure you have the following already installed on your local machine before getting started with the test:
- Node 12+: The current LTS (long-term support) release. We like to use a Node Version Manager like NVM.
- NPM 6+ or Yarn: Both of these package managers have ups and downs, choose whichever you prefer. Follow the installation instructions for Yarn or NPM to make sure you're using the latest version.
- Clone this repository
- Type the following command to install the dependencies and run the project
npm install && npm start
-
API Implementation
- You will receive a list of general vehicle information by making an initial api request to endpoint
/api/vehicles.json
- You are now required to traverse the API and make further calls on a detail endpoint (
apiUrl
) to get vehicle-specific details such as price and description - Ignore vehicles with broken apiUrl or without any price information
- All API related logic should be implemented inside
getData()
available atsrc/api/index.js
- You will receive a list of general vehicle information by making an initial api request to endpoint
-
Using
getData()
in a React component- React component
VehicleList
is configured to usegetData()
through a custom hookuseData
- If you prefer to use class-based component, then the rule to make a single function to obtain all vehicles through
getData()
needs to be respected - No other components are allowed to make any network request
- React component
-
UI Design
We expect the solution to work in the latest version of Chrome
We have a high focus on attention to details in code
- Solution should be written in either Reactjs or VanillaJS
- The formatting of the codebase should be consistent and written in a modular approach
- We expect the codebase to be written using ES6+ and libraries kept to a minimum
- We expect the code to be written with unit testing & performance in mind
- We expect the code to be included in the relevant files
- We prefer native Browser Api over JS libraries
- Mobile-first development approach using min-width media queries
- Solution should be accessible and meet WCAG 2.1
- No CSS framework allowed
- Internally, we use BEM - but we are open to other CSS naming conventions as long as it's built with scale and maintenance in mind
We have a high focus on attention to details in design
- We expect the designs to match as closely as possible, ready for a designer to review
- Correct semantic HTML mark-up and/or CSS should be used to achieve the size and aspect ratio of the images in the design
- Interactions and animations to be considered but not distracting users away from the experience
- Minimal visual bugs when going resizing to mobile and large screen sizes
If you have achieved primary tasks and would like to showcase your skills by implementing additional feature(s) then you can consider the following:
- An accessible modal implementation which displays the additional vehicle information e.g. emission, bodystyle
- Implement "Read more" which Show/Hide additional vehicle information
- A staggered fade in vehicle cards on load
- Redux
- Anything else which we cannot think of!
Use linting to format the code and autofix most of the formatting issues
npm run lint