A modern, responsive streaming platform built with React, Vite, and Tailwind CSS, featuring Google OAuth authentication via Appwrite and real-time movie data from The Movie Database (TMDB) API.
- π Movie Streaming Interface - Netflix/Hotstar inspired UI with movie rows and hero sections
- π Google OAuth Authentication - Secure login with Appwrite integration
- π¬ Real-time Movie Data - Live data from The Movie Database (TMDB) API
- π± Responsive Design - Works perfectly on desktop, tablet, and mobile
- π¨ Modern UI/UX - Dark theme with smooth animations and hover effects
- β‘ Fast Performance - Built with Vite for lightning-fast development and builds
- π‘οΈ Error Handling - Comprehensive error boundaries and fallback UI
- π Loading States - Skeleton loaders and smooth transitions
View Live Demo (Add your deployment link here)
- Frontend: React 19.1.1, Vite 7.1.3
- Styling: Tailwind CSS 4.1.12
- Authentication: Appwrite 19.0.0 with Google OAuth
- API: The Movie Database (TMDB) API
- Icons: Lucide React
- Build Tool: Vite with HMR
- Node.js (v16 or higher)
- npm or yarn
- Appwrite account
- Google Cloud Console project (for OAuth)
- TMDB API key
git clone https://github.com/yourusername/hostar-clone.git
cd hostar-clonenpm installCreate a .env file in the root directory:
# Appwrite Configuration
VITE_APPWRITE_ENDPOINT=https://fra.cloud.appwrite.io/v1
VITE_APPWRITE_PROJECT_ID=your_project_id_here
# TMDB API Key (Optional - uses demo key if not provided)
VITE_TMDB_API_KEY=your_tmdb_api_key_here- Create an account at Appwrite Cloud
- Create a new project
- Enable Google OAuth in Authentication settings
- Set redirect URI:
https://fra.cloud.appwrite.io/v1/account/sessions/oauth2/callback/google/YOUR_PROJECT_ID - Copy your Project ID to the
.envfile
- Go to Google Cloud Console
- Create a new project or select existing
- Enable Google+ API
- Create OAuth 2.0 credentials
- Add authorized redirect URIs from Appwrite
- Copy Client ID and Secret to Appwrite
npm run devVisit http://localhost:5173 to see the application.
hostar-clone/
βββ public/
β βββ vite.svg
βββ src/
β βββ components/
β β βββ Banner.jsx # Hero section with movie showcase
β β βββ ErrorBoundary.jsx # Error handling component
β β βββ Header.jsx # Navigation with user authentication
β β βββ Main.jsx # Main movie showcase section
β β βββ MovieRow.jsx # Horizontal movie rows
β β βββ OAuthCallback.jsx # OAuth callback handler
β βββ contexts/
β β βββ AuthContext.jsx # Authentication context
β βββ lib/
β β βββ appwrite.js # Appwrite configuration
β βββ App.jsx # Main app component
β βββ main.jsx # App entry point
β βββ index.css # Global styles
βββ .env # Environment variables
βββ .gitignore # Git ignore rules
βββ package.json # Dependencies and scripts
βββ README.md # Project documentation
βββ SETUP.md # Detailed setup instructions
- Google OAuth integration via Appwrite
- Protected routes with automatic redirects
- User session management with persistent login
- Error handling for authentication failures
- TMDB API for real-time movie data
- Multiple movie categories (Now Playing, Popular, Top Rated)
- Responsive movie rows with horizontal scrolling
- Loading states and error fallbacks
- Dark theme matching streaming platforms
- Smooth animations and hover effects
- Responsive design for all screen sizes
- Loading skeletons for better UX
- Push your code to GitHub
- Connect your repository to Vercel
- Add environment variables in Vercel dashboard
- Deploy!
- Build the project:
npm run build - Deploy the
distfolder to Netlify - Add environment variables in Netlify dashboard
The app can be deployed to any static hosting service that supports SPA routing.
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
- The Movie Database (TMDB) for the movie data API
- Appwrite for authentication services
- Tailwind CSS for styling
- Lucide React for icons
- Vite for the build tool
If you have any questions or need help with setup, please open an issue on GitHub.
Made with β€οΈ by Rohit