A stunning, modern movie discovery platform built with Next.js, TypeScript, Tailwind CSS, and powered by The Movie Database (TMDB) API. This project showcases advanced React patterns, smooth animations, and a beautiful user interface that would impress any client or recruiter.
- 🎬 Hero Section: Dynamic featured movies with smooth transitions
- 🔍 Advanced Search: Real-time movie search with debouncing
- 🏷️ Genre Filtering: Filter movies by genre with beautiful UI
- 📱 Responsive Design: Perfect on all devices
- 🌙 Dark/Light Theme: Seamless theme switching
- ⚡ Performance: Optimized with React Query caching
- 🎭 Movie Details: Comprehensive movie information with cast and crew
- 🎨 Smooth Animations: Framer Motion animations throughout
- ♿ Accessibility: WCAG compliant design
- 🚀 Modern Stack: Next.js 15, TypeScript, Tailwind CSS, shadcn/ui
- Framework: Next.js 15 with App Router
- Language: TypeScript
- Styling: Tailwind CSS
- UI Components: shadcn/ui
- Animations: Framer Motion
- Data Fetching: TanStack Query (React Query)
- API: The Movie Database (TMDB)
- Theme: next-themes
- Icons: Lucide React
- Node.js 18+
- Yarn (preferred) or npm
- TMDB API key
-
Clone the repository
git clone <your-repo-url> cd disney-movies
-
Install dependencies
yarn install
-
Set up environment variables
Create a
.env.localfile in the root directory and add your TMDB API key:TMDB_API_KEY=your_tmdb_api_key_here
Get your free API key from TMDB
Security Note: The API key is kept server-side only for security. It's not exposed to the client.
-
Run the development server
yarn dev
-
Open your browser Navigate to http://localhost:3000
- Modern Glassmorphism: Subtle glass effects and backdrop blur
- Smooth Animations: Carefully crafted micro-interactions
- Typography: Beautiful font hierarchy with Geist fonts
- Color System: Carefully designed color palette with dark/light themes
- Spacing: Consistent spacing system following design principles
- Image Optimization: Next.js Image component with lazy loading
- Code Splitting: Automatic code splitting with Next.js
- Caching: Intelligent data caching with React Query
- Bundle Size: Optimized bundle with tree shaking
- Keyboard Navigation: Full keyboard support
- Screen Readers: Proper ARIA labels and semantic HTML
- Color Contrast: WCAG AA compliant color ratios
- Focus Management: Clear focus indicators
├── app/ # Next.js App Router
│ ├── globals.css # Global styles and utilities
│ ├── layout.tsx # Root layout with providers
│ └── page.tsx # Home page
├── components/ # React components
│ ├── ui/ # shadcn/ui components
│ ├── navigation.tsx # Main navigation
│ ├── hero-section.tsx # Hero section with featured movies
│ ├── movie-grid.tsx # Movie grid with animations
│ └── movie-details-modal.tsx # Movie details modal
├── lib/ # Utilities and services
│ ├── types.ts # TypeScript type definitions
│ ├── tmdb.ts # TMDB API service
│ └── utils.ts # Utility functions
└── public/ # Static assets
- Responsive navigation with mobile menu
- Search functionality with real-time results
- Genre filtering with visual feedback
- Theme toggle with smooth transitions
- Auto-rotating featured movies
- Smooth image transitions
- Call-to-action buttons
- Progress indicators
- Responsive grid layout
- Hover effects and animations
- Lazy loading for performance
- Infinite scroll capability
- Comprehensive movie information
- Cast and crew details
- Production information
- Financial data display
- Push your code to GitHub
- Connect your repository to Vercel
- Add your environment variables in Vercel dashboard
- Deploy!
The app can be deployed to any platform that supports Next.js:
- Netlify
- Railway
- AWS Amplify
- DigitalOcean App Platform
- User Authentication: Add NextAuth.js for user accounts
- Favorites: Implement user favorites with local storage or database
- Reviews: Add user review system
- Recommendations: Implement ML-based recommendations
- Modify
app/globals.cssfor global styles - Update Tailwind config for custom colors/spacing
- Customize shadcn/ui components in
components/ui/
- Touch-friendly interface
- Optimized images for mobile
- Responsive typography
- Mobile-first design approach
This project is designed to showcase:
- Modern Development Practices: TypeScript, component architecture
- UI/UX Skills: Beautiful, accessible design
- Performance: Optimized loading and smooth animations
- Code Quality: Clean, maintainable code structure
- API Integration: Professional API service implementation
This project is open source and available under the MIT License.
Contributions are welcome! Please feel free to submit a Pull Request.
If you have any questions or need help, please open an issue or contact me directly.
Built with ❤️ for your portfolio