A modern movie & TV show discovery app powered by TMDB API.
MediaHub lets you discover trending movies, TV shows, trailers, and reviews with a Pinterest-style dynamic layout, infinite scroll, and shimmer loading effects for a smooth and premium experience.
- 🔒 Authentication using Firebase - User validation and authentication
- 🎬 Movies & TV Shows List - Discover trending, top-rated, and upcoming content.
- 🗂️ Redux store - Centralized state management for better scalability
- ⚡ API Caching — Optimized performance with cached API responses.
- 🖼 Pinterest-style Reviews - Dynamic masonry layout with auto-adjusting heights.
- 🔍 Smart Search - Instantly search movies & TV shows with debounced queries, enhanced with OpenAI for intelligent suggestions.
- 🎥 Trailers with Fallback - Plays trailers with a default video on error.
- ✨ Shimmer Loading - Beautiful skeleton loaders for smooth UI transitions.
- 🌀 Infinite Scrolling - Seamless content loading as you scroll.
- 📱 Responsive Design - Optimized for mobile, tablet, and desktop.
| Technology | Purpose |
|---|---|
| React 19+ | Frontend framework |
| Redux | Store Management |
| Tailwind CSS | Styling & responsive design |
| TMDB API | Movies & TV data source |
| OPENAI API | Movies & TV search suggestions |
| TypeScript | Type safety & better DX |
| Framer Motion | Animations & smooth transitions |
-
Create a firebase project authentication at firebase console and add firebaseConfig's in
.envfile -
Create a TMDB API key to access TMDB api's.
-
Below is the snapshot of how
.envfile will look likeVITE_REACT_APP_FIREBASE_API_KEY= VITE_REACT_APP_FIREBASE_AUTH_DOMAIN= VITE_REACT_APP_FIREBASE_PROJECT_ID= VITE_REACT_APP_FIREBASE_STORAGE_BUCKET= VITE_REACT_APP_FIREBASE_MESSAGING_SENDER_ID= VITE_REACT_APP_FIREBASE_APP_ID= VITE_REACT_APP_MEASUREMENT_ID= VITE_REACT_APP_TMDB_API_READ_ACCESS_TOKEN=
-
Run below commands:
git clone https://github.com/yourusername/mediahub.git cd mediahub npm install npm run dev
- Add the .env secrets to the github CI pipeline.
- Go to your
GitHub repo → Settings → Secrets and variables → Actions. - Add secrets like:
- VITE_REACT_APP_FIREBASE_API_KEY
- VITE_REACT_APP_TMDB_API_READ_ACCESS_TOKEN
- VITE_REACT_APP_OPENAI_API_KEY
This project integrates a few external APIs to deliver its features:
- TMDB API 🎬 — movies & TV data
- Firebase 🔐 — authentication & hosting
- OpenAI API 🤖 — AI-powered search suggestions
While these services are powerful, they come with limits:
- TMDB enforces fair-use policies, so avoid excessive or redundant requests.
- OpenAI requests incur real costs 💳, so please use them thoughtfully.
- Firebase has hosting and authentication quotas that should be respected.
👉 In short: Enjoy experimenting, but please respect the APIs and use them responsibly.
Contributions, issues, and feature requests are welcome! Feel free to open a PR or create an issue if you’d like to improve this project.