Welcome to Netflix, an immersive and fully functional movie streaming application. This project leverages modern web technologies to provide a seamless and engaging user experience.
- React: A JavaScript library for building user interfaces.
- Redux: A state management library for JavaScript apps.
- Firebase: Platform for user authentication and database management.
- Tailwind CSS: A utility-first CSS framework for styling.
- TMDB API: Source of movie data.
- Gemini API: Provides movie data related to specific genres.
This Netflix project replicates the core features of the popular streaming service, providing users with an intuitive interface to browse, search, and watch movie trailers. It incorporates advanced user authentication, dynamic content fetching, and state management to create a robust and scalable application.
- User Authentication π: The application includes a sign-in and sign-out page powered by Google Firebase. This ensures secure and reliable user authentication. Each user's credentials are stored using Firebase, providing persistent authentication across sessions.
- Protected Routes π‘οΈ: Implementing route protection ensures that authenticated users cannot access the login page again until they sign out. Similarly, non-authenticated users cannot access the main browsing features of the app.
- Dynamic Content Fetching π‘: The application fetches movie data dynamically from the TMDB API. This includes a featured movie trailer at the top of the browsing page, which is embedded using the YouTube API. The trailer's description and name are also sourced from the TMDB API.
- Movie Categories π₯: Below the featured trailer, the app displays various categories of movies and TV shows. These categories include popular movies, now-playing movies, and top-rated movies. Custom hooks are used to fetch data for each category, ensuring efficient and reusable code.
- Genre-Based Search π: An integrated search function allows users to find movies by genre or name. This feature utilizes the TMDB API for general searches and the Gemini API for genre-specific searches, providing comprehensive and relevant results.
- State Management π: Redux Toolkit is used to manage the state of the application. This includes storing user information, movie data, and search results, ensuring a smooth and consistent user experience.
- Description: This component handles user authentication. It includes forms for sign-in and sign-up, both integrated with Firebase.
- Purpose: Securely manages user login and registration, protecting routes based on authentication status.
- Description: This component is the main interface for browsing movies. It features a movie trailer section, multiple categories of movies and TV shows, and a search bar for finding movies by name or genre.
- Purpose: Provides a dynamic and engaging interface for users to explore and search for movies.
Here are some screenshots of the application across different screens and functionalities:
To set up the project locally, follow these steps:
-
Clone the repository:
git clone https://github.com/Ankit-Kum-ar/netflix.git
-
Navigate to the project directory:
cd netflix
-
Install the dependencies:
npm install
-
Create a
.env
file with your Firebase and API credentials:REACT_APP_FIREBASE_API_KEY=your_firebase_api_key REACT_APP_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain REACT_APP_FIREBASE_PROJECT_ID=your_firebase_project_id REACT_APP_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket REACT_APP_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id REACT_APP_FIREBASE_APP_ID=your_firebase_app_id REACT_APP_TMDB_API_KEY=your_tmdb_api_key REACT_APP_GEMINI_API_KEY=your_gemini_api_key
-
Start the development server:
npm start
- Open your browser and navigate to
http://localhost:3000
. - Sign in using your Google account.
- Browse movies, search by genre, and enjoy the seamless streaming experience.
We welcome contributions to enhance Netflix! To contribute, please follow these steps:
- Fork the repository.
- Create a new branch (
git checkout -b feature/your-feature-name
). - Commit your changes (
git commit -m 'Add some feature'
). - Push to the branch (
git push origin feature/your-feature-name
). - Open a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.
Thank you for checking out Netflix! I hope you enjoy using it as much as I enjoyed building it. ππΏ