Skip to content

CandidateX

Recovered an incomplete hiring platform frontend and gave the team a faster way to ship new features.

Industry: HR Tech
Duration: 18 months
Role: Senior Frontend Developer
Design System Frontend Architecture React Migration

Business impact

Recovered a stalled product and shipped the frontend
Shared UI helped the team deliver new features faster.
CandidateX

Recovering the frontend

I joined CandidateX after an agency handoff. The project had substantial infrastructure in place, but the core frontend was incomplete and key product flows were unreliable. The team needed a practical way to recover the product while keeping the work already in place.

The frontend was also carrying too many one-off decisions. Similar screens were being rebuilt in different ways, which made product work slower and the UI harder to keep consistent.

Stabilize first, modernize next

I separated the immediate recovery work from the longer-term architecture work. First, I stabilized the frontend foundation and the product flows the team needed to move forward. Then I modernized the React setup, turned repeated screens into shared UI patterns, and gave the team a clearer way to organize frontend work.

Tech decisions:

  • Moved the legacy React setup to Vite and Redux Toolkit to simplify development and state management
  • Adopted Chakra UI to give the team accessible component primitives
  • Organized the frontend as an Nx monorepo with clearer app and shared-package ownership

Frontend foundation and shared UI

  • Recovered frontend foundation for the product screens and flows the team needed to finish
  • Reusable component library for common product screens and flows
  • Shared UI system with consistent tokens, spacing, and interaction patterns
  • Migration path that let the team adopt new patterns without stopping feature work
  • Documentation for component usage, app structure, and data flow

Faster delivery

The team reported faster feature delivery after the shared UI work. Instead of rebuilding common pieces from scratch, developers could compose screens from a clearer set of patterns.

The Nx monorepo setup also made it easier to organize multiple apps and shared packages without mixing ownership across the codebase.

Have a similar problem?

Send the context. I’ll tell you if I can help.