Work Assement for UI/UX developer position at RiskThinking.AI
- NextJS (Base Framework)
- TailwindCSS (Styling)
- Leaflet (Map)
- AgGrid (Data Table)
- ChartJS (Charts)
- Mobx-react-lite (state management)
Objective: Create an interactive map that displays the geographic locations from the provided dataset and highlights the relative risk levels using color-coded markers.
- Set up a Next.js boilerplate app with the following command under Node v16 environment
or
yarn create next-app risk-viz --ts --tailwind --eslint --src-dir --import-alias "@/*" --experimental-app
npx create-next-app@latest risk-viz --ts --tailwind --eslint --src-dir --import-alias "@/*" --experimental-app
- Load and parse the sample datasets.
- Integrate a mapping library (e.g., Mapbox, Leaflet, Google Maps).
- Implement a control for users to select different decades.
- Display the locations (Lat, Long) from the dataset as markers on the map of a given decade year.
- Color-code the markers based on their Risk Rating (climate risk score) derived from the dataset.
- Add interactivity to the map, such as zooming and panning, and display a tooltip with the Asset Name and Business Category on marker hover.
Objective: Display the climate risk data in a table format, allowing users to sort and filter the dataset.
- Create a data table component.
- Load and display the sample dataset with a given year selection (from Problem 1) in the table.
- Implement sorting functionality on reasonable columns.
- Implement filter functionality on reasonable columns, especially risk factors.
Objective: Create a line graph to visualize the changes in risk levels over time for a given location, Asset or Business Category.
- Set up a charting library (e.g., Chart.js, D3.js, Highcharts).
- Implement a line graph component that displays the Risk Rating over time (Year) for a selected location (Lat, Long), Asset, or Business Category.
- Add interactivity to the graph, such as tooltips displaying Asset Name, Risk Rating, Risk Factors, and Year.
- Implement controls for selecting different locations, Assets, or Business Categories to visualize their risk levels over time.
- You may need to perform some data aggregation in order to achieve this.
Objective: Combine the components from the previous problems into a cohesive web app, ensuring optimal performance and user experience.
- Design a user interface that integrates the map, data table, and line graph components.
- Implement state management to handle user interactions and data flow between components (e.g., selecting a location on the map updates the line graph and data table).
- Optimize the app's performance by implementing lazy loading for components and efficient data handling, such as pagination for the data table.
- (Bonus) Implement reasonable tests for utility functions, data flow hooks, and React components.