A complete, fully functional, and responsive Movie Streaming Web App built with ReactJS and TailwindCSS. The app allows users to search for movies, view details, watch trailers, and manage their watchlist.
- Home Page: Displays trending movies, popular TV shows, and a featured hero banner
- Search: Search movies and TV shows with autocomplete functionality
- Movie Details: Comprehensive movie information with trailer and watch options
- Watchlist: Save and manage your favorite movies and TV shows
- Authentication: User registration and login with Firebase Auth
- Responsive Design: Mobile-first design optimized for all devices
- Dark Theme: Professional dark theme with yellow accent color (#eeba2c)
- Smooth Animations: Framer Motion powered transitions and hover effects
- Modern UI: Clean, production-ready interface with attention to detail
- Custom Video Player: Full-featured video player with controls
- Toast Notifications: User feedback for all interactions
- Mobile: Optimized for phones (< 768px)
- Tablet: Tablet-friendly layout (768px - 1024px)
- Desktop: Full desktop experience (> 1024px)
- Frontend: React 18, TypeScript, TailwindCSS
- Routing: React Router DOM
- State Management: React Context API
- Authentication: Firebase Auth
- Video Player: React Player
- Animations: Framer Motion
- Notifications: React Hot Toast
- Icons: Lucide React
- API: The Movie Database (TMDB)
- Node.js (version 16 or higher)
- npm or yarn package manager
git clone https://github.com/MauriceOmbewa/ZuruTV.git
cd ZuruTVnpm installCreate a .env.local file in the root directory and add your API keys:
# TMDB API Configuration
VITE_TMDB_API_KEY=your_tmdb_api_key_here
VITE_TMDB_BASE_URL=https://api.themoviedb.org/3
VITE_TMDB_IMAGE_BASE_URL=https://image.tmdb.org/t/p
# Firebase Configuration
VITE_FIREBASE_API_KEY=your_firebase_api_key_here
VITE_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain_here
VITE_FIREBASE_PROJECT_ID=your_firebase_project_id_here
VITE_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket_here
VITE_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id_here
VITE_FIREBASE_APP_ID=your_firebase_app_id_here- Go to The Movie Database (TMDB)
- Create an account and verify your email
- Go to Settings > API
- Create a new API key
- Copy the API key to your
.env.localfile
- Go to Firebase Console
- Create a new project
- Enable Authentication with Email/Password
- Go to Project Settings > General
- Add a web app and copy the configuration
- Add the configuration values to your
.env.localfile
npm run devThe application will be available at http://localhost:5173
src/
βββ components/
β βββ Header.jsx # Navigation header
β βββ MovieCard.jsx # Individual movie/TV show cards
β βββ VideoPlayer.jsx # Custom video player
β βββ TrailerModal.jsx # Modal for trailers
β βββ LoadingSpinner.jsx # Loading component
β βββ MovieGrid.jsx # Grid layout for movies
β βββ HeroBanner.jsx # Featured content banner
βββ pages/
β βββ Home.jsx # Home page
β βββ Search.jsx # Search page
β βββ MovieDetail.jsx # Movie/TV show details
β βββ Watchlist.jsx # User watchlist
β βββ Login.jsx # Login page
β βββ Register.jsx # Registration page
βββ context/
β βββ AuthContext.jsx # Authentication context
β βββ WatchlistContext.jsx # Watchlist management
βββ services/
β βββ firebase.js # Firebase configuration
β βββ tmdb.js # TMDB API service
βββ App.tsx # Main app component
βββ main.tsx # Entry point
βββ index.css # Global styles
The app uses a consistent dark theme with the following colors:
- Primary Accent: #eeba2c (Yellow)
- Background: #000000 (Black)
- Dark Gray 1: #161616
- Dark Gray 2: #212121
- Dark Gray 3: #262626
- Email/password registration and login
- Firebase Auth integration
- Protected routes for watchlist
- User session management
- Real-time data from TMDB API
- Trending movies and TV shows
- Search functionality with results
- Detailed movie information
- Trailer integration via YouTube
- Custom HTML5 video player
- Play/pause, volume, and fullscreen controls
- Responsive design
- Trailer modal overlay
- Progress tracking
- Add/remove movies and TV shows
- LocalStorage persistence per user
- Visual feedback for actions
- Empty state handling
- Mobile-first approach
- Breakpoints for mobile, tablet, and desktop
- Touch-friendly interactions
- Optimized images and loading
The app includes fallback mock data for demonstration purposes when API calls fail, ensuring the app remains functional even without API keys.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License.
- The Movie Database (TMDB) for movie data
- Firebase for authentication
- Lucide React for icons
- TailwindCSS for styling