1]I spent around 3-4 hours on testing all the components. I made use of jest and enzyme for testing the components.
2]If i had more time i would have imporved user interface and clean up the code. If I didn't spend much time on the coding test then I would have added some more features like pagination, option for sorting the data, also it would been very useful for user if i would have added a search bar, and some more charts to so that data interpretation would have been easier.
3] I wanted to keep code simple and easy to undustand, so only made use of widely used features in react and nodejs.
4] Performance issue in production can be improved by avoiding the unnecessary rendering when the change to be updated is in one small bit. The unnecessary rendering can be tracked down by the "React Developer Tools extension" for Chrome as it highlight component updates to identify unnecessary render cycles.
5] libraries and packages used ->Front end *Reactjs(js library) *axios(Dependencies) *chartjs(Dependencies) *enzyme(devDependencies for testing) ->Back end *Nodejs(js Runtime environment) *Express(Dependencies) *Nodemon(devDependencies) *body-parser(Dependencies) *mongoose(Dependencies) *morgan(Dependencies) *winston(Dependencies) ->Database *mongodb