Vintage is a modern, responsive Movie & TV Show discovery web app that lets users search, explore, and manage their favorite entertainment content. Powered by TMDB and OMDB APIs, it offers a rich interface for discovering trending titles, browsing by genre, viewing detailed info, and curating a personal watchlist.
- Live Search: Instantly search for movies and TV shows with real-time results and debouncing.
- Detailed Info Pages: View plots, casts, ratings (IMDB, Rotten Tomatoes, TMDB), release dates, posters, and more.
- Watchlist Management: Add/remove titles, mark as watched, and persist your list in local storage.
- Trending Dashboard: Explore what's hot with popular and top-rated titles.
- Genre-Based Browsing: Filter and discover content by genre and category.
- Multi-Source Ratings: Integrates ratings and metadata from TMDB and OMDB.
- Smart Recommendations: Get suggestions based on your watchlist preferences.
- Responsive UI: Seamless experience across mobile, tablet, and desktop.
- Frontend: React / Next.js (Client-Side)
- API: TMDB API & OMDB API
- Storage:
localStoragefor user preferences and watchlist
- API response caching for performance boosts
- Graceful fallbacks for missing or incomplete data
- API error handling and loading skeletons
- Pagination support for all content lists
- API rate-limit handling
- Secure API key management via
.env.local
-
Clone the Repo
git clone https://github.com/<your-username>/vintage.git cd vintage
-
Install Dependencies
npm install
-
Set Up Environment Variables Create a
.env.localfile in the root directory with the following:NEXT_PUBLIC_TMDB_API_KEY=your_tmdb_api_key NEXT_PUBLIC_OMDB_API_KEY=your_omdb_api_key
-
Run the App
npm run dev
-
Open your browser at http://localhost:3000
Vintage can be deployed on platforms like Vercel, Netlify, or any static hosting service that supports Next.js.
- Use
localStoragefor persisting user watchlists across sessions - Handle API errors using
try/catchblocks and display user-friendly messages - Use
debounceon search input to minimize API calls - Normalize and validate data across TMDB and OMDB for consistency
Pull requests are welcome! For major changes, please open an issue first to discuss what you'd like to change.
- Fork the repo
- Create a new branch (
git checkout -b feature/your-feature) - Commit your changes (
git commit -m 'Add some feature') - Push to the branch (
git push origin feature/your-feature) - Open a pull request
This project is licensed under the MIT License — see the LICENSE file for details.