A fully responsive Netflix-inspired web application built with React, Vite, and Firebase Authentication, powered by the TMDB API.
This project focuses on clean UI, scalable architecture, and real-world production practices.
π Live Demo: Netflix Clone Live
π¦ Repository: react-netflix-firebase-clone
| Category | Feature |
|---|---|
| Authentication | Email & Password authentication using Firebase Auth |
| Authentication | Secure login, signup, and logout flows |
| Authentication | Auth state persistence across page refresh |
| Authentication | Automatic redirect based on authentication state |
| Movie & TV Content | Real-time movie and TV data fetched from TMDB API |
| Movie & TV Content | Categorized rows for trending, popular, upcoming, and top-rated content |
| Movie & TV Content | Netflix-style reusable content rows |
| Player & Media | Dedicated movie player page |
| Player & Media | Dynamic trailer fetching via TMDB Videos API |
| Player & Media | Embedded YouTube trailer playback |
| Routing & Navigation | Client-side routing using React Router |
| Routing & Navigation | Protected navigation flow for authenticated users |
| Routing & Navigation | Dynamic player routes using /player/:id |
| UI / UX | Netflix-inspired modern user interface |
| UI / UX | Hero banner with featured content |
| UI / UX | Fully responsive layout for desktop and mobile |
| UI / UX | Smooth hover effects and transitions |
| User Feedback | Toast notifications for authentication feedback |
| User Feedback | Visual loading spinner during auth operations |
| State & Async Handling | Centralized auth state handling with Firebase listeners |
| State & Async Handling | Loading state management during authentication |
| State & Async Handling | Graceful error handling for API requests |
| Performance & DX | Vite-powered fast builds and hot module replacement |
| Performance & DX | Lazy loading and optimized imports |
| Performance & DX | Environment-based configuration for API keys |
- React 18
- Vite
- React Router v6
- CSS Modules / Custom CSS
- Firebase Authentication
- TMDB API (movies & TV data)
- Vercel (production hosting)
- ESLint (code quality)
- Environment Variables (.env)
NETFLIX-CLONE
βββ node_modules/ # Installed dependencies (not committed)
βββ public/ # Static public assets
β βββ background_banner.jpg
β βββ netflix_favicon.ico
β β
βββ src/
β βββ assets/ # Images, icons, media assets
β β βββ cards/ # Movie card images & metadata
β β β βββ card1.jpg
β β β βββ card2.jpg
β β β βββ ...
β β β βββ card14.jpg
β β β βββ Cards_data.js # Card metadata (titles, images, ids)
β β βββ logo.svg
β β βββ hero.png
β β βββ ...
β β
β βββ components/ # Reusable UI components
β β βββ Navbar/
β β β βββ Navbar.jsx
β β β βββ Navbar.css
β β βββ Footer/
β β β βββ Footer.jsx
β β β βββ Footer.css
β β βββ TitleCards/
β β βββ TitleCards.jsx
β β βββ TitleCards.css
β β
β βββ pages/ # Route-level pages
β β βββ Home/
β β β βββ Home.jsx
β β β βββ Home.css
β β βββ Login/
β β β βββ Login.jsx
β β β βββ Login.css
β β βββ Player/
β β βββ Player.jsx
β β βββ Player.css
β β
β βββ config.js # Firebase initialization + TMDB config
β βββ firebaseAuth.js # Firebase Auth instance (singleton)
β βββ firebaseActions.js # Auth actions (signup, login, logout)
β βββ App.jsx # Routes & protected navigation
β βββ index.css # Global styles
β βββ main.jsx # React app entry point
β
βββ .env # Environment variables (not committed)
βββ .eslintrc.js # ESLint configuration
βββ .gitignore # Git ignore rules
βββ index.html # HTML entry file
βββ package.json # Dependencies & scripts
βββ package-lock.json # Dependency lock file
βββ vite.config.js # Vite configuration
βββ README.md # Project documentation
Create a .env file in the project root:
These variables are required for Firebase Authentication and TMDB API access.
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_TMDB_ACCESS_KEY=your_tmdb_access_keygit clone https://github.com/yourusername/react-netflix-firebase-clone.gitcd react-netflix-firebase-clone
npm installnpm run devApp will run at:
http://localhost:5173This project is deployed on Vercel.
- Framework: Vite
- Build Command:
npm run build - Output Directory:
dist
VITE_FIREBASE_API_KEYVITE_TMDB_ACCESS_KEY
Auth state persistence using onAuthStateChanged
config.js ββInitializes Firebase App (singleton)
firebaseAuth.js ββCreates Firebase Auth instance
firebaseActions.js ββHandles signup / login / logout
App.jsx ββControls routing via onAuthStateChangedThe authentication architecture follows a clean separation of responsibilities:
- No duplicate Firebase initialization
- Clean separation of concerns
- Production-safe architecture
This repository demonstrates:
- Real-world React project structure
- Secure Firebase authentication handling
- Proper environment variable management
- Scalable frontend architecture
- Clean, maintainable, portfolio-ready code
This is not a tutorial dump, but a production-style application. Built to reflect real-world frontend engineering practices.
Contributions are welcome.
- Fork the repository
- Create a new branch
- Make your changes
- Submit a Pull Request
This project is for educational and portfolio purposes only.
All Netflix branding, logos, and media content belong to their respective owners.
Sushant Shinde
Frontend Developer | React & UI Enthusiast
If you like this project, consider giving it a β