ankittkamal / NetflixGPT

Netflix Clone Project with integrating OpenAI GPT search functionality for unique movie Recommendations.

Home Page:https://netflix-gpt-nine.vercel.app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NetflixGPT

  • Netflix Clone Project with integrating OpenAI GPT search functionality for unique movie Recommendations.

Technologies Used

  • Front-end: React Redux Tailwind CSS JavaScript React Router
  • User Authentication: Firebase
  • API used : The Movie Database[TMDB] OpenAI platform GPT API

Screenshot

  • Sign Up / Sign In Page. signUpPage signInPage

  • Browse Page with GPT Search button, sign out functionality, video trailer streaming on background and movies section. BrowsePage

  • Browse Page with TMDB Movie Result Section BrowsePageMovieSection

  • GPT Search Page with Multi-language Feature in Search. GptSearchPage

  • Movie Result from GPT search functionality. GptSearchPageResult


Setup the project

  1. Fork the project
  2. Clone project using git clone + projectURL
  3. Install dependencies npm install
  4. In the root directory create a .env file and add the TMDB API KEY and OPENAI API KEY into it.

Example:

REACT_APP_OPENAI_KEY=sk-aasdadfsdfasdas234c

REACT_APP_TMDB_API_KEY=eyJhbGciOiJIUsdvsa4.eyJhdWQiOiI1ODA0MjM5sacmVhZCJdLCJ2ZXJzaW9uIjoxfQ.5igOnTktDvXLZDPKIkIsdvsadvafv
  1. Create a firebase project for web and enable Email/Password Authentication.

  2. Inside utils folder -> edit the firebase.js file with your firebase config and also add export const auth = getAuth(); in the file.

  3. To run the server execute npm start


Project Idea Overview

  • Login/Sign Up [Firebase User Authentication]

    • Sign In /Sign up Form
    • Redirect to Browse Page
  • Browse Page (after authentication)

    • Header
    • Main Movie
      • Tailer in Background
      • Title & Description
      • MovieSuggestions
        • MovieLists * N
  • NetflixGPT

    • Search Bar
    • Movie Suggestions

NetflixGPT Project Flow and Completed Task

  • Create React App.
  • Configured TailwindCSS.
  • Header.
  • Routing of App.
  • Login Form.
  • Sign up form.
  • Form Validation.
  • useRef Hook.
  • Firebase Setup.
  • Deployed our app to production.
  • Create SignUp user account.
  • Implement Sign In user API.
  • Created Redux Store with userSlice.
  • Implemented Sign out.
  • Update Profile
  • BugFix: Signup user display and profile picture update
  • BugFix: If the user is not logged in redirect /browse to login page and vice versa
  • UnSubscribed to the on onAuthStateChanged callback
  • Add hardcoded values to the constant file
  • Regiter TMDB API & create an app & get access token
  • Get Data from TMDB now playing movies list API
  • Custom Hook for Now Playing Movies
  • Create movieSlice
  • Update Store with movies Data
  • Planning for MainContauiner & secondary container
  • Fetch Data for Trailer Video
  • Update Store with Trailer Video Data
  • Embedded the Yotube video and make it autoplay and mute
  • Tailwind Classes to make Main Container look awesome
  • Build Secondary Container.
  • Build Movie List
  • build Movie Card
  • TMDB Image CDN URL
  • Made the Browsre page amazing with Tailwind CSS
  • usePopularMovies Custom hook
  • Get Open AI Api Key
  • (BONUS) Multi-language Feature in our App
  • GPT Search Page
  • GPT Search Bar
  • Gpt Search API Call
  • fetched gptMoviesSuggestions from TMDB
  • created gptSlice added data
  • Resused Movie List component to make movie suggestion container
  • Memoization - Memoization is used to optimize the performance of functions by caching the results of expensive function calls and reusing those results when the same inputs occur again.
  • Added .env file
  • Adding .env file to gitignore
  • Made our Site Responsive.
  • FIX: rectified the GptSearchPage data layer and clear the GptSearchPage when you click the GPT search button

About

Netflix Clone Project with integrating OpenAI GPT search functionality for unique movie Recommendations.

https://netflix-gpt-nine.vercel.app


Languages

Language:JavaScript 94.7%Language:HTML 5.1%Language:CSS 0.2%