Architecting RMC/BFM's IPTV Platform: Where Content Meets Code
February 15, 2021

Architecting RMC/BFM's IPTV Platform: Where Content Meets Code

Angular 13 RxJS NX SSR NodeJS MongoDB IPTV Performance

When SFR approached me to architect their RMC/BFM IPTV streaming application, I knew this would be a project where performance wasn't just important—it was everything. Streaming video to thousands of concurrent users doesn't tolerate mediocrity.

The Vision

RMC and BFM are major French news and radio networks. The goal: deliver their live content, TV guides, and on-demand programming through a modern, responsive web application. Users expected Netflix-quality UX, and we had to deliver.

Why Angular 13?

We chose Angular 13 for several reasons: - Strong TypeScript support - Robust framework for complex applications - Excellent tooling and ecosystem - Built-in features for performance optimization

But we didn't just use Angular—we built it right.

The NX Monorepo

Early on, I pushed for NX as our monorepo solution. Why? Because we knew we'd have multiple applications (web, mobile web, admin panels) sharing code. NX gave us: - Shared component libraries - Consistent code standards across projects - Powerful code generation - Intelligent build caching

It was a game-changer for our productivity.

The Live TV Module

Building the live TV experience required careful attention to streaming protocols. We used Shaka Player, configuring it for optimal performance across different network conditions. Buffering, bitrate adaptation, error recovery—every detail mattered.

The TV Guide Challenge

A TV guide is deceptively complex. You're displaying schedules across channels and time, handling timezone conversions, dealing with last-minute program changes. We built a reactive system using RxJS that could update the guide in real-time as schedules changed.

Analytics Integration

French media companies take audience measurement seriously. We integrated: - Médiamétrie for official audience measurement - AT Internet for detailed web analytics - Didomi for GDPR-compliant consent management

Each integration required careful implementation to ensure accurate tracking without impacting performance.

SEO with Server-Side Rendering

For content discoverability, we implemented Angular Universal for server-side rendering (SSR). Every page was pre-rendered on the server, making it crawlable by search engines while still providing a rich single-page application experience.

Reactive Programming Everywhere

RxJS became our secret weapon. Every data stream—from API calls to user interactions to real-time schedule updates—was modeled as observables. This gave us powerful composition, error handling, and the ability to cancel operations cleanly.

The Backend

While the frontend got the glory, the NodeJS backend did the heavy lifting: - Proxying streaming protocols - Caching TV guide data in MongoDB - Serving APIs for content metadata - Handling user authentication and preferences

Performance Obsession

We optimized ruthlessly: - Lazy loading for routes - Image optimization and lazy loading - Service workers for offline capability - Bundle size analysis and tree shaking - Memory leak detection and elimination

The SCSS Architecture

We built a comprehensive design system in SCSS, with: - CSS variables for theming - BEM methodology for class naming - Responsive mixins for breakpoints - Animation utilities for smooth transitions

Key Learnings

Building a streaming platform taught me: - Performance is a feature, not an afterthought - Reactive programming shines in real-time applications - Monorepos with NX scale better than multiple repos - SSR is crucial for content-heavy applications - Never underestimate the complexity of TV scheduling

The Result

We delivered a platform that handled thousands of concurrent streams smoothly. Users could watch live TV, browse guides, access on-demand content, all with a responsive, polished interface. The analytics integrations provided valuable insights, and SEO brought organic traffic.

Personal Pride

This project showcased what modern web development can achieve. From architecture to implementation to optimization, every decision was intentional. And it worked.

0visitors