A full-featured React movie discovery app โ trending, search, favorites, and rich movie details, all built on the TMDB API and styled with a custom brutalist design system.
๐ Live Site: movienest.vercel.app ย |ย ๐ป Source Code: github.com/anoopcodehack/movienest
MovieNest started as a way to learn how a real React project comes together โ from structuring components to shipping a live, usable product. It's grown into a fully API-driven movie browser with search, infinite scroll, a favorites system, and detailed movie pages with cast, trailers, and recommendations.
The focus was on:
- Building a real data layer on top of a public REST API (TMDB)
- Writing reusable, composable components
- Handling real-world UI states โ loading, empty, and error states
- Making layouts responsive across screen sizes
- Deploying a production build to Vercel
--
- ๐ฅ Trending, Popular, Top Rated & Upcoming movie rows on the home page
- โพ๏ธ Infinite scroll pagination on the Popular row
- ๐ Live search across TMDB's movie catalog
- โค๏ธ Favorites โ add/remove movies, persisted across the session
- ๐ฌ Movie details page with:
- Cast grid with photos and character names
- Embedded YouTube trailer (modal player)
- Genre tags and a styled rating badge
- "Similar Movies" recommendations
- ๐ฑ Fully responsive layout
| Technology | Usage |
|---|---|
| React (CRA) | UI framework |
| React Router | Client-side routing |
| TMDB API | Movie data, cast, videos |
| JavaScript ES6+ | App logic |
| HTML & CSS | Markup & custom design system |
| Vercel | Deployment |
src/
โโโ api/ # TMDB API layer
โ โโโ tmdb.js
โโโ components/ # Reusable UI components
โ โโโ Navbar.jsx
โ โโโ Footer.jsx
โ โโโ Loader.jsx
โ โโโ MovieCard.jsx
โ โโโ MovieRow.jsx
โ โโโ MovieSlider.jsx
โโโ pages/ # Page-level views
โ โโโ Home.jsx
โ โโโ Favorites.jsx
โ โโโ MovieDetails.jsx
โโโ utils/ # Helper functions
โโโ App.js # Root component
โโโ App.css # Global styles / design system
โโโ index.js # Entry point
# 1. Clone the repository
git clone https://github.com/anoopcodehack/movienest.git
# 2. Install dependencies
npm install
# 3. Add your TMDB API key
# Create a .env file in the root:
# REACT_APP_TMDB_API_KEY=your_key_here
# 4. Start the app
npm startApp runs at
http://localhost:3000
Get a free API key at themoviedb.org/settings/api
- Genre-based browsing and filtering
- Sync favorites to a backend (MongoDB + JWT auth)
- Skeleton loading states
- Unit tests with React Testing Library
- PWA support for offline access