Welcome to the Mejuri code challenge! First off, thank you for taking the time to work on this, and we hope you have fun while doing so! This challenge simulates an environment that is similar to working at Mejuri!
Scenario: You've joined as the newest member of the team here at Mejuri. Your first task is to add some features to this proof of concept storefront application using the code provided. A home page, and dynamic product page have been scaffolded, but there is much work to be done!
Goal: Your task is to integrate a complete working feature/features that you feel will best demonstrate your capabilities as a team-member and have the largest positive impact on this storefront application. This implies that simply just changing some styling will result in a lower grading. However, adding the logic and ui for a fully functioning cart component with unit tests included, can be graded very high if done well!
NOTE: If you are interveiwing for a frontend role, you simply need to make a frontend feature(s)!
Here are some ideas for features that can be included in the app:
- Fully functioning typeahead search component
- Clicking add to cart on a product page actually does something! This should add the product to the cart and display it in the cart modal
- Edit/delete cart functionality
- Unit tests for components, e2e tests for the cart feature you might build out
- Ability to select quantity to buy of a product, or change that in the cart, or both?
- Add a profile page to display potential user-related data? It is fine to mock this if you wish to do this feature
- Allow users to login using social media
- Quick add to cart feature to display on homepage products or express checkout
- Alter the UI of the home page or product page for a better browsing experience
- Ability to 'like' a product
The following should be noted:
- Assume that if a piece of code/function is not working, it is a bug in the app (oh no!)
- Work with the data as if it were real. (Do not manipulate/transform the product data)
- You can make additional assumptions, please note them if they are critical to understanding the way a feature is implemented
- You can add multiple small features or one large feature
- Please document your changes well and make as many atomic commits as you feel are necessary for someone to track your changes
- Of your submission, the following will be evaluated:
- Ability to work in a pre-existing React environment (front-end)
- Ability to use existing data (back-end)
- Ability add/store/retrieve new data in the database (back-end)
- Completeness of feature, works as a user would expect such a feature to work
- Adopting and using best practices
- Coding style
- Attention to detail
- Clarity in communicating the feature implemented (I highly recommend taking pictures and gifs)
High scorers will be contacted via email within a week of acknowledgement of PR submission. Thank you and good luck for everyone who applied and submitted a PR.
To run the app:
pnpm install
pnpm dev
View at http://localhost:3000/
It should look like this initially: