A beautiful and modern movie search application built with Next.js, TypeScript, and the OMDB API. This app allows users to search for movies, view detailed information, and rate their favorites.
- Movie Search: Search for movies by title with auto-complete and debounced API calls
- Actor Search: Search for actors by name and discover their filmography
- Movie Details: View detailed information including plot, cast, ratings, and more
- Actor Details: View actor information including biography, filmography, and genres
- User Ratings: Rate movies with a 5-star rating system (stored locally)
- Dark Mode: Toggle between light and dark themes with persistence
- Responsive Design: Works seamlessly on desktop, tablet, and mobile devices
/movies- Movie list page with search functionality/movies/[id]- Individual movie details page/actors- Actor search and discovery page/actors/[name]- Individual actor details page
- Modern and clean design inspired by popular movie platforms
- Smooth animations and transitions using Framer Motion
- Loading states and error handling
- Skeleton loading for better UX
- Beautiful gradient backgrounds and cards
- Framework: Next.js 15.3 with App Router
- Language: TypeScript
- State Management: Redux Toolkit
- Styling: Tailwind CSS
- Components: Custom UI components with shadcn/ui patterns
- Icons: Lucide React
- Animations: Framer Motion
- API: OMDB API for movie data
- Node.js (v18 or higher)
- npm or yarn
- Clone the repository:
git clone <repository-url>
cd movie-search- Install dependencies:
npm install- Start the development server:
npm run dev- Open http://localhost:3000 in your browser
- Navigate to the Movies page
- Use the search bar to enter a movie title
- Results will appear automatically as you type (debounced)
- Click on any movie card to view detailed information
- Navigate to the Actors page or use the search bar with "Actors Only" filter
- Search for actors by name or browse popular actors
- Click on any actor card to view their filmography
- Discover movies featuring your favorite actors
- Go to a movie's detail page
- Click on the stars to rate the movie (1-5 stars)
- Your rating will be saved locally and persist across sessions
- Use the toggle button in the header to switch between light and dark modes
- Your preference will be saved and applied on future visits
- Movie search with OMDB API integration
- Actor search with comprehensive actor database
- Movie listing page (
/movies) - Movie details page (
/movies/:id) - Actor listing page (
/actors) - Actor details page (
/actors/:name) - Debounced search functionality
- Star rating system with local storage
- Dark mode toggle with persistence
- Responsive design
- TypeScript implementation
- Redux Toolkit for state management
- Framer Motion animations
- Advanced loading and error states
- Beautiful modern UI design
- Proper image handling with fallbacks
- SEO-friendly structure
The app uses the OMDB API with the provided API key
src/
βββ app/ # Next.js app directory
β βββ movies/ # Movies pages
β β βββ [id]/ # Dynamic movie detail pages
β β βββ page.tsx # Movies listing page
β βββ globals.css # Global styles
β βββ layout.tsx # Root layout
β βββ page.tsx # Home page (redirects to /movies)
β βββ providers.tsx # Redux and theme providers
βββ components/ # React components
β βββ ui/ # Reusable UI components
β βββ DarkModeToggle.tsx
β βββ Header.tsx
β βββ MovieCard.tsx
β βββ MovieGrid.tsx
β βββ SearchBar.tsx
βββ hooks/ # Custom React hooks
βββ lib/ # Utility functions
βββ services/ # API services
βββ store/ # Redux store and slices
βββ types/ # TypeScript type definitions
- Redux Toolkit for global state management
- Local storage for user preferences (ratings, dark mode)
- Debounced search to optimize API calls
- Clean, modern design with consistent spacing and typography
- Card-based layout for movie listings
- Smooth transitions and hover effects
- Proper loading states and error handling
- Accessible color contrasts in both light and dark modes
- Image optimization with Next.js Image component
- Debounced search to reduce API calls
- Lazy loading and code splitting
- Efficient re-renders with proper React patterns
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLintTo enable the Gemini-powered multilingual chatbot, set the following environment variable in your environment (e.g., .env.local):
GOOGLE_API_KEY=your_google_generative_ai_key
You can obtain an API key by creating a project and enabling the Generative Language API in Google AI Studio.
- Appears site-wide as a floating button in the bottom-right corner
- Supports auto language detection or manual selection
- Helps with movie/actor search, recommendations, and app feature guidance
- Backend route:
src/app/api/chat/route.tsusing@google/generative-ai
- Add user authentication
- Implement watchlist functionality
- Add movie recommendations
- Include trailers and additional media
- Add advanced filtering options
- Implement movie comparison features
- Expand actor database with more performers
- Add actor awards and accolades information
- Implement actor collaboration networks
This project is licensed under the MIT License.
Built with β€οΈ using Next.js and the OMDB API