# VendorX π - AsteroidX Technical Assessment
Hello Candidate! Thank you for applying to the AsteroidX Full Stack Developer Position! π
In order to get an understanding of how you work and whether you would be a good fit for the projects here at AsteroidX, we put together a data extraction and reporting assessment that also reflects the spirit of the startup environment and gives you a chance to show off your skill! πͺ
We look forward to seeing what you build and we encourage you to have fun with it!π§ββοΈ
# Scope/Scenario
For this assessment, imagine you are working with ecommerce store sales reps that need some competitor analysis data to target various international vendors that are used on Shopify stores.
The web app would be used internally and possibly by around 10-15 sales reps that may add about 1000 stores each over the course of next 3 years. π¨βπΌπ©βπΌ
You will be required to extract product data daily and build a simple dashboard to display it in.
# Criteria
For the scope of this project, focus on the scalability, versatility of the data stored.
You can keep the front end implementation simple but ensure best UX practices are kept and document how you would improve and enhance it. π
# Requirements
As this is a senior role the technology used is limited to:
- React (Front End)
- NodeJs (Back End)
- Any Relational Database to your liking
Please follow best practices in the mentioned technologies as they will be assessed.
Feel free to use any libraries/frameworks that compliment the above (ex.express, react-table, etc) and document their use.
Please note that copy/pasted code or the use of other(s) solutions will not be assessed.
# Assumptions
This project should ideally take about 2-8 hours. If you feel you are spending more time, state your assumptions and document in detail how you would implement the remaining parts of the project. We want to see your thought process and why you picked a tool/package over another π©βπ¬. So feel free to document this in the project README.
# Objective
You will be building a web app that lists all the stores added. You do not need authentication or to keep track of which users are added the store.
For this web app, you will be required to build the following:
1. Input to add new shopify store URLs to the dashboard
2. Index page to list all the stores
3. Display page that will display dashboard data
4. Delete action to remove the stores from the dashboard
# Dashboard data
The dashboard for each store will show:
1. All vendors in the store
2. Daily data will be collected to report:
- Number of products for each vendor (not variants, but unique product_ids) based on the most recent data.
- The average price of products per vendor (use average if there are multiple variants per product)
- The dashboard will only show lifetime data (from the time the stores were added by the sales rep).
The data should be retrieved/updated for each store at 12:00 am UTC daily to report.
Your welcome to display the data in whichever way you feel is best!
# Deploying and set up instructions
As this is a senior role the project is expected to be deployed. Using Heroku will allow you to deploy this for free and for us to test.
Make sure to use git best practices and push it to a Github private repository. Invite the team members to your project once completed.
Any additional assumptions and instructions to run the app should be provided in the readme.
# Shopify stores/API π¬
Shopify exposes a public API for all their stores to extract product data. By visiting any shopify store with /products.json route will give you paginated product data in JSON format.
Any shoppify stores can be used for testing however if you need some test stores feel free to use any of the below to get started
https://clearybikes.com
https://suzysbeauty.com
https://www.happilyeverborrowed.com
https://campcloon.com
Shopify exposes a **public** API for all their stores to extract product data. By visiting any shopify store with /products.json route will give you paginated product data in JSON format.
https://clearybikes.com/products.json
{
"id": 3936022069346,
"title": "Giro Helmet - Scamp",
"handle": "giro-helmet-scamp",
"body_html": "<span>HELP YOUR CHILD ENJOY THEIR FIRST RIDES WITH THE SCAMP HELMET, EQUIPPED WITH EVERYTHING FROM A PINCH-GUARD BUCKLE TO A ROC LOC JR. ADJUSTABLE FIT SYSTEM THAT MAKES FITTING IT CORRECTLY A BREEZE.</span>",
"published_at": "2019-07-15T15:31:22-07:00",
"created_at": "2019-07-15T15:12:39-07:00",
"updated_at": "2019-09-23T15:20:38-07:00",
"vendor": "Giro",
"product_type": "Accessories",
...
}
You can access further pages by appending page={number} as a query parameter. You will see an empty array/list when there are no more products available.
ex.https://clearybikes.com/products.json?page=2
You are encouraged to visit the shoppify api if you get stuck!
Finally Good luck and have fun! This test is not meant to be another boring technical assessment but for a means to show off what your capable off! We can't wait to see what you build! π