- Read this entire README -- you should have the full picture before you start.
- Plan your time a little bit. Don't spend a long time on the challenge.
- Build your solution.
- Check in your code to a GitHub repo -- don't be afraid to continually commit code, some history can be cool to see.
- Either make your repo public, or add me as a viewer (ask me for my email).
In this challenge, a client will retrieve some data from a server, which returns the data from a static CSV file. The client does some processing of the data to show a couple of helpful insights from the data.
This challenge is broken up into a few small chunks:
- Creating an API to serve some data
- Consuming the API to fetch the data
- Parsing the data into a manageable format
- Getting some insights from the data
How you approach the challenge is entirely up to you.
There is a data set in CSV format for you in the data
directory -- this is
what we'll work with. This is an open data set from Kaggle.
It's a simple CSV file with data about various Instagram influencers. It's pretty self explanatory, but if anything is unclear, you can ask.
- Need to use TypeScript. All other tech choices are up to you.
- Need to create an API endpoint which reads from the static data file and returns the data in some way.
- Need to create a script that consumes the API endpoint
- Need to create some output which gives some insights back to the user. How it's executed, and how it's presented is up to you.
Your client should give the following insights from the data:
- Who are the #1 top influencers per category, by followers?
- Who are the #1 top influencers per country, by engagement avg?
I've provided some skeleton project structure in this repo, BUT feel free to ignore it if you want. You have the freedom to build how you see fit.
- Some of the numbers are in millions (M) and some are in thousands (K)
- What if the data set grew 10x? 100x?
You should aim to cap your time at around 2 hours. You've got your life to live. The solution doesn't need to be perfect, but you should aim to get the main stuff working, and include a README explaining what you'd do next, how you'd improve it if you had more time, and any assumptions you made.
2 hours probably isn't enough time to create a really elegant solution for this challenge. Part of the test is to see how you handle a limited time budget. So it's totally expected that things may not be fully complete, and even a little scrappy in places.
To that end, I'd recommend planning your time a little bit and pretending you're already working in a startup.
You should check in your code to a GitHub (or similar) repo. Feel free to commit regularly -- can be cool to see the history. When you're ready, share it with me. You can either make it public, or just add me as a viewer โ
If anything needs clarifying, feel free to ask! You won't be judged negatively. It's a great thing to ask for clarification when needed.
Reach me at shane#1096
on Discord.