Repository navigation
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Résumé
TVTracker est une application de suivi de séries, animes et films, auto-hébergée, avec un backend Node.js/Express et un frontend React (Vite). Le projet est bien structuré, avec des services dédiés pour les sources externes (TVmaze, Wikipedia, Wikidata, iTunes, JustWatch, Allociné, TMDB) et une intégration Discord. La CI/CD est en place (GitHub Actions, Docker, Renovate). Le code est globalement propre, avec des commentaires explicatifs et une attention à la robustesse (retries HTTP, déduplication). Cependant, plusieurs points méritent attention : duplication de logique entre backend et frontend, absence de tests (un seul fichier de test), et quelques risques de sécurité/performance.
Problèmes et bugs potentiels
frontend/src/pages/Profile/Profile.jsxcontientpreviewDiscordMessage()etsplitDiscordMention()qui dupliquent la logique derenderMessageTemplate()etbuildPayload()debackend/src/services/discordNotifications.js. Toute modification de l’un sans l’autre entraînera des incohérences.backend/src/services/httpRetry.jsexiste, il faut vérifier que tous les appels (Wikipedia, TVmaze, etc.) utilisent bien ce mécanisme avec des timeouts adaptés. Un service externe lent peut bloquer la réponse API.backend/src/services/tvtimeImport.js) et les templates Discord (champ libre) ne semblent pas avoir de validation stricte côté backend. Un fichier malformé ou un template avec des caractères dangereux pourrait causer des erreurs ou des failles (ex: injection de mentions Discord).backend/src/utils/jwt.js.009_add_people_cache.sql). Les recherches répétées peuvent être lentes et coûteuses.useWheelToHorizontalScrolldansfrontend/src/pages/Explore/Explore.jsxintercepte la molette de la souris sur les lignes horizontales, ce qui peut empêcher le scroll vertical de la page si l’utilisateur survole une ligne. Il faudrait limiter ce comportement (ex: ne l’activer que si la ligne est scrollable).frontend/src/pages/Profile/Profile.jsx(20 Ko) etbackend/src/routes/explore.js(19 Ko) sont trop longs, ce qui rend la maintenance difficile.Qualité du code et nettoyage
shared/ou un package interne) pour éviter les divergences.wikipedia.js), ce qui est appréciable. Cependant, certains sont trop longs et pourraient être raccourcis.Profile.jsxetExplore.jsxpourraient être découpés en composants plus petits (ex:StatCard,Postersont déjà extraits, mais d’autres parties pourraient l’être).debugLog.jsest une bonne pratique, mais il faudrait s’assurer que les erreurs sont bien journalisées avec le contexte (route, paramètres) pour faciliter le débogage.Nouvelles fonctionnalités à envisager
Tests manquants
backend/tests/httpRetry.test.js). Il manque des tests unitaires pour les services (wikipedia.js,wikidata.js,tmdb.js,justwatch.js,tvtimeImport.js, etc.) et des tests d’intégration pour les routes (shows.js,movies.js,profile.js,admin.js,explore.js).PosterCard,NavBar,Profile,Explore, etc.).Dépendances et sécurité
npm auditdansbackend/etfrontend/pour détecter les vulnérabilités. La mise à jour deadm-zipvers^0.6.0(commit 5cc9bcd) est probablement une correction de sécurité, mais il faut vérifier que toutes les dépendances sont à jour.openssl rand -hex 32) et que les tokens ont une expiration courte (ex: 24h).Suggestions prioritaires (top 5)
wikipedia.js,wikidata.js,tvtimeImport.js) et des tests d’intégration pour les routes principales (shows,movies,profile). Cela permettra de détecter les régressions lors des mises à jour.shared/discord.js) utilisé à la fois par le backend et le frontend pour le rendu des messages, afin d’éviter les divergences.node-cache) ou la tablepeople_cacheexistante pour les recherches fréquentes (films, séries) afin d’améliorer les performances.