Théo Andrimananarisoa
Tous les projets
En ligneProjet pédagogique, SUPINFO, en binôme· Avril 2026

Plateforme e-commerce

Supinfo.TV V2

Plateforme web de vente de films et séries en ligne : catalogue alimenté par l'API TMDB, fiches détaillées, panier et tunnel de commande avec compte utilisateur.

Aperçu du projet Supinfo.TV V2

Le projet

Construire un site e-commerce complet sans framework, pour comprendre ce que Laravel ou Symfony font réellement à notre place : routage, sessions, protection contre la falsification de requêtes, couche d'accès aux données.

L'objectif pédagogique était de ne pas pouvoir se cacher derrière une abstraction : chaque mécanisme de sécurité a dû être écrit et compris.

Cette seconde version reprend le catalogue de Supinfo.TV V1 et y ajoute le compte utilisateur, le panier, la recherche instantanée, la liste de souhaits et la notation.

Fonctionnalités

  • Catalogue TMDB : tendances, sorties, navigation par genre, fiche film complète avec casting et bande-annonce
  • Compte utilisateur complet : inscription avec vérification par e-mail, réinitialisation de mot de passe, historique d'achats
  • Panier persistant en base, avec ajout et suppression en AJAX sans rechargement
  • Recherche instantanée, liste de souhaits et notation par étoiles

Les difficultés rencontrées

Les prix ne sont pas stockés en base : ils sont calculés dynamiquement à partir des métadonnées TMDB : note, popularité, date de sortie, appartenance à une saga. Le problème est que dès que le prix transite par le navigateur, rien n'empêche l'utilisateur d'ouvrir les outils de développement et d'ajouter un film à un centime. Le recalculer côté serveur à chaque ajout aurait imposé un appel à l'API TMDB par ajout au panier : trop lent, et nous aurions dépassé le quota de l'API. La solution retenue a été de signer le prix côté serveur en HMAC SHA-256. Le serveur calcule le prix, génère une signature sur l'identifiant du film, le prix et le type, avec un secret qui ne quitte jamais le serveur. Le client renvoie le prix accompagné de sa signature, que le serveur revérifie par une comparaison à temps constant, pour ne pas laisser fuiter d'information par une attaque temporelle. Un prix falsifié ne correspond plus à sa signature et l'ajout est rejeté, sans un seul appel supplémentaire à l'API.

Le même raisonnement m'a mené à mettre en cache les réponses de TMDB, avec une durée de vie et une purge probabiliste : un pour cent des requêtes nettoient les entrées expirées. Cela a supprimé environ 80 % des appels à l'API externe.

Ce que j'en ai retiré

  • La sécurité n'est pas une liste de vérifications qu'on ajoute à la fin, mais une conséquence de l'architecture. Dès que j'ai admis que tout ce qui passe par le navigateur est falsifiable, les solutions sont devenues évidentes.
  • Automatiser la rigueur plutôt que compter sur ma vigilance : j'ai mis en place un contrôle avant chaque enregistrement, qui bloque les secrets, les traces de débogage oubliées et les erreurs de syntaxe avant qu'ils ne partent.
  • Écrire soi-même le routage, les sessions et la couche d'accès aux données fait comprendre concrètement ce qu'un framework apporte, et ce qu'il coûte de s'en passer.

Autres projets