Ruby on Rails 后端和 React/Redux 前端。用户可以保存他们最喜欢的节目并将剧集添加到他们的阵容中。他们可以以日历格式查看他们的阵容,以了解他们的电视节目播出的时间和地点。用户还可以查看热门节目、观看次数最多的节目以及本周首播的节目。这个项目是由我 Matthew Thorry 独立创建的,作为我在 Flatiron 学校的软件工程沉浸式项目中的最后一个应用程序。
我使用 Ruby on Rails 创建了应用程序的后端。我使用了两个不同的 API 来获取电视数据:trakt.tv API 和 TVmaze API,并且获取请求是从后端完成的。这些模型是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
将特定剧集添加到他们的阵容中。
负责根据用户输入从 TVmaze API 获取并显示节目信息。 Search Redux 状态包括results
(搜索结果)和isFetching
(布尔值)。该容器是SearchContainer
,它有一个子容器 ( SearchResults
) 和一个孙容器 ( SearchItem
)。
用户可以通过SearchItem
上的按钮保存SearchResults
中的节目。
负责从 trakt.tv API 获取和显示额外信息。 Extras Redux 状态包括trending
(最近一天受欢迎度发生变化的剧集)、 watching
(拥有最多观众的节目)、 ratings
(包括收视率的用户 user_shows 数组)和isFetching
(布尔值)。 Extras 包括三个容器: DashboardContainer
、 TrendingContainer
和MostWatchedContainer
。
DashboardContainer
管理登录后的登陆页面。它有两个子项: DashboardLineupList
和DashboardOnTonightList
,它们各有一个子项: DashboardLineupItem
和DashboardOnTonightItem
。 DashboardLineupList
显示用户阵容中当天播出的剧集。 DashboardOnTonightList
显示不在用户列表中但今天播出且评价较高的剧集。
TrendingContainer
调用 trakt.tv API 来获取最新的趋势节目,并且是显示每个查询结果的TrendingItem
的父级。
MostWatchedContainer
调用 trakt.tv API 来获取观看次数最多的节目,并且是显示每个查询结果的MostWatchedItem
的父级。用户还可以根据指定时间(周、月、年、曾经)过滤结果。
我在熨斗学校的同学总是最优秀、最乐于助人的,所以谢谢你们!还要感谢我的导师 Johann Kerr、Lindsey Wells 和 Andrew Cohn,他们一直是我工作的第二双眼睛。