usama.shahid
← All work
01 — May 2024 — Jul 2026

UI Refresh & Component Library

Implementing a refreshed UI for a landscape-design SaaS and growing its shared component library.

Client
Landscape & outdoor-design SaaS · US
Role
Principal Engineer — UI/UX & front-end ownership
Year
May 2024 — Jul 2026
Stack
Angular, AG Grid Enterprise, RxAngular
25+ new components added
50+ components in total
Data-heavy enterprise grids

Context

The product is a web app that outdoor-design professionals use to plan and quote projects. I owned its UI and UX, and I implemented a refreshed interface across the app.

It already had a shared component library. My job was to modernise the interface and grow that library so new screens stay consistent as the product changes.

The problem

The existing UI needed refreshing, and the library had gaps. Several newer patterns weren't covered, so screens kept drifting back into one-off styling.

The app is also genuinely data-heavy. There are large tables with server-side data, filtering, multi-selection, and bulk actions, and those had to stay fast while the refresh happened around them.

Approach

I implemented the refreshed UI across the app, building on the existing library rather than replacing it. I added 25+ new components, which took the library to 50+ in total, and kept theming, dark mode, and shared styles consistent along the way.

For the data grids I used AG Grid Enterprise with a server-side row model, and handled state reactively with RxAngular so the UI stayed responsive as data streamed in.

I rolled the refresh out screen by screen against the live product instead of doing one big rewrite, so the app stayed usable the whole time.

Key decisions

Extend the existing library instead of forking it. New screens compose what's already there, and I only added components for patterns that genuinely didn't exist yet.

Drive colour and contrast from tokens so theming and dark mode stay consistent as the library grows.

Keep grid interactions on a server-side model so the app holds up with real datasets.

Where it landed

The app now runs on a refreshed, consistent UI, and the shared library has grown to 50+ components (25+ of them new) for the rest of the team to build on.

Built with

AngularAG Grid EnterpriseRxAngularTypeScriptTailwind CSSSCSS