Développement d’une interface web dynamique avec Python, JavaScript et API REST

Développement de l’interface JustStreamIt

Ce projet m’a permis de plonger au cœur du développement front-end.
Ma mission : concevoir l’interface complète de JustStreamIt, une application web fictive permettant d’afficher un classement de films depuis une API Python.

Le point de départ semblait simple : créer une interface claire, responsive et dynamique à partir de données issues d’une API REST.
Cependant, j’ai rapidement découvert que le backend fourni comportait de nombreuses anomalies, notamment des liens d’images cassés.
Ces erreurs nuisaient au rendu visuel du site et généraient des avertissements dans la console.

Comme l’un des critères d’évaluation exigeait zéro erreur, j’ai décidé d’aller bien plus loin que les attentes.
Je ne voulais pas livrer un projet partiellement fonctionnel.

Réparation du backend et fiabilisation des données

J’ai exploré le code de l’API et mis en place un script de web scraping.
Ce script extrait automatiquement des visuels valides à partir des URL IMDB liées à chaque film.
Lorsqu’aucune image n’était disponible, une icône SVG de secours s’affichait.
Grâce à cette méthode, j’ai obtenu une interface stable, homogène et cohérente.

Ainsi, j’ai pu fiabiliser le rendu et supprimer toutes les erreurs ou avertissements.
Le site fonctionnait enfin de manière fluide et sans messages parasites dans la console.

Réorganisation du projet

En parallèle, j’ai réorganisé le projet pour le rendre plus clair.
L’objectif était de séparer proprement les deux environnements :

  • Un dossier backend/ pour l’API Python.
  • Un dossier frontend/ pour le code du site.
  • Un fichier README.md à la racine décrivant l’installation et le lancement.

Grâce à cette structure, la maintenance devient plus simple.
Les étapes de développement sont logiques et faciles à suivre, même pour un futur collaborateur.

Intégration de Node.js et Gulp

Côté front-end, j’ai configuré un environnement Node.js avec Gulp.
Ce pipeline compile automatiquement mes fichiers SCSS et JavaScript, puis génère un fichier unique global.css.

Même si j’utilise souvent Tailwind CSS, j’ai choisi Bootstrap 5 pour ce projet.
Je souhaitais explorer une approche différente du responsive design.
Cette expérience m’a permis de mieux comprendre les grilles, les breakpoints et les composants réutilisables.

De plus, l’usage de SCSS m’a aidé à garder un style clair, modulaire et facile à maintenir.

Logique JavaScript et gestion asynchrone

Pour la partie JavaScript, j’ai centralisé tous les appels à l’API dans une fonction getJSON() située dans assets/js/api.js.
Cette approche réduit la duplication du code et facilite la maintenance.

Chaque chargement de contenu — meilleur film, catégories, genres — se fait de façon asynchrone et ordonnée.
Ainsi, la page reste fluide, rapide et réactive.

En effet, la combinaison de async, await et fetch permet d’enchaîner les requêtes sans blocage.
Le résultat : un site rapide, ergonomique et agréable à utiliser.

Interface responsive et accessible

Le site respecte les standards W3C et PEP8, ainsi que la sémantique HTML.
Il s’adapte à toutes les tailles d’écran : mobile, tablette et ordinateur.
J’ai ajouté des animations légères, des modales accessibles et des boutons “Voir plus / Voir moins”.

Ainsi, la navigation est intuitive et agréable.
Le résultat final est une interface propre, sans erreurs et totalement responsive.
Même si certaines affiches manquent, chaque contenu disponible s’affiche correctement avec un texte de remplacement.

Le chargement est rapide, et les catégories se mettent à jour via AJAX.
L’ensemble reste fluide et cohérent, quelle que soit la plateforme utilisée.

Un apprentissage complet et formateur

Au-delà des aspects techniques, ce projet m’a appris à penser comme un développeur complet.
J’ai appris à analyser un problème, à concevoir une architecture claire et à automatiser les processus.
Finalement, j’ai livré un produit final robuste, propre et professionnel.

Description

Contexte du projet

L’objectif de ce projet était de créer la partie front-end d’une application web affichant un
classement de films en temps réel.

L’application consomme les données d’une API REST Python (OCMovies-API).
Elle devait offrir une interface moderne, responsive et accessible.
Elle devait aussi respecter les standards W3C et PEP8.

Ainsi, le projet visait à combiner logique front-end, intégration API et bonnes pratiques de développement.
De plus, il devait produire un livrable clair, documenté et conforme aux critères de qualité du web.

Langages utilisés

Le développement a mobilisé plusieurs langages complémentaires :

  • Python — gestion de l’API locale OCMovies.
  • JavaScript (ES6+) — logique dynamique, appels API et manipulation du DOM.
  • HTML5 — structure sémantique du contenu.
  • CSS3 / SCSS — mise en forme modulaire et responsive.
  • Markdown — documentation technique et consignes d’installation.

Grâce à cette combinaison, le projet associe rigueur back-end et flexibilité front-end.

Outils et technologies

L’environnement technique a été construit autour d’outils modernes :

  • Node.js — compilation SCSS et gestion du pipeline JavaScript.
  • Gulp — automatisation du build et surveillance des fichiers.
  • Bootstrap 5.3 — framework CSS pour le design responsive.
  • Fetch API (AJAX) — communication asynchrone avec l’API.
  • Git + GitHub — gestion de versions et hébergement du code.
  • Validateurs W3C et PEP8 — contrôle de conformité du code.
  • Scraping IMDB — récupération automatique des images manquantes.
  • Figma — visualisation et respect de la maquette de référence.

Ces outils ont permis d’assurer un flux de travail fluide, une intégration fiable et un
résultat conforme aux standards web.

Sierra Ripoche
Résumé de la politique de confidentialité

Ce site utilise des cookies afin que nous puissions vous fournir la meilleure expérience utilisateur possible. Les informations sur les cookies sont stockées dans votre navigateur et remplissent des fonctions telles que vous reconnaître lorsque vous revenez sur notre site Web et aider notre équipe à comprendre les sections du site que vous trouvez les plus intéressantes et utiles.