All case studies

Case 01 · Platform modernization · Smartway

Changing the foundation while delivery continued.

Three years of hands-on frontend ownership across a live corporate travel product: migration, build tooling, runtime performance, product modules, and team practices.

Company
Smartway
Role
Senior Frontend Engineer → Tech Lead
Period
Mar 2021—Feb 2024
Product
Corporate travel platform
Smartway corporate travel dashboard with booking search, approvals, and trip overview
Production product interfaceBooking · trips · approvals · open full size ↗

A growing product on a frontend foundation that needed to grow with it.

Smartway brings flights, rail, hotels, taxis, transfers, approvals, trip management, and expense analytics into one product. The frontend was already business-critical, but its JavaScript codebase, Webpack feedback loop, and expanding state surface made every new workflow more expensive to change.

The practical requirement was not a rewrite. Product delivery had to continue while the foundation became typed, faster to build, easier to navigate, and more predictable under load.

Operating constraint
Modernize a live, multi-domain product without freezing roadmap delivery.
My ownership
Migration strategy, implementation, performance work, product modules, standards, and mentoring.
Primary users
Travelers, approvers, travel managers, and internal operational teams.
Evidence
Build timings, production profiling, completed migration scope, and shipped product behavior.

The system had several bottlenecks, but only one delivery calendar.

Type safety, build performance, cart rendering, internationalization, analytics, mobile work, and team conventions were connected problems. Treating any one of them as an isolated rewrite would have moved risk elsewhere.

Codebase
A large JavaScript application plus a custom UI library moving toward TypeScript.
Feedback loop
Webpack builds were slow enough to interrupt the daily flow of the whole frontend team.
Runtime
The high-use shopping-cart flow paid for broad state updates and unnecessary rendering.
Team
More contributors required clearer boundaries, review standards, documentation, and shared ownership.

Incremental changes, each useful before the migration was complete.

The modernization was structured so feature teams could keep shipping. Each change reduced an immediate constraint while making the next change safer.

01 · Migration

Move the full codebase and UI library to TypeScript in slices.

Introduced TypeScript, established usable boundaries, and completed the product-wide migration within one year without a stop-the-world rewrite.

02 · Build system

Replace Webpack with Vite around active delivery.

Changed the build pipeline while preserving the team's working product surface and integrations, then validated the improvement against real build timings.

03 · Runtime

Narrow state ownership and render boundaries in the cart.

Profiled the shopping flow, reduced the work triggered by common actions, and kept the optimization attached to the real user workload.

04 · Team system

Make quality repeatable beyond one contributor.

Established review and CI/CD practices, documented decisions, ran technical talks, and mentored three developers through regular code review.

Faster feedback for the team and faster behavior for the customer.

The visible output included analytics, English-language support, and ongoing product delivery. The deeper result was a frontend foundation that was easier to change and a team with shared practices for keeping it that way.

≈10×faster builds after moving from Webpack to Vite
≈3×faster shopping-cart interactions after state and render restructuring
100%TypeScript migration, including the custom UI library, completed within one year

Measurement note. The performance figures come from internal build timings and production profiling. Smartway is a private product, so this public case describes scope, decisions, and outcomes without exposing internal code or customer data.

Hands-on engineering with technical leadership attached.

I remained hands-on in implementation while taking responsibility for migration direction, standards, documentation, technical talks, and mentoring. Product work included booking, analytics, internationalization, and React Native surfaces.

Role
Senior Frontend Engineer, later Tech Lead; implementation, design decisions, reviews, and mentoring.
Product areas
Booking, cart, analytics, localization, mobile, shared UI, build and delivery tooling.
Team impact
Three developers mentored alongside code-quality standards, CI/CD, internal documentation, and technical talks.

Technology used

  • React
  • TypeScript
  • Redux
  • MobX
  • React Query
  • Next.js
  • Vite
  • React Native
  • Storybook
  • Jenkins