Серверная часть Ruby on Rails с интерфейсом React/Redux. Пользователи могут сохранять свои любимые шоу и добавлять эпизоды в свою линейку. Они могут просмотреть свой состав в формате календаря, чтобы узнать, когда и где выходят в эфир их телешоу. Пользователи также могут видеть трендовые и самые просматриваемые шоу, а также шоу, премьеры которых состоятся на этой неделе. Этот проект был создан независимо мной, Мэтью Торри, в качестве моего последнего приложения в Flatiron School для их программы погружения в программную инженерию.
Я создал серверную часть своего приложения, используя Ruby on Rails. Для получения телевизионных данных я использовал два разных API: API trakt.tv и API TVmaze, а запросы на выборку выполняются из серверной части. Модели: User , Show , Episode , UserShow , UserEpisode . User может иметь множество шоу и множество эпизодов шоу. Они также могут иметь множество user_shows и user_episodes (для рейтингов и т. д.). Для всех моделей требовался контроллер, поскольку действия CRUD доступны всем моделям.
Интерфейс был создан с использованием React и Redux. Он имеет более двух десятков компонентов с четырьмя редукторами (шоу, эпизоды, поиск, дополнения), которые представляют собой четыре основных контейнера приложения.
Отвечает за получение и отображение информации о шоу из API и серверной части. Состояние Show Redux включает в себя myShows (сохраненные пользователем шоу), onTonight (сегодняшние шоу из API), premieres (премьера шоу на этой неделе из API) и isFetching (логическое значение). Основными контейнерами для шоу являются ShowContainer , PremieresContainer и ShowCalendar .
Дочерними элементами ShowContainer являются ShowList и ShowItem (внук); другие дочерние элементы — это ShowPage с братом-близнецом SuggestedList .
PremieresContainer и ShowCalendar не имеют дочерних элементов, но являются контейнерами, поскольку отвечают за несколько задач, включая выборку шоу или эпизодов, а также добавление/удаление сохраненных пользователем элементов.
Отвечает за получение и отображение информации об эпизодах из API и серверной части. Состояние Episode Redux включает myLineup (сохраненные пользователем эпизоды), showEpisodes (эпизоды конкретного шоу, полученные из TVmaze API) и isFetching (логическое значение). Есть один контейнер, EpisodeContainer . Дочерними элементами EpisodeContainer являются EpisodeList и EpisodeItem (внук).
Пользователи могут просматривать эпизоды и добавлять определенные эпизоды в свою линейку из EpisodeItem .
Отвечает за получение и отображение информации о шоу из API TVmaze на основе пользовательского ввода. Состояние Search Redux включает results (результаты поиска) и isFetching (логическое значение). Контейнером является SearchContainer , у которого есть дочерний элемент ( SearchResults ) и внук ( SearchItem ).
Пользователи могут сохранять шоу из SearchResults с помощью кнопки на SearchItem .
Отвечает за получение и отображение дополнительной информации из API trakt.tv. Состояние Extras Redux включает в себя trending (эпизоды, популярность которых изменилась за последний день), watching (шоу, у которых больше всего зрителей), ratings (массив пользовательских user_shows, которые включают рейтинг) и isFetching (логическое значение). В состав Extras входят три контейнера: DashboardContainer , TrendingContainer и MostWatchedContainer .
DashboardContainer управляет целевой страницей после входа в систему. У него есть два дочерних элемента, DashboardLineupList и DashboardOnTonightList , каждый из которых имеет дочерний элемент DashboardLineupItem и DashboardOnTonightItem . DashboardLineupList отображает серии из списка пользователя, которые выходят в эфир в текущий день. DashboardOnTonightList отображает эпизоды, которых нет в списке пользователей, но которые выходят в эфир сегодня и имеют высокий рейтинг.
TrendingContainer вызывает API trakt.tv для получения последних трендовых шоу и является родительским элементом TrendingItem , который отображает каждый результат запроса.
MostWatchedContainer вызывает API trakt.tv для получения наиболее просматриваемых шоу и является родительским элементом MostWatchedItem , который отображает каждый результат запроса. Пользователь также может фильтровать результаты по указанному времени (неделя, месяц, год, когда-либо).
Мои одноклассники в школе Flatiron всегда самые лучшие и отзывчивые, так что спасибо! Также спасибо моим инструкторам Йоханну Керру, Линдси Уэллсу и Эндрю Кону за то, что они всегда были замечательными вторыми глазами в моей работе.