Skip to content

JacobDicksonOfficial/React-TMDB-Assignment

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

24 Commits
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“½οΈ Assignment 1 - ReactJS App

By: Jabez Dickson

View PDF

My Image

Overview

This repository contains the Movies Fan App, a modern ReactJS application integrated with the TMDB API. The app allows users to explore movies and TV shows, filter and sort content, view detailed information, and manage their favorite lists. It also includes features like third-party authentication (Google), dark mode, and a responsive UI.

Features

✨ Core Features

πŸ”‘ Third-Party Authentication: Secure Google login via Firebase.

πŸŒ™ Dark Mode Toggle: User-friendly dark mode integrated into the UI.

πŸ” Filtering Options: Filter movies and TV shows by name and genre across all pages.

πŸ“± Responsive UI: Built with Material-UI for a seamless experience across devices.

❀️ Favorite Movies: Add and manage favorite movies easily.

πŸ“œ Pagination: Infinite scrolling for large datasets.

πŸ“Š Parameterized Endpoints: Detailed views for movies and TV shows.

Setup Requirements

  1. Clone the Repository

git clone [repository URL]
cd [repository folder]

  1. Install Dependencies

npm install

  1. Set up Firebase

npm install firebase

Create a Firebase project at Firebase Console.
Configure Google Authentication in the Firebase project.
Replace placeholders in firebase.js with your Firebase credentials.

  1. Install Material-UI and Icons

Install Material-UI:

npm install @mui/material @emotion/react @emotion/styled
npm install @mui/icons-material

  1. Start the Development Server

npm start

API Endpoints

Static Endpoints

πŸŽ₯ Discover Movies: /discover/movie
πŸ“Ί Popular TV Shows: /tv/popular
⭐ Top-Rated Movies: /movie/top_rated
πŸ•’ Now Playing Movies: /movie/now_playing
🎭 Movie Genres: /genre/movie/list
πŸ“‚ TV Show Genres: /genre/tv/list

Parameterized Endpoints

🎬 Movie Details: /movie/:id
Example: /movie/550 - Retrieves details for "Fight Club".
πŸ“Ί TV Show Details: /tv/:id
Example: /tv/1399 - Retrieves details for "Game of Thrones".

πŸ“‘ Recommendations for Movies: /movie/:id/recommendations
Example: /movie/550/recommendations - Recommendations for "Fight Club".
πŸ“‘ Recommendations for TV Shows: /tv/:id/recommendations
Example: /tv/1399/recommendations - Recommendations for "Game of Thrones".

Routing

Public Routes
/login - Login page for users.
/signup - Signup page for new users.

My Image

Protected Routes

/ - Home page showcasing movie lists.
/movies/favorites - Displays the user's favorite movies.
/movies/:id - Shows detailed information about a specific movie.
/movies/top_rated - Explore top-rated movies.
/movies/now_playing - View movies currently playing in theaters.
/tv/popular - Explore popular TV shows.
/tv/:id - View detailed information about a specific TV show.

Independent Learning

πŸ”‘ Third-Party Authentication (Google):

Integrated using Firebase Authentication. Source Code: firebase.js, AuthContext.js, loginPage.js. Reference: Firebase Authentication Docs.

πŸŒ™ Dark Mode Toggle:

Developed using Material-UI themes and React Context API. Source Code: ThemeContext.js, SiteHeader/index.js. Reference: Material-UI Theme Customization.

⚑ React-Query Caching:

Enhanced performance with API request caching and state management. Source Code: topRatedPage.js, popularTVShowsPage.js. Reference: React Query Docs.

πŸŽ›οΈ FilterCard Component:

Added filtering options for movies and TV shows. Source Code: FilterCard.js, TVShowListPageTemplate.js. Reference: React Filtering Tutorial.

πŸ“± Responsive UI:

Ensured mobile-friendly design using Material-UI Grid. Source Code: SiteHeader/index.js, TVShowListPageTemplate.js. Reference: Material-UI Responsive Grid.

About

React Basics - An Open Source Web App | TMDB πŸŽ₯

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published