Backend Ruby on Rails avec frontend React/Redux. Les utilisateurs peuvent enregistrer leurs émissions préférées et ajouter des épisodes à leur programmation. Ils peuvent consulter leur programmation sous forme de calendrier pour voir quand et où leurs émissions de télévision sont diffusées. Les utilisateurs peuvent également voir les émissions tendances et les plus regardées, ainsi que les émissions diffusées en première cette semaine-là. Ce projet a été créé indépendamment par moi, Matthew Thorry, en tant qu'application finale à la Flatiron School pour leur programme immersif de génie logiciel.
J'ai créé le backend de mon application en utilisant Ruby on Rails. J'ai utilisé deux API différentes pour obtenir les données TV : l'API trakt.tv et l'API TVmaze et les requêtes de récupération sont effectuées depuis le backend. Les modèles sont User , Show , Episode , UserShow , UserEpisode . Un User peut avoir de nombreuses émissions et de nombreux épisodes à travers des émissions. Ils peuvent également avoir de nombreux user_shows et user_episodes (pour les évaluations, etc.). Tous les modèles nécessitaient un contrôleur car les actions CRUD sont disponibles pour tous les modèles.
Le frontend a été créé à l'aide de React et Redux. Il comporte plus de deux douzaines de composants avec quatre réducteurs (émissions, épisodes, recherche, extras) qui représentent les quatre conteneurs principaux de l'application.
Responsable de la récupération et de l'affichage des informations d'affichage à partir des API et du backend. L'état Show Redux inclut myShows (émissions enregistrées par l'utilisateur), onTonight (émissions d'aujourd'hui à partir de l'API), premieres (émissions diffusées en première cette semaine à partir de l'API) et isFetching (booléen). Les principaux conteneurs pour les émissions sont ShowContainer , PremieresContainer et ShowCalendar .
Les enfants de ShowContainer sont ShowList et ShowItem (petit-enfant) ; les autres enfants sont ShowPage avec le frère SuggestedList .
PremieresContainer et ShowCalendar n'ont pas d'enfants mais sont des conteneurs car ils sont responsables de plusieurs tâches, notamment la récupération d'émissions ou d'épisodes et l'ajout/suppression d'éléments enregistrés par un utilisateur.
Responsable de la récupération et de l'affichage des informations sur les épisodes à partir des API et du backend. L'état Episode Redux inclut myLineup (épisodes enregistrés par l'utilisateur), showEpisodes (épisodes pour une émission spécifique, extraits de l'API TVmaze) et isFetching (booléen). Il existe un conteneur, EpisodeContainer . Les enfants de EpisodeContainer sont EpisodeList et EpisodeItem (petit-enfant).
Les utilisateurs peuvent visualiser les épisodes et ajouter des épisodes spécifiques à leur programmation à partir de EpisodeItem .
Responsable de la récupération et de l'affichage des informations sur l'émission à partir de l'API TVmaze en fonction des entrées de l'utilisateur. L'état Search Redux inclut results (résultats de la recherche) et isFetching (booléen). Le conteneur est SearchContainer qui a un enfant ( SearchResults ) et un petit-enfant ( SearchItem ).
Les utilisateurs peuvent enregistrer des émissions à partir de SearchResults via un bouton sur SearchItem .
Responsable de la récupération et de l'affichage d'informations supplémentaires à partir de l'API trakt.tv. L'état Extras Redux inclut trending (les épisodes dont la popularité a changé au cours de la dernière journée), watching (les émissions qui ont le plus de téléspectateurs), ratings (un tableau d'émissions utilisateur de l'utilisateur qui incluent la note) et isFetching (booléen). Extras comprend trois conteneurs : DashboardContainer , TrendingContainer et MostWatchedContainer .
DashboardContainer gère la page de destination après la connexion. Il a deux enfants, DashboardLineupList et DashboardOnTonightList , qui ont chacun un enfant, DashboardLineupItem et DashboardOnTonightItem . DashboardLineupList affiche les épisodes de la programmation d'un utilisateur diffusés le jour en cours. DashboardOnTonightList affiche les épisodes qui ne figurent pas dans la programmation d'un utilisateur mais qui sont diffusés aujourd'hui et qui sont très bien notés.
TrendingContainer appelle l'API trakt.tv pour obtenir les dernières émissions de tendances et est le parent de TrendingItem qui affiche chaque résultat de la requête.
MostWatchedContainer appelle l'API trakt.tv pour obtenir les émissions les plus regardées et est le parent de MostWatchedItem qui affiche chaque résultat de la requête. Un utilisateur peut également filtrer les résultats en fonction de périodes spécifiées (semaine, mois, année, jamais).
Mes camarades de classe à Flatiron School sont toujours les meilleurs et les plus serviables, alors merci ! Merci également à mes instructeurs Johann Kerr, Lindsey Wells et Andrew Cohn pour avoir toujours été un deuxième regard incroyable pour mon travail.