Backend Ruby on Rails dengan frontend React/Redux. Pengguna dapat menyimpan acara favorit mereka dan menambahkan episode ke daftar acara mereka. Mereka dapat melihat lineup mereka dalam format kalender untuk melihat kapan dan di mana acara TV mereka ditayangkan. Pengguna juga dapat melihat acara yang sedang tren dan paling banyak ditonton serta acara yang tayang perdana pada minggu itu. Proyek ini dibuat secara independen oleh saya, Matthew Thorry, sebagai aplikasi terakhir saya di Flatiron School untuk Program Immersive Rekayasa Perangkat Lunak mereka.
Saya membuat backend aplikasi saya menggunakan Ruby on Rails. Saya menggunakan dua API berbeda untuk mendapatkan data TV: API trakt.tv dan API TVmaze dan permintaan pengambilan dilakukan dari backend. Modelnya adalah User , Show , Episode , UserShow , UserEpisode . Seorang User dapat memiliki banyak acara, dan banyak episode melalui acara. Mereka juga dapat memiliki banyak user_shows dan user_episodes (untuk rating, dll). Semua model memerlukan pengontrol karena tindakan CRUD tersedia untuk semua model.
Frontend dibuat menggunakan React dan Redux. Ini memiliki lebih dari dua lusin komponen dengan empat reduksi (acara, episode, pencarian, ekstra) yang mewakili empat wadah utama aplikasi.
Bertanggung jawab untuk mengambil dan menampilkan informasi acara dari API dan backend. Status Tampilkan Redux mencakup myShows (acara yang disimpan pengguna), onTonight (acara hari ini dari API), premieres (acara yang tayang perdana minggu ini dari API), dan isFetching (boolean). Kontainer utama untuk pertunjukan adalah ShowContainer , PremieresContainer dan ShowCalendar .
Anak ShowContainer adalah ShowList dan ShowItem (cucu); anak-anak lainnya adalah ShowPage dengan saudara kandung SuggestedList .
PremieresContainer dan ShowCalendar tidak memiliki turunan tetapi merupakan container karena keduanya bertanggung jawab atas beberapa tugas termasuk mengambil acara atau episode dan menambahkan/menghapus item yang disimpan pengguna.
Bertanggung jawab untuk mengambil dan menampilkan informasi episode dari API dan backend. Status Episode Redux mencakup myLineup (episode yang disimpan pengguna), showEpisodes (episode untuk acara tertentu, diambil dari TVmaze API), dan isFetching (boolean). Ada satu wadah, EpisodeContainer . Anak EpisodeContainer adalah EpisodeList dan EpisodeItem (cucu).
Pengguna dapat melihat episode dan menambahkan episode tertentu ke daftar mereka dari EpisodeItem .
Bertanggung jawab untuk mengambil dan menampilkan informasi acara dari TVmaze API berdasarkan masukan pengguna. Status Search Redux mencakup results (hasil pencarian) dan isFetching (boolean). Wadahnya adalah SearchContainer yang memiliki anak ( SearchResults ) dan cucu ( SearchItem ).
Pengguna dapat menyimpan acara dari SearchResults melalui tombol di SearchItem .
Bertanggung jawab untuk mengambil dan menampilkan informasi tambahan dari API trakt.tv. Status Extras Redux mencakup trending (episode yang popularitasnya telah berubah pada hari terakhir), watching (acara yang memiliki pemirsa terbanyak), ratings (array acara_pengguna pengguna yang menyertakan peringkat) dan isFetching (boolean). Ekstra mencakup tiga kontainer: DashboardContainer , TrendingContainer dan MostWatchedContainer .
DashboardContainer mengelola halaman arahan setelah login. Ia memiliki dua anak, DashboardLineupList dan DashboardOnTonightList , yang masing-masing memiliki anak, DashboardLineupItem dan DashboardOnTonightItem . DashboardLineupList menampilkan episode dalam daftar pengguna yang ditayangkan pada hari ini. DashboardOnTonightList menampilkan episode yang tidak termasuk dalam daftar pengguna tetapi ditayangkan hari ini dan berperingkat tinggi.
TrendingContainer memanggil API trakt.tv untuk mendapatkan acara tren terbaru dan merupakan induk dari TrendingItem yang menampilkan setiap hasil kueri.
MostWatchedContainer memanggil API trakt.tv untuk mendapatkan acara yang paling banyak ditonton dan merupakan induk dari MostWatchedItem yang menampilkan setiap hasil kueri. Pengguna juga dapat memfilter hasil berdasarkan waktu tertentu (minggu, bulan, tahun, selamanya).
Teman-teman sekelasku di Sekolah Flatiron selalu yang terbaik dan paling membantu, jadi terima kasih! Juga terima kasih kepada instruktur saya Johann Kerr, Lindsey Wells dan Andrew Cohn karena selalu menjadi perhatian kedua yang luar biasa untuk pekerjaan saya.