This repo has the starter code for the Spark! Software Engineering Assessment. It contains everything that is needed to get started with this project. Please read this entire file and follow the directions closely before attempting to start.
Some code has been written for you and other code will need to be completed by you. You don't need to install any extra packages to complete the assessment. However, you are welcome to install extra packages if you deem them necessary -- make sure the package.json
file is updated correctly. If we can't compile your code we can't assess your skills and we won't be able to hire you!
Please note, none of the code provided is final. You will need to modify most of the code. Modifications could include -- but are not limited to -- changing the function signature, adding more code, removing code, changing the passed attributes on a component.
This is not a pass-fail assessment either. Even if you are unable to complete the entire assessment you should submit your work. We encourage you to complete everything if possible but regardless you should submit whatever you are able to complete.
Below is a list of things you must follow when working on the project. Not following these could impact your performance on this assessment. There is a list of deliverables that you must complete listed later in this document.
- All code must be written in Typescript -- not Javascript
- Files should be organized in appropriately named folders -- In general you should not need to create more files.
- You must perform regular Git commits as you work. A final submission must have more than 4 git commits
- You must produce a website that closely resembles the provided example photo below.
- Your code must compile and run
- Your code should not make erroneous network calls.
- You must document your code and be prepared to explain it to someone.
The goal is to build a portal that displays the final grades for all students in a particular class from a given semester. All the information required can be retrieved from the API. You will need to make multiple queries to retrieve all the required information. You will also need to compute the final grade using the combination of assignment grade and assignment weight (provided by the API).
The final grade may not be within the 0-100 range as the data was randomly generated. To calculate the final grade, the following general formula can be used:
The website should look like this image:
To get started with this project you will need the following setup on your computer:
- Node.js Version 19 or greater
- VS Code or your favorite editor that supports Typescript (we really recommend VS Code though)
- Git Version Control
- Clone this repo to your computer
- Open the folder in your editor
- In a terminal (ie Command Prompt) run
npm install
to install all the required packages. - Fill in all the variables in
globals.ts
file. You will have lots of issues if you don't do this. - Run
npm start
to see if the website launches on your computer. - Resolve any issues you might have in running the website.
The majority of the code lives in only a few files, below is a short description of each one.
This is the "home" of the app and is where everything starts from. This does not mean you should write all your code in this file though!
This file contains a stub function for you to fill in with the code required to present the grade table. You are required to use this stub fnction. You might also need to change the function signature.
This file is where you can store interfaces and types for data you receive from the API. Feel free to add more code to this file. All interfaces and types you define should be stored in this file.
This file stores some stub functions to help you get started on the process of calculating all the final grades. Feel free to add more code to this file.
This file stores some global variables. You will need to fill them out as specified in the "Getting Started" section of this document.
You MUST use either ther <DataGrad/>
component or <Table/>
from component the MUI components library to create the Final Grades table.
DataGrid: https://mui.com/x/react-data-grid/ Table: https://mui.com/material-ui/react-table/
The final website is required to have the following features:
- A dropdown selection to select the desired class from the list.
- A table on the right hand side that displays the calculated grades for the currently selected class.
- The table should indicate to users when data is being loaded from the API.
The API can be found here: https://spark-se-assessment-api.azurewebsites.net/api You can explore the API routes using the Swagger UI (it might take ~15s to load): https://spark-se-assessment.azurewebsites.net/api/ui
The Swagger UI allows you to explore each API route and read the documentation. This is a really good point to start after you have cloned the project code.
Important: Each request you make to the API must include your BU ID. This is for evaluation purposes.
Important: Each request must also include the x-functions-key
header along with the key provided to your invite email.
Post on piazza or attend office hours if you have any questions
In the project directory, you can run:
Runs the app in development mode.
Open http://localhost:3000 to view it in the browser.
The page will reload if you make edits.
You will also see any lint errors in the console.
Launches the test runner in the interactive watch mode.
See the section about running tests for more information.
Builds the app for production to the build
folder.
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.
Your app is ready to be deployed!
See the section about deployment for more information.
You can learn more in the Create React App documentation.
To learn React, check out the React documentation.