FedEx – ECAM v2 (Enterprise Customer Application Management)

Technical Lead – Frontend · 2022 · 3 years · 4 people · 7 min read

Led a high-impact Angular modernisation initiative for FedEx's B2B account management platform — delivering a 50% reduction in build time, eliminating critical security vulnerabilities, and earning a 2-year client engagement through a proactive technical audit that demonstrated deep engineering credibility

Overview

Spearheaded the modernisation and ongoing development of ECAM (Enterprise Customer Application Management) — FedEx's B2B platform for managing enterprise account profiles, incidents, and support tickets. Took ownership of a legacy Angular v4 codebase and led a team of 4 frontend engineers through a full framework migration to Angular v18, while simultaneously identifying and resolving critical security and quality issues that had gone unaddressed. The depth of the initial technical analysis directly secured a 2-year project engagement with the client.

Problem

ECAM was running on Angular v4 — a framework version well past its support lifecycle — leaving the platform exposed to unpatched security vulnerabilities, incompatible dependency chains, and a build pipeline that struggled under the weight of accumulated technical debt. Beyond the framework lag, the codebase contained critical security gaps, widespread coding inconsistencies, and missing core functionalities that had never been formally documented or surfaced to the client. Enterprise B2B customers relying on ECAM for account and incident management were operating on a platform that was fragile, slow to build, and increasingly difficult to extend or maintain safely.

Constraints

  • Live production system serving enterprise B2B customers — zero tolerance for feature regression during migration
  • Legacy Angular v4 codebase with limited documentation and inconsistent patterns across modules
  • Critical security vulnerabilities required immediate remediation alongside ongoing feature delivery
  • Small team of 4 developers responsible for both migration work and new feature development in parallel
  • Client trust needed to be established quickly through demonstrated technical credibility before full engagement was confirmed

Approach

Began with a comprehensive technical audit of the existing codebase — cataloguing security vulnerabilities, coding inconsistencies, deprecated API usage, and missing functionalities. This analysis was structured into a formal technical report and presented directly to the FedEx stakeholders, establishing credibility and forming the basis for the project roadmap. The Angular migration was executed incrementally — version by version — to maintain production stability throughout. Strict TypeScript configurations were introduced progressively alongside the migration to improve type safety. Code review processes, ESLint enforcement, and SCSS architecture were introduced to elevate team-wide quality standards. Junior developers were mentored through the complexities of the migration with structured guidance on Angular best practices, reactive patterns, and security-conscious coding.

Key Decisions

Incremental version-by-version migration from Angular v4 to v18

Reasoning:

A big-bang rewrite would have introduced unacceptable regression risk on a live enterprise platform. Migrating version by version allowed the team to ship a stable product throughout the process, validate each migrated section in isolation, and course-correct without cascading failures. It also enabled parallel feature delivery during the migration, which was a hard requirement from the client.

Alternatives considered:
  • Full application rewrite from scratch
  • Freeze feature development and migrate in a single release
  • Jump to later versions forcefully (e.g. v4 → v12) and fix issues as they arise

Formal technical audit before committing to a delivery roadmap

Reasoning:

Committing to a delivery plan without first understanding the true state of the codebase would have led to missed estimates and unpleasant discoveries mid-engagement. A front-loaded audit gave the team a clear picture of the debt landscape, allowed accurate scoping, and — critically — gave the client transparent visibility into the platform's real state. That transparency directly built the trust that secured the 2-year engagement.

Alternatives considered:
  • Begin feature delivery immediately and address issues as discovered
  • Conduct a lightweight code review without formal reporting
  • Rely on existing documentation (which was incomplete)

Strict TypeScript configuration with progressive enforcement

Reasoning:

Enabling strict TypeScript all at once on a large legacy codebase would have generated thousands of type errors and stalled the team. Progressive enforcement — tightening compiler options module by module as each was migrated — allowed the team to capture the full benefit of strict typing without blocking delivery. The result was a measurably more predictable codebase with far fewer runtime surprises.

Alternatives considered:
  • Keep TypeScript in loose mode throughout the migration
  • Enable strict mode globally and fix all errors before shipping
  • Adopt a type-checking linting layer (e.g. typescript-eslint) instead

Tech Stack

  • Angular v4 → v18
  • TypeScript (strict mode)
  • RxJS
  • NgRx
  • SCSS
  • ESLint
  • Karma
  • Jasmine

Result & Impact

  • 50% faster builds
    Build Time Reduction
  • 2-year client engagement
    Project Value Secured
  • Angular v4 → v18
    Framework Leap
  • Critical vulnerabilities resolved
    Security Posture

The ECAM modernisation transformed a fragile, aging platform into a maintainable, secure, and performant enterprise application. The 50% reduction in build time accelerated the development cycle immediately, while the strict TypeScript migration produced a codebase that was significantly more predictable and easier to onboard new developers into. The proactive technical audit — a calculated risk that required upfront investment — paid off decisively, with FedEx committing to a 2-year engagement on the strength of the team's transparency and technical depth. Junior developers mentored through the migration grew into confident contributors capable of owning complex frontend challenges independently.

Learnings

  • A proactive, honest technical audit is one of the highest-leverage activities a lead can perform at the start of an engagement — it builds trust faster than any amount of feature delivery
  • Incremental migration beats big-bang rewrites every time on live production systems — stability is a feature
  • Progressive TypeScript strictness enforcement is the pragmatic path to a fully typed legacy codebase — all-or-nothing approaches create paralysis
  • Security vulnerabilities in frontend codebases are often hiding in plain sight — dependency audits, input handling, and auth flow reviews should be standard practice on any legacy system
  • Mentoring junior developers through a major migration is one of the most effective ways to level up a team — the pressure of real constraints accelerates growth faster than contrived exercises
  • Code review is not just a quality gate — it is a knowledge transfer mechanism that raises the floor of the whole team over time

Technical Audit & Client Trust

The engagement began not with feature delivery, but with a thorough forensic review of the existing codebase:

  • Security vulnerability assessment identifying critical gaps in authentication flows, data handling, and dependency exposure
  • Coding inconsistency mapping cataloguing anti-patterns, deprecated API usage, and architectural drift across modules
  • Missing functionality analysis surfacing features expected by enterprise users that had never been implemented
  • Formal technical report structured for both engineering and business stakeholders, with prioritised remediation recommendations
  • Stakeholder presentation delivering findings transparently to the FedEx client — directly resulting in a 2-year project commitment based on demonstrated technical credibility

Angular v4 → v18 Migration

Led a careful, incremental modernisation of a live enterprise application with zero tolerance for regression:

  • Module-by-module migration strategy preserving production stability throughout the upgrade cycle
  • 50% build time reduction achieved through Angular Ivy compiler adoption, optimised build configurations, and tree-shaking improvements
  • Strict TypeScript enforcement introduced progressively per module, eliminating runtime type errors and improving IDE-assisted development
  • Deprecated API replacement across RxJS, Angular Forms, HTTP client, and routing modules
  • Dependency chain modernisation resolving incompatible and unmaintained packages accumulated over years of neglect

Security & Code Quality Uplift

Alongside the migration, established engineering practices that raised the quality floor across the entire codebase:

  • Critical security remediation addressing vulnerabilities in authentication, input sanitisation, and third-party dependency exposure
  • ESLint integration with a custom ruleset enforcing consistent code style and catching common error patterns at commit time
  • SCSS architecture introducing a structured stylesheet layer to replace ad-hoc inline styles and scattered CSS
  • TypeScript utility types adopted across service and model layers to reduce duplication and improve type expressiveness
  • Regression test coverage expanded across migrated modules to provide a safety net for ongoing development

Team Leadership & Mentorship

Built a high-performing team capable of owning complex frontend challenges independently:

  • Structured code reviews with written feedback focused on reasoning, not just corrections — building understanding rather than compliance
  • Technical guidance sessions on Angular migration patterns, reactive programming with RxJS, and security-conscious frontend development
  • Junior developer mentorship through pairing on complex migration tasks, accelerating growth under real production pressure
  • Cross-functional collaboration with UI/UX designers, backend engineers, QA, and product owners to ensure seamless feature integration and sprint delivery
  • Sprint demos and stakeholder communication keeping the FedEx product team aligned on progress, approach, and upcoming decisions