Welcome to the OutStem coding interview.
Welcome to the OutStem Coding challenge. Submission instructions are listed below. The deadline to submit this challenge is Monday January 22nd, 9:00 AM. We would like to emphasize that we are looking for effort, and that the challenge is just part of our discussion with you during the interview, so don’t worry if your solution is hacky or even if it doesn’t work, we want to see it!
The challenge for this interview is to build a dashboard for the new pizza place, "A Slice of Pi". They have just finished their first year of business (2023), and want to see how their pizza sales have performed.
For this challenge you have been provided 3 data sets, order_data.json, review_data.json, and pricing_data.json. You will use the data in these files to generate various graphs as described in the Goals section below
The design and layout of the website is totally up to you (feel free to use any UI libraries), though you will be judged on the look, feel, and usability of your application, so do your best to respect best practices in web design.
In addition, you're welcome to use any existing libraries to generate your graphs or implement other form elements. AI coding assistants are permitted but their use must be disclosed in your submission
The first data set order_data.json is a list of orders that were placed, has the following format:
[
{
"order_id": integer,
"store": string, one of (Kanata, Orleans, Downtown, Sandy Hill, and The Glebe),
"items": [
{
"type": string, one of (Cheese, Pepperoni, Deluxe, Hawaiian, Meatlovers),
"size": string, one of (S, M, L)
}
],
"date": string in the format YYYY-MM-DD
},
...
]
The second data set review_data.json is a list of customer reviews, and has the following format:
[
{
"review_id": integer,
"sentiment": string, one of (delighted, happy, sad, angry),
"store": string, one of (Kanata, Orleans, Downtown, Sandy Hill, and The Glebe),
"date": string in the format YYYY-MM-DD,
"message": string
},
...
]
The third data set pricing_data.json describes the price for each pizza, first based on the type, and then based on the size
Sample:
{
"Cheese": {
"S": 8,
"M": 12,
"L": 16
},
...
}
This challenge has multiple goals that increase in level of difficulty, implement as many of these goals as you are able to.
Show a simple pie chart of the customer reviews, showing how many reviews of each sentiment (happy, sad, etc) A Slice of Pi received in 2023
Add a simple bar chart showing how many orders were placed in each store (Kanata, Orleans... etc)
Add a display of the total money made in 2023 by computing the price of each pizza sold and adding them all.
Create a line chart showing how much money was made per month in 2023
To your chart from Goal 2, add the ability to filter the data by
- pizza type
- pizza size
Add a start and end date filter at the top of the page, and filter the charts from goals 1, 2, and 4 by these start and end dates
If you're done and looking for more challenges, here are some extra ideas!:
- Explore further chart types to show the data in a more complex manner
- Show off your design skills with a snazzy layout and header
- Add animations to your page elements
Here are the requirements for your solution.
- You can complete this challenge using any front end framework of your choice, however, we prefer to see you do this challenge in JavaScript/TypeScript and either Angular or React.
- Your solution submission should indicate which goals you've achieved
- You must submit your solution in a GitHub repository or a Repl.it. Please make sure your project/repository is public and accessible by us.
You will be evaluated on:
- Completeness: did you complete the features?
- Correctness: does the functionality act in sensible, thought-out ways?
- Maintainability: is it written in a clean, maintainable way?
- Best Practices: does your solution use Javascript/TypeScript's and your chosen framework's best practices
- User Friendly UI: does your solution anticipate what users might need to do and have elements that are easy to access?
Please submit your solution in the 2024 Summer interview GitHub repository via GitHub Issue.
- Navigate to the following link (https://github.com/AES-Outreach/Summer-2024-Coop-Interviews/issues/new/choose) or:
- Navigate to the challenge repository
- Click Issues
- Click New Issue
- Click Get Started for Solution Submission
- Change
YOUR_NAME
to your full name in the title field - Fill out the form
- Click Submit New Issue
- Done! Thank you for completing the challenge, we look forward to discussing your solution with you during the interview. 🎉
If you have any questions, you can email Ivana Erlich at [email protected]