Backend de Ruby on Rails con interfaz React/Redux. Los usuarios pueden guardar sus programas favoritos y agregar episodios a su programación. Pueden ver su programación en formato de calendario para ver cuándo y dónde se transmiten sus programas de televisión. Los usuarios también pueden ver los programas más vistos y de tendencia, así como los programas que se estrenarán esa semana. Este proyecto fue creado de forma independiente por mí, Matthew Thorry, como mi aplicación final en Flatiron School para su programa inmersivo de ingeniería de software.
Creé el backend de mi aplicación usando Ruby on Rails. Utilicé dos API diferentes para obtener los datos de TV: la API trakt.tv y la API TVmaze y las solicitudes de recuperación se realizan desde el backend. Los modelos son User , Show , Episode , UserShow , UserEpisode . Un User puede tener muchos programas y muchos episodios a través de programas. También pueden tener muchos user_shows y user_episodes (para calificaciones, etc.). Todos los modelos requerían un controlador ya que las acciones CRUD están disponibles para todos los modelos.
La interfaz se creó usando React y Redux. Tiene más de dos docenas de componentes con cuatro reductores (programas, episodios, búsqueda, extras) que representan los cuatro contenedores principales de la aplicación.
Responsable de obtener y mostrar información del programa desde las API y el backend. El estado Show Redux incluye myShows (programas guardados por el usuario), onTonight (programas de hoy desde API), premieres (programas que se estrenarán esta semana desde API) e isFetching (booleano). Los principales contenedores para espectáculos son ShowContainer , PremieresContainer y ShowCalendar .
Los hijos de ShowContainer son ShowList y ShowItem (nieto); otros niños son ShowPage con hermanos SuggestedList .
PremieresContainer y ShowCalendar no tienen hijos, pero son contenedores porque son responsables de múltiples tareas, incluida la búsqueda de programas o episodios y la adición o eliminación de elementos guardados de un usuario.
Responsable de obtener y mostrar información del episodio desde las API y el backend. El estado de Episodio Redux incluye myLineup (episodios guardados por el usuario), showEpisodes (episodios de un programa específico, extraídos de la API de TVmaze) e isFetching (booleano). Hay un contenedor, EpisodeContainer . Los hijos de EpisodeContainer son EpisodeList y EpisodeItem (nieto).
Los usuarios pueden ver episodios y agregar episodios específicos a su programación desde EpisodeItem .
Responsable de obtener y mostrar información del programa desde la API de TVmaze según la entrada del usuario. El estado Search Redux incluye results (resultados de la búsqueda) e isFetching (booleano). El contenedor es SearchContainer que tiene un hijo ( SearchResults ) y un nieto ( SearchItem ).
Los usuarios pueden guardar programas de SearchResults mediante un botón en SearchItem .
Responsable de buscar y mostrar información adicional de la API trakt.tv. El estado de Extras Redux incluye trending (episodios cuya popularidad cambió el último día), watching (programas que tienen más espectadores), ratings (conjunto de programas de usuario que incluyen calificaciones) e isFetching (booleano). Extras incluye tres contenedores: DashboardContainer , TrendingContainer y MostWatchedContainer .
DashboardContainer administra la página de destino después de iniciar sesión. Tiene dos hijos, DashboardLineupList y DashboardOnTonightList , cada uno de los cuales tiene un hijo, DashboardLineupItem y DashboardOnTonightItem . DashboardLineupList muestra los episodios de la programación de un usuario que se transmiten el día actual. DashboardOnTonightList muestra episodios que no están en la programación de un usuario pero que se transmiten hoy y tienen altas calificaciones.
TrendingContainer llama a la API trakt.tv para obtener los últimos programas de tendencias y es el padre de TrendingItem que muestra cada resultado de la consulta.
MostWatchedContainer llama a la API trakt.tv para obtener los programas más vistos y es el padre de MostWatchedItem que muestra cada resultado de la consulta. Un usuario también puede filtrar los resultados según momentos específicos (semana, mes, año, alguna vez).
Mis compañeros de clase en Flatiron School son siempre los mejores y más serviciales, ¡así que gracias! También gracias a mis instructores Johann Kerr, Lindsey Wells y Andrew Cohn por ser siempre unos fantásticos segundos ojos para mi trabajo.