الواجهة الخلفية لـ Ruby on Rails مع الواجهة الأمامية React/Redux. يمكن للمستخدمين حفظ برامجهم المفضلة وإضافة الحلقات إلى قائمتهم. يمكنهم عرض تشكيلتهم بتنسيق تقويم لمعرفة متى وأين يتم بث برامجهم التلفزيونية. يمكن للمستخدمين أيضًا مشاهدة العروض الشائعة والأكثر مشاهدة بالإضافة إلى العروض التي يتم عرضها لأول مرة في ذلك الأسبوع. تم إنشاء هذا المشروع بشكل مستقل بواسطتي، ماثيو ثوري، كتطبيقي الأخير في مدرسة فلاتيرون لبرنامجهم الشامل لهندسة البرمجيات.
لقد قمت بإنشاء الواجهة الخلفية لتطبيقي باستخدام Ruby on Rails. لقد استخدمت واجهتي برمجة تطبيقات مختلفتين للحصول على بيانات التلفزيون: واجهة برمجة تطبيقات trakt.tv وواجهة برمجة تطبيقات TVmaze، ويتم تنفيذ طلبات الجلب من الواجهة الخلفية. النماذج هي User
، Show
، Episode
، UserShow
، و UserEpisode
. يمكن User
الحصول على العديد من العروض والعديد من الحلقات من خلال العروض. يمكن أن تحتوي أيضًا على العديد user_shows
وحلقات user_episodes
(للتقييمات، وما إلى ذلك). تتطلب جميع الطرز وحدة تحكم حيث أن إجراءات CRUD متاحة لجميع الطرز.
تم إنشاء الواجهة الأمامية باستخدام React وRedux. يحتوي على أكثر من عشرين مكونًا مع أربعة مخفضات (عروض، حلقات، بحث، إضافات) تمثل الحاويات الأربع الرئيسية للتطبيق.
مسؤول عن جلب وعرض معلومات العرض من واجهات برمجة التطبيقات والواجهة الخلفية. تتضمن حالة Show Redux myShows
(العروض المحفوظة للمستخدم)، onTonight
(العروض اليوم من API)، premieres
(العروض الأولى هذا الأسبوع من API)، و isFetching
(منطقي). الحاويات الرئيسية للعروض هي ShowContainer
و PremieresContainer
و ShowCalendar
.
أطفال ShowContainer
هم ShowList
و ShowItem
(الحفيد)؛ الأطفال الآخرون هم ShowPage
مع SuggestedList
للأخوة.
PremieresContainer
و ShowCalendar
ليس لديهما أطفال ولكنهما عبارة عن حاويات لأنها مسؤولة عن مهام متعددة بما في ذلك جلب العروض أو الحلقات وإضافة/إزالة العناصر المحفوظة للمستخدم.
مسؤول عن جلب وعرض معلومات الحلقة من واجهات برمجة التطبيقات والواجهة الخلفية. تتضمن حالة الحلقة Redux myLineup
(الحلقات المحفوظة للمستخدم)، showEpisodes
(حلقات لعرض معين، مأخوذة من TVmaze API)، و isFetching
(منطقي). هناك حاوية واحدة، EpisodeContainer
. أطفال EpisodeContainer
هم EpisodeList
و EpisodeItem
(الحفيد).
يمكن للمستخدمين عرض الحلقات وإضافة حلقات محددة إلى قائمتهم من EpisodeItem
.
مسؤول عن جلب وعرض معلومات العرض من TVmaze API بناءً على إدخال المستخدم. تتضمن حالة Search Redux results
(نتائج البحث) و isFetching
(منطقية). الحاوية هي SearchContainer
التي تحتوي على فرع ( SearchResults
) وحفيد ( SearchItem
).
يمكن للمستخدمين حفظ العروض من SearchResults
عبر زر موجود في SearchItem
.
مسؤول عن جلب وعرض المعلومات الإضافية من واجهة برمجة تطبيقات trakt.tv. تشتمل حالة Extras Redux على trending
(الحلقات التي تغيرت شعبيتها في اليوم الأخير)، watching
(العروض التي تضم أكبر عدد من المشاهدين)، ratings
(مجموعة من عروض المستخدم الخاصة بالمستخدم والتي تتضمن التقييم) و isFetching
(منطقي). تشتمل الإضافات على ثلاث حاويات: DashboardContainer
و TrendingContainer
و MostWatchedContainer
.
تقوم DashboardContainer
بإدارة الصفحة المقصودة بعد تسجيل الدخول. يحتوي على فرعين، DashboardLineupList
و DashboardOnTonightList
، ولكل منهما عنصر فرعي، DashboardLineupItem
و DashboardOnTonightItem
. يعرض DashboardLineupList
الحلقات في تشكيلة المستخدم التي يتم بثها في اليوم الحالي. يعرض DashboardOnTonightList
الحلقات غير الموجودة في قائمة المستخدم ولكنها يتم بثها اليوم وتحظى بتقييم عالٍ.
يستدعي TrendingContainer
واجهة برمجة التطبيقات trakt.tv للحصول على أحدث العروض الشائعة وهو الأصل لـ TrendingItem
الذي يعرض كل نتيجة للاستعلام.
تستدعي MostWatchedContainer
واجهة برمجة التطبيقات trakt.tv للحصول على العروض الأكثر مشاهدة وهي الأصل لـ MostWatchedItem
الذي يعرض كل نتيجة للاستعلام. يمكن للمستخدم أيضًا تصفية النتائج بناءً على أوقات محددة (الأسبوع، الشهر، السنة، دائمًا).
زملائي في مدرسة فلاتيرون هم دائمًا الأفضل والأكثر فائدة، لذا شكرًا لك! وأشكر أيضًا أساتذتي يوهان كير وليندسي ويلز وأندرو كوهن لكونهم دائمًا مجموعة ثانية رائعة من العيون لعملي.