Challenge Overview
Challenge Overview
Welcome to the Infant nutrition integration challenge. In this challenge, we aim to create the frontend and backend of the infant nutrition dashboard tool.
Project Overview
In this project we will be:
-
Scraping retail sites for product info, ratings, reviews, nutrients and ingredients data
-
Identifying competing products across brands based on ingredients and nutrients data
-
Analyzing user reviews to identify topics, positives, and negatives for each product group and brand
-
Looking for identified items in social media posts to estimate how popular/important each one of them is
-
Providing reports that allow for drill-down per topic, brand, product group or individual product level
Technology Stack
-
NodeJS
-
Mongo
Assets
UI prototype codebase and demo url are provided in the forums as well as deployed backend api url. You can also deploy the backend locally. There is a swagger API spec (served by the api) and demo postman collection that you can use to test the api.
Individual requirements
All application pages are in scope. UI changes are required for some sections (described below). There is no authentication for frontend/backend. Api calls should show a loading indicator. All demo data/static files that are not used should be cleaned up (removed).
Product listing
Call /search endpoint and implement infinite scrolling behavior for the products listing page.
Product details
Call /products/:id to get product details. Ingredients list table should show only one column - ingredient name. Other columns should be removed. Nutrients tab should show a table with name, unit, value, reference value columns instead of the chart. Details info should show product images (call /products/{productId}/images/{imageId}) and product.descriptionDetail.
Add a new tab after Details called “Review topics” that will display a table with two columns - Positive sentiment and Negative sentiment - show the data from product.topics.positives and product.topics.negatives
Web Product Rank should show product.rankingHistory aggregated by the selected time period. Add a dropdown to pick the search keyword to show the ranking for.
Product review section should show data for product reviews (call /products/{id}/reviews ). Add a toggle to show the complete reviews history or just the last 30 days.
Product analysis section should show latest data from product.ratingHistory (1-5 stars rating, total number of ratings and overall rating change compared to the previous overall rating)
Product sales section should be renamed to Product Price Analysis and the chart should show product.priceHistory and product.ratingHistory
Nutrients list
All data is loaded from GET /brands/nutrients. “Brand Most Nutrient” section will display most common nutrient for each brand. Remove the data chart and nutrient chart tabs
Ingredients list
All data is loaded from GET /brands/ingredients. Table should have only two columns - ingredient name and percentage. Remove the data chart and ingredient chart tabs and the search products box.
Dashboard
Data should be loaded from GET brands/ratings (“Brand Ratings” section), brands/reviews (“Brand Review” section), stats/PriceChanges (“Brand Price Updated” section), stats/RatingChanges (Products table). Remove the “Recent Brand Updated” and “Brand trending inmarket” sections. In the products table remove the rank, size, weight columns and the down arrow in the product name column.
NOTE: make sure to handle the “no data” case for all screens/sections - just display an appropriate message like “No ingredients to show”.
What to submit
-
Submit the full source code for the frontend app and a README with configuration, deployment and verification steps
-
Submit a demo video