Back to portfolio

Case study · SEO & engineering

How I built télé.guide

télé.guide is my online TV listings guide — no intrusive ads, no tracking cookies — with a cinema section: new releases, film pages, and a reasoned pick of the evening's TV every day.

The need

Finding when and on which channel to watch a football match or a film should be simple. Classic TV grids are often heavy, ad-cluttered, or incomplete for major sporting events. I wanted a fast, mobile-friendly site focused on content — with particular emphasis on World Cup 2026 over the summer.

Tech stack

  • Next.js (App Router) for server rendering, per-page metadata, and lean deployment.
  • XMLTV EPG grids: daily import of French terrestrial and sports channels, then local caching.
  • API-Football for official World Cup fixtures (Paris timezone, stages, teams).
  • OpenAI to write contextual copy: match pages during the World Cup, evening picks today.
  • TMDB to enrich film and non-sports programme pages (cast, synopsis, posters).

Films & tonight on TV

The Cinema section gathers the year's theatrical releases, actors, directors, and big-budget productions.

Each film has a single page under /films/, fed by TMDB and by the EPG grid when it airs on TV: a film keeps the same URL whether it is in theatres or on air. Example: Sinners by Ryan Coogler.

Dated /ce-soir/ pages offer a commented selection of the evening's programmes — opinions, not a copy of the grid — such as the evening of Thursday 1 October 2026. The text is generated once and cached, and the page stays online after its date.

FIFA World Cup 2026

During the tournament, a dedicated hub listed the day's matches, with one page per fixture and one per matchday. Since the competition ended, those URLs 301-redirect to the evening TV listings, so no page is left dead.

The main challenge: matching EPG listings to real World Cup fixtures. Grid titles are not normalized (“World Cup”, abbreviated team names, broadcasts on multiple channels). I built a matching pipeline that:

  • filters false positives (club cups, cycling, non-football programmes);
  • cross-references title + air time with API fixtures;
  • displays channel logos with EPG fallbacks when local assets are missing.

AI copy & updates

A bootstrap script generates missing copy; a daily job refreshes texts that depend on new data (results during the World Cup, tonight's programmes now). Each text is stored in a timestamped JSON cache: OpenAI is never called at request time, and pages stay stable for Google.

SEO & indexable pages

The dynamic sitemap exposes the home page, the grids, the cinema section, every film page, and each recent /ce-soir/ page. Metadata (title, description, Open Graph) is computed per route. Internal links between grids, film pages, and evening picks form a coherent mesh around queries like “what to watch on TV tonight” or “film tonight”. When a section becomes obsolete, like the World Cup one, its URLs 301-redirect to the closest page.

This portfolio page documents the project and links to télé.guide — useful for backlinks from a personal site with moderate authority but strong topical relevance (web development + TV media).

Useful links

Personal project — Laurent Remond, full-stack developer (Chamonix & Geneva).