🚀 Live Demo: https://hesflix.vercel.app
A modern web application for browsing movies and TV series with authentication and favorites system.
- Browse popular movies and TV series
- Curated Collections - Trending, Top Rated, Popular, Upcoming, Now Playing
- Search movies, TV shows, and actors
- Advanced filters (genres, ratings, sorting)
- Detailed information (ratings, trailers, cast, seasons & episodes)
- User authentication (Appwrite)
- ❤️ Favorites list for registered users
- Personal profile management
- Protected routes for authenticated users
- 🎭 Actor profiles and complete filmography
- 📽️ Trailers and videos
- 🎬 Full cast and crew credits
- 📺 TV show seasons and episodes
- ⭐ User ratings and reviews
- 📱 Fully responsive design
- ⚡ Server-side rendering (SSR) with Next.js 15
- 🔄 Suspense boundaries with loading states
- 🎯 SEO optimized with dynamic metadata
- 🚨 Comprehensive error handling
- Node.js 18+
- npm or yarn
- TMDB API key (Get it here)
- Appwrite account (Sign up)
- Clone the repository:
git clone <your-repo-url>
cd hesflix- Install dependencies:
npm install- Create
.env.localfile:
# TMDB API (server-side only)
API_KEY=your_tmdb_api_key
# Appwrite Configuration
NEXT_PUBLIC_APPWRITE_PROJECT_ID=your_project_id
NEXT_PUBLIC_DATABASE_ID=your_database_id
# Local URL
NEXT_PUBLIC_BASE_URL=http://localhost:3000- Run the development server:
npm run devnpm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLintSee APPWRITE_SETUP.md for detailed configuration.
Quick steps:
- Create project on cloud.appwrite.io
- Copy Project ID to
.env.local - Create database and
favoritestable - Configure permissions
vercelAdd environment variables in Vercel project settings.
- Update hostname in Appwrite Platform settings
- Add your production domain
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- State Management: Zustand
- Authentication: Appwrite
- API: The Movie Database (TMDB)
- Deployment: Vercel
- 10 curated collections (Trending, Top Rated, Popular, etc.)
- Scalable configuration in
constants/collections.ts - Easy to add new collections
- Dynamic metadata for all pages
- OpenGraph tags for social sharing
- Optimized meta descriptions
- Custom error boundaries for all routes
- User-friendly error messages
- Graceful fallbacks