A cross-platform Netflix clone built with React (Web), Android (Mobile), and Node.js (Backend).
Replicates core Netflix features: streaming, recommendations, user authentication, and more.
- Overview
- Features
- Technologies
- Screenshots
- Project Structure
- Getting Started
- API Documentation
- Contributing
- License
- Authors
- Support
Developed as a capstone project for an Advanced System Programming course, this Netflix Clone demonstrates the integration of multiple technologies into a full-stack streaming platform. The project emphasizes practical skills in system programming, client-server communication, and collaborative development.
- Frontend:
- React Web App: Delivers a dynamic and responsive UI for desktop users, closely mimicking the Netflix experience.
- Android Mobile App: Built using Android Studio (Java), the mobile client provides a native experience for Android devices, with custom layouts and optimized user flows for touch interfaces.
- Backend:
- Node.js and Express.js power the API server, handling authentication, recommendations, and data management.
- The backend server is designed to support multithreading, enabling efficient handling of concurrent requests and improved scalability.
- MongoDB Atlas enables scalable, cloud-hosted storage for movies, user profiles, and categories.
- Educational Focus:
- The project applies advanced system programming concepts such as networking, concurrency (including multithreaded server design), secure authentication, and API design.
- Development included collaboration, modular coding, and version control practices.
- Key Features:
- Real-time video streaming, personalized recommendations, secure user authentication, and an admin panel for content management.
- DevOps integration using Docker, Docker Compose, and CI/CD for streamlined deployment.
This Netflix Clone serves both as a technical showcase and a learning platform for mastering system programming and full-stack development in a real-world scenario.
- Frontend: React (Hooks, Context API)
- Mobile: Android (Java)
- Backend: Node.js, Express.js
- Database: MongoDB (Atlas)
- Auth: JWT (JSON Web Tokens)
- DevOps: Docker, Docker Compose
| Home Page | Register | Sign In | Logged In |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Search Page | Movie Page | Movie Player | Manager | Add Movie |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
| Home Page | Sign Up | Login | After Login |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Movie Details | Play Movie | Search | Management |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
/Server # Node.js Backend & API
/netflix-client # React Frontend
/AndroidApp # Android Mobile App
- Node.js & npm
- Docker & Docker Compose (optional)
- Android Studio
- MongoDB Atlas (already filled with sample data)
With Docker:
cd Server
docker-compose build
docker-compose up -d
docker-compose logs -fWithout Docker:
cd Server
# Terminal 1
cd server
npm install
NODE_ENV=local node app.js
# Terminal 2
cd tcpServer
make
./serverWith Docker:
cd netflix-client
docker build -t netflix-client .
docker run -p 4000:3000 netflix-clientWithout Docker:
cd netflix-client
npm install
npm start- Open
/AndroidAppin Android Studio. - Build & run on emulator or device.
- Hosted on MongoDB Atlas
- Pre-filled with users, movies, categories
- Admin user:
admin:123123
Base URL: http://foo.com/api/
| Endpoint | Method | Description |
|---|---|---|
/categories |
GET | List all categories |
/categories |
POST | Create a new category |
/categories/:id |
GET | Get category by ID |
/categories/:id |
PATCH | Update category |
/categories/:id |
DELETE | Delete category |
| Endpoint | Method | Description |
|---|---|---|
/movies |
GET | Get recommended movies by category |
/movies |
POST | Create a new movie |
/movies/:id |
GET | Get movie by ID |
/movies/:id |
PUT | Update movie |
/movies/:id |
DELETE | Delete movie |
/movies/:id/recommend |
GET | Get recommendations |
/movies/:id/recommend |
POST | Add movie to user |
/movies/search/:query |
GET | Search movies |
For questions, open an issue or contact us at idohaver7@gmail.com.
















