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.
β¨ 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.
- Clone the Repository
git clone [repository URL]
cd [repository folder]
- Install Dependencies
npm install
- 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.
- Install Material-UI and Icons
Install Material-UI:
npm install @mui/material @emotion/react @emotion/styled
npm install @mui/icons-material
- Start the Development Server
npm start
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".
Public Routes
/login - Login page for users.
/signup - Signup page for new users.
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.
π 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.