The objective of this challenge is to build a catalog page for some products of AMARO.
- The page can't be static. It needs some logic to show all products dynamically.
- All products from
products.json
must be shown. - You need to use some build tool (
Grunt, Gulp, npm, Webpack, etc) to bundle your files. And ES2015+ features of course. And don't forget to add instructions on how to run the project. - Do not ask your friends to solve the challenge for you. You'll need to explain your choices in person.
- The app must be responsive. Use a mobile-first approach.
- For each item on the catalog, the following information must be present on the page:
- Image
- Name
- Price
- Promo Status
- Promo price (if available)
- Available Sizes
- Sale badge
- It must be possible to add products by size to the cart.
- It must be possible to view the cart with the items you've added (name, image, price, quantity) and the grand total.
- The cart should be persisted between reloads.
- Easy as pie? So add more functionality to cart allowing users to add, remove and change quantity of cart items.
- Want more challenges? Add a filter to show only products
on_sale
or a search box. - Some products don't have all sizes available. Show only the ones on stock.
- We like clean and testable code, right? Test your application and components, it will be a big bonus point.
- Your code will be evaluated by: semantics, structure, legibility, size, among other factors.
- The
git
history will be avaluated. - Our stack here is React, Redux, SCSS and Webpack so using the same stack will make a difference.
- We're looking for a front-end developer who knows how to build layouts and knows a lot about JavaScript. Use this as an opportunity to show us how good you are on both areas.
- Do not forget to document the process needed to run and build your app. Or else how are we going to evaluate your work if we can't init the project on our machines?
- The challenge is harder than you anticipated? Would you like to show your experience with something else? Contact us by opening an issue.