React/Redux 프론트엔드를 갖춘 Ruby on Rails 백엔드. 사용자는 자신이 좋아하는 프로그램을 저장하고 라인업에 에피소드를 추가할 수 있습니다. 달력 형식으로 라인업을 보고 TV에서 방송되는 시간과 위치를 확인할 수 있습니다. 또한 사용자는 인기 급상승 프로그램과 가장 많이 본 프로그램은 물론 해당 주에 첫 방송된 프로그램도 볼 수 있습니다. 이 프로젝트는 Flatiron School의 소프트웨어 엔지니어링 몰입형 프로그램을 위한 마지막 앱으로 Matthew Thorry가 독립적으로 만들었습니다.
Ruby on Rails를 사용하여 앱의 백엔드를 만들었습니다. TV 데이터를 가져오기 위해 trakt.tv API와 TVmaze API라는 두 가지 다른 API를 사용했으며 가져오기 요청은 백엔드에서 수행되었습니다. 모델은 User , Show , Episode , UserShow , UserEpisode 입니다. User 많은 쇼와 쇼를 통해 많은 에피소드를 가질 수 있습니다. 또한 (평가 등을 위해) 많은 user_shows 및 user_episodes 가질 수 있습니다. CRUD 작업을 모든 모델에서 사용할 수 있으므로 모든 모델에는 컨트롤러가 필요합니다.
프론트엔드는 React와 Redux를 사용하여 만들어졌습니다. 여기에는 앱의 4가지 주요 컨테이너를 나타내는 4가지 축소기(쇼, 에피소드, 검색, 추가 항목)가 포함된 24개 이상의 구성 요소가 있습니다.
API 및 백엔드에서 프로그램 정보를 가져오고 표시하는 일을 담당합니다. Show Redux 상태에는 myShows (사용자가 저장한 프로그램), onTonight (API에서 오늘 방송), premieres (API에서 이번 주에 방송하는 프로그램) 및 isFetching (부울)이 포함됩니다. 쇼의 기본 컨테이너는 ShowContainer , PremieresContainer 및 ShowCalendar 입니다.
ShowContainer 의 자식은 ShowList 및 ShowItem (손자)입니다. 다른 하위 항목은 형제 SuggestedList 있는 ShowPage 입니다.
PremieresContainer 및 ShowCalendar 하위 항목이 없지만 쇼나 에피소드 가져오기, 사용자의 저장된 항목 추가/제거 등 여러 작업을 담당하므로 컨테이너입니다.
API 및 백엔드에서 에피소드 정보를 가져오고 표시하는 일을 담당합니다. Episode Redux 상태에는 myLineup (사용자가 저장한 에피소드), showEpisodes (TVmaze API에서 가져온 특정 프로그램에 대한 에피소드) 및 isFetching (부울)이 포함됩니다. EpisodeContainer 컨테이너가 하나 있습니다. EpisodeContainer 의 하위 요소는 EpisodeList 및 EpisodeItem (손자)입니다.
사용자는 EpisodeItem 에서 에피소드를 보고 라인업에 특정 에피소드를 추가할 수 있습니다.
사용자 입력을 기반으로 TVmaze API에서 프로그램 정보를 가져오고 표시하는 일을 담당합니다. Search Redux 상태에는 results (검색 결과) 및 isFetching (부울)이 포함됩니다. 컨테이너는 하위 항목( SearchResults )과 하위 항목( SearchItem )이 있는 SearchContainer 입니다.
사용자는 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 의 상위 항목입니다. 사용자는 지정된 시간(주, 월, 연도, 항상)을 기준으로 결과를 필터링할 수도 있습니다.
Flatiron School의 반 친구들은 항상 최고이고 도움이 많이 되므로 감사합니다! 또한 항상 내 작업에 놀라운 두 번째 눈이 되어준 강사 Johann Kerr, Lindsey Wells 및 Andrew Cohn에게도 감사드립니다.