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,他們一直是我工作的第二雙眼睛。