Built reusable UI components and a cached Redux store for a private-cloud console.
Platform9 runs a private-cloud platform for managing Kubernetes and OpenStack. Over three years I built reusable UI for the console, a data grid with sort, filter, and pagination and a multi-select dropdown among them, and added a Redux store that cached server data and persisted it across refreshes. Reselect selectors fed components efficiently, and I moved the build from Webpack to Vite while keeping Storybook and Jest as the baseline for components and utilities.
Component library
State management
Build migration
Private cloud
What changed
Pulled shared components, a cached Redux store, and memoized selectors into one frontend foundation the console's React surfaces built on.
Measured outcomes
- 3 years
- Vite
- Cached
Highlights
- Built reusable UI components for the console, including a data grid that displayed tabular data with sort, filter, and pagination, and a dropdown for selecting one or many options from a list.
- Added Redux for global application state and cached server data to stop redundant API requests, with redux-persist keeping that data across page refreshes.
- Created reselect selectors that pulled data from the store into React components efficiently, backed by memoized helpers for filtering, finding, and mapping server data.
- Wrote classes that parsed server data and handled events end to end: API calls, store updates, error handling, and notifications.
- Configured Storybook with stories across the component set and added Jest unit tests for the utilities and helpers, then migrated the build from Webpack to Vite to improve HMR and simplify config.
Outcomes
- The grid, dropdown, and cached store became reusable building blocks the console's React surfaces drew on instead of re-solving each one.
- Caching server data and persisting it across refreshes cut redundant API calls and kept the UI consistent between sessions.
- The Webpack-to-Vite migration improved HMR and simplified the build configuration.
Stack
- React
- TypeScript
- Redux
- redux-persist
- Reselect
- Material UI
- Storybook
- Jest
- React Testing Library
- Webpack
- Vite
- AWS