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 ESLint
To 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.ts
using@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