Backend Ruby on Rails com frontend React/Redux. Os usuários podem salvar seus programas favoritos e adicionar episódios à programação. Eles podem visualizar sua programação em formato de calendário para ver quando e onde seus programas de TV vão ao ar. Os usuários também podem ver os programas mais assistidos e populares, bem como os programas que estreiam naquela semana. Este projeto foi criado de forma independente por mim, Matthew Thorry, como meu aplicativo final na Flatiron School para o Programa Imersivo de Engenharia de Software.
Criei o backend do meu aplicativo usando Ruby on Rails. Usei duas APIs diferentes para obter os dados da TV: API trakt.tv e API TVmaze e as solicitações de busca são feitas no backend. Os modelos são User
, Show
, Episode
, UserShow
, UserEpisode
. Um User
pode ter muitos programas e muitos episódios de programas. Eles também podem ter muitos user_shows
e user_episodes
(para classificações, etc.). Todos os modelos exigiam um controlador, pois as ações CRUD estão disponíveis para todos os modelos.
O frontend foi criado usando React e Redux. Possui mais de duas dezenas de componentes com quatro redutores (programas, episódios, busca, extras) que representam os quatro contêineres principais do aplicativo.
Responsável por buscar e exibir informações de show das APIs e backend. O estado Show Redux inclui myShows
(programas salvos do usuário), onTonight
(programas de hoje da API), premieres
(programas com estreia esta semana da API) e isFetching
(booleano). Os principais Containers para shows são ShowContainer
, PremieresContainer
e ShowCalendar
.
Os filhos de ShowContainer
são ShowList
e ShowItem
(neto); outros filhos são ShowPage
com irmão SuggestedList
.
PremieresContainer
e ShowCalendar
não têm filhos, mas são contêineres porque são responsáveis por diversas tarefas, incluindo buscar programas ou episódios e adicionar/remover itens salvos de um usuário.
Responsável por buscar e exibir informações do episódio nas APIs e backend. O estado Episode Redux inclui myLineup
(episódios salvos pelo usuário), showEpisodes
(episódios de um programa específico, extraídos da API TVmaze) e isFetching
(booleano). Existe um contêiner, EpisodeContainer
. Os filhos de EpisodeContainer
são EpisodeList
e EpisodeItem
(neto).
Os usuários podem visualizar episódios e adicionar episódios específicos à sua programação em EpisodeItem
.
Responsável por buscar e exibir informações do programa da API TVmaze com base na entrada do usuário. O estado Search Redux inclui results
(resultados da pesquisa) e isFetching
(booleano). O contêiner é SearchContainer
que possui um filho ( SearchResults
) e um neto ( SearchItem
).
Os usuários podem salvar programas do SearchResults
por meio de um botão no SearchItem
.
Responsável por buscar e exibir informações extras da API trakt.tv. O estado Extras Redux inclui trending
(episódios cuja popularidade mudou no último dia), watching
(programas com mais espectadores), ratings
(matriz de user_shows do usuário que inclui classificação) e isFetching
(booleano). Extras inclui três contêineres: DashboardContainer
, TrendingContainer
e MostWatchedContainer
.
DashboardContainer
gerencia a página inicial após o login. Ele tem dois filhos, DashboardLineupList
e DashboardOnTonightList
, cada um com um filho, DashboardLineupItem
e DashboardOnTonightItem
. DashboardLineupList
exibe os episódios da programação de um usuário que vão ao ar no dia atual. DashboardOnTonightList
exibe episódios que não estão na programação do usuário, mas que vão ao ar hoje e são altamente avaliados.
TrendingContainer
chama a API trakt.tv para obter os programas de tendências mais recentes e é o pai de TrendingItem
que exibe cada resultado da consulta.
MostWatchedContainer
chama a API trakt.tv para obter os programas mais assistidos e é o pai de MostWatchedItem
que exibe cada resultado da consulta. Um usuário também pode filtrar resultados com base em horários especificados (semana, mês, ano, sempre).
Meus colegas da Flatiron School são sempre os melhores e mais prestativos, então, obrigado! Agradeço também aos meus instrutores Johann Kerr, Lindsey Wells e Andrew Cohn por sempre serem um incrível segundo par de olhos para o meu trabalho.