Welcome to our frontend coding challenge! This is a great opportunity for you to showcase your frontend skills. We're excited to see what you come up with! 🎨🖥️
Your task is to create a simple e-commerce-like application that fetches product data from a provided JSON file on GitHub and displays them with some interactive features.
Use any modern frontend framework/library (e.g., React, Vue, Angular, Nuxt, Next) with TypeScript. Any styling solution is accepted.
You will be fetching the product data from the mock-products.json
raw JSON file hosted in this repository.
Here's the link to the JSON file:
https://raw.githubusercontent.com/jagaad/frontend-test/main/mock-products.json
The data was generated using
@faker-js/faker
Each product in the JSON file has the following fields:
image
: URL to the product image (string, url)title
: Name of the product (string)description
: Brief description of the product (string)price
: Price of the product (string)currency
Currency of the price (string, ISO 4217)
- Display 10 products at a time.
- Each product should show the
image
,title
,description
,price
andcurrency
. - Ensure the design is responsive and looks good on both desktop and mobile.
- Implement client-side pagination for the products.
- Users should be able to navigate through different pages to view all the products.
- Users should be able to add products to their cart.
- Display a cart icon with a counter indicating the number of items and total sum of the cart.
- Users should be able to view their cart and remove items if needed.
- Users should be able to add products to their wish list.
- Display a heart or star icon indicating the wish list.
- Users should be able to view their wish list and remove items if needed.
Add anything that you consider would impress us. Example:
- Write documentation how to get started with the project
- Use Conventional Commits
- Add animations or transitions for better user experience.
- Consider using Server Side Rendering (SSR)
- Use
Intl
API to renderprice
andcurrency
- Implement a search functionality to filter products.
- Add a CHANGELOG with version releases.
- Create a Dockerfile that makes the project a ready image for deploy.
- Deploy it somewhere (e.g. Vercel, Netlify) as a static website.
- Add some unit or E2E tests.
- Use a library such as CSS Modules, Styled Components, Bootstrap, Tailwind CSS, or Material-UI for styling.
- Make use of Prettier, ESLint, Stylelint or Commitlint.
- Configure git hooks to format code at commit.
- Create a private repository on any platform of GitHub or GitLab platform.
- Push the code in the repository.
- Invite users: @iamandrewluca on GitHub or @iamandrewluca on GitLab
- The challenge is designed to be moderately challenging, striking a balance between simplicity and complexity.
- This challenge is expected to be done in approximately one day.
- Code quality and organization.
- Responsiveness and design.
- Functionality and user experience.
- Bonus features implemented.
We hope you enjoy this challenge! Remember, it's not just about getting it done, but also about showcasing your creativity, skills, and approach to problem-solving. Happy coding! 🎉👩💻👨💻
Note: Please make sure to test your application thoroughly before submitting. If you have any questions or need clarifications, feel free to reach out.