This is an open-source clone of the popular streaming platform, Netflix. The project aims to replicate the core UI/UX and essential features of the original website, serving as an excellent demonstration of modern front-end development capabilities.
This project is built to fetch real movie and TV show data using the TMDB (The Movie Database) API, complete with seamless horizontal scrolling and dynamic routing. It also integrates Firebase for authentication and database management.
- π Authentication: User login and registration functionality via Firebase.
- π¬ Dynamic Data: Real-time data fetching using the TMDB API.
- π± Responsive Design: Fully responsive layout that looks great on all devices (mobile, tablet, desktop).
- π Search Functionality: Find your favorite movies and TV shows instantly.
- ποΈ My List: Save movies and shows to a personalized list.
- π¦ Routing: Fast client-side routing with Next.js (Home, Movies, Shows, My List, Search, etc.).
- π¨ Performance: Implementation of best practices for optimal loading speeds and SEO.
- Framework: Next.js
- Library: React.js
- Styling: CSS Modules / Vanilla CSS
- Backend/Auth: Firebase
- API: TMDB API
Follow these instructions to set up the project locally on your machine.
Ensure you have the following installed:
- Node.js (v16.x or newer)
- npm or yarn
-
Clone the repository:
git clone https://github.com/shihabcodes/netflix-clone.git cd netflix-clone -
Install dependencies:
npm install # or yarn install -
Set up Environment Variables: Create a
.env.localfile in the root directory and add your API keys:touch .env.local
Add the following content (replace with your actual key):
NEXT_PUBLIC_TMDB_API_KEY=your_tmdb_api_key_hereYou can get a free API key by signing up at TMDB.
-
Run the development server:
npm run dev # or yarn dev -
Open the app: Open http://localhost:3000 in your browser to view it.
netflix-clone/
βββ components/ # Reusable UI components (Navbar, MovieCards, Row, etc.)
βββ pages/ # Next.js page routing (index, login, search, my-list, etc.)
βββ styles/ # Global styles and CSS Modules
βββ lib/ # Helper functions and Firebase configuration
βββ public/ # Static assets (images, icons)
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
To contribute:
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests.
Distributed under the MIT License. See LICENSE for more information.
Show some β€οΈ by starring this repository!