A modern movie discovery app built with React, featuring advanced filtering, pagination, and real-time trending analytics powered by The Movie Database (TMDB) API and Appwrite.
- Smart Search: Debounced real-time search with optimized API calls
- Advanced Filtering: Filter by genre, release year, rating, and sort options
- Intelligent Pagination: Smooth navigation with smart scroll positioning
- Real-time Analytics: Dynamic trending section based on user search patterns
- Movie Details: Rich modals with cast, budget, and production information
- Responsive Design: Mobile-first approach with CSS Grid layouts
- Frontend: React 19, Vite, TailwindCSS
- Backend: Appwrite (real-time database)
- API: The Movie Database (TMDB)
- Utilities: react-use (debouncing)
- Node.js (18+)
- pnpm (recommended) or npm
- Clone the repository
git clone https://github.com/zg0ul/movlix.git
cd movlix- Install dependencies
pnpm install- Set up environment variables
cp .env.example .envAdd your API keys:
VITE_TMDB_API_KEY=your_tmdb_api_key
VITE_APPWRITE_PROJECT_ID=your_appwrite_project_id
VITE_APPWRITE_DATABASE_ID=your_database_id
VITE_APPWRITE_COLLECTION_ID=your_collection_id- Run the development server
pnpm devsrc/
├── components/ # Reusable UI components
│ ├── Filter.jsx # Filtering system
│ ├── MovieCard.jsx # Movie display component
│ ├── MovieModal.jsx # Detailed movie view
│ ├── Pagination.jsx # Navigation component
│ └── Search.jsx # Search functionality
├── app/ # Application logic
├── assets/ # Static assets
└── App.jsx # Main application component
Implements 500ms debouncing to reduce API calls by ~80% while maintaining responsive search experience.
Switches between TMDB's search and discover endpoints based on user input, applying filters intelligently.
Tracks search patterns using Appwrite to generate dynamic trending content based on user behavior.
- The Movie Database (TMDB) for providing the movie data API
- Appwrite for backend services
- Built as a learning project to explore modern React patterns
