CSRD — Customer Service Representative Desktop
Context
A large agent desktop used every day by support staff at 10+ Tier-1 telecom operators, including NUUDAY and Telesat, across Europe, Asia and the Americas. I have owned the frontend for about five years, across two roles.
The constraint
Everything lived in one Angular app, so every team shared one release train and unrelated features blocked each other. Long agent shifts also slowed the app down: RxJS subscriptions were never cleaned up, so memory kept climbing.
What I architected
- 1 Split the app into 4 independent micro-frontends with Module Federation, so squads deploy without waiting for each other.
- 2 Fixed the memory leaks by standardising RxJS cleanup (takeUntil and the async pipe) and enforcing it in every code review.
- 3 Moved complex multi-step agent workflows into NgRx, which cut UI state bugs sharply.
- 4 Built a set of reusable widgets, so new modules compose tested components instead of rebuilding them.
- 5 Owned releases end to end through GitLab CI, Jenkins, Docker and AWS, including live production support.
- Tier-1 operators live
- 10+
- Independent deployments
- 4
- Leaks after refactor
- Zero
- Angular versions carried
- v14→20
- Angular 14–20
- TypeScript
- NgRx
- RxJS
- Module Federation
- GraphQL
- Playwright
- TestCafe
- AWS