A full-featured Netflix-inspired streaming web application built with React, Firebase, and the OMDb API. This isn't just another basic clone — it has real authentication, route protection, a full Netflix India-style landing page, cloud-synced watchlist in Firestore, live search, and a cinematic UI that actually feels like Netflix.
| Landing Page | Home Page |
|---|---|
![]() |
![]() |
| Browse / Search | Watchlist |
|---|---|
![]() |
![]() |
| Login Page |
|---|
![]() |
- Official Netflix India-Style Landing Page — featuring hero background, email sign-up CTA, "More reasons to join" feature cards with colorful vector icons, and an interactive FAQ accordion.
- Netflix-Style Login & Sign Up — sleek translucent centered card layout over cinematic background with validation and error alerts.
- Route Protection & Auth Guard — unauthenticated visitors are restricted to the landing/auth pages; protected routes (
/home,/browse,/watchlist) require signing in. - Netflix-Style Banner — full-screen hero with layered gradient vignettes, rating badge, match percentage, and working Play (trailer) + More Info buttons.
- Movie Rows — horizontally scrollable rows for Trending, Top Rated, Action, and Comedy categories with custom hidden scrollbars.
- Live Search — powered by the OMDb API, search movies/series in real-time with responsive grid results.
- Authentication — powered by Firebase Authentication (Email/Password).
- My List (Watchlist) — add and remove movies directly from modal, synced to Firestore per-user in real time.
- Movie Details Modal — click any movie to see high-res poster, rating, cast, runtime, plot overview, and quick trailer action.
- Netflix Splash Screen — authentic intro animation on initial page load.
- Interactive Navbar & Profile Dropdown — expandable search bar, quick category links, and account dropdown with sign-out.
- Responsive Design — pixel-perfect on mobile, tablet, and desktop screens.
| Layer | Technology |
|---|---|
| Frontend Framework | React 19 + Vite 8 |
| Styling | Tailwind CSS v4 (CSS-first configuration) |
| Authentication | Firebase Authentication |
| Database | Firebase Cloud Firestore |
| Movie Data (Home rows) | Local Curated Dataset |
| Live Movie Search | OMDb API |
| Routing | React Router DOM v7 |
src/
├── assets/ # SVGs, icons, Netflix logos, and avatars
├── components/
│ ├── Banner.jsx # Hero banner with Play + More Info & trailer
│ ├── MovieCard.jsx # Individual movie poster card
│ ├── MovieModal.jsx # Movie details popup + watchlist toggle
│ ├── MovieRow.jsx # Horizontal scrollable movie row
│ ├── Navbar.jsx # Top navigation bar with search & profile menu
│ ├── ProtectedRoute.jsx # Route guard for authenticated user access
│ ├── SkeletonCard.jsx # Loading shimmer placeholder cards
│ └── SplashScreen.jsx # Netflix intro animation
├── context/
│ └── AuthContext.jsx # Firebase auth state provider & useAuth hook
├── data/
│ └── movies.json # Curated movie data for home screen categories
├── pages/
│ ├── Browse.jsx # Search results & movie discovery page
│ ├── Home.jsx # Main dashboard with banner & category rows
│ ├── Landing.jsx # Netflix India-style guest landing page
│ ├── Login.jsx # Sign in page
│ ├── Signup.jsx # Registration page
│ └── Watchlist.jsx # User's saved movies (My List)
└── services/
├── firebase.js # Firebase app, Auth, and Firestore initialization
├── omdbApi.js # OMDb API fetchers & local data handlers
└── watchlistService.js # Firestore Watchlist CRUD operations
git clone https://github.com/vedant476/netflix-clone.git
cd netflix-clonenpm install- Go to Firebase Console and create a new project.
- Under Build → Authentication, enable Email/Password sign-in method.
- Under Build → Firestore Database, create a database (start in test mode).
- Go to Project Settings → Web App and copy your Firebase configuration.
Go to omdbapi.com and generate a free API key.
Create a .env file in the root directory:
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
VITE_FIREBASE_APP_ID=your_app_id
VITE_OMDB_API_KEY=your_omdb_api_keynpm run devOpen http://localhost:5173 in your browser.
users/
{userId}/
watchlist/
{imdbID}/
imdbID → string
Title → string
Year → string
Poster → string
imdbRating → string
Genre → string
Plot → string
addedAt → ISO date string
Deploy these security rules to ensure users can only read and write their own watchlist data:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId}/watchlist/{movieId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}
- Netflix India-style Landing page with FAQ accordion and reasons to join
- Netflix-style Login & Sign Up page UI
- Protected routes preventing unauthorized access
- Cloud Watchlist integration with Firestore
- Trailer auto-play in modal using YouTube embed
- Genre filtering on Browse page
- Continue Watching section with local progress
- Mobile touch gestures for horizontal carousel rows
Built by vedant476
This project is for educational and portfolio purposes only. Netflix name, branding, and all related assets are trademarks of Netflix, Inc. This project is not affiliated with or endorsed by Netflix.
Built using Keyboard and Mouse




