A full-stack movie and TV show watchlist application built with the MERN stack (MongoDB, Express, React, Node.js).
- User Authentication - JWT-based authentication with secure password hashing
- Search Movies & TV Shows - Powered by TMDB API
- Personal Watchlist - Add, edit, delete items with ratings and thoughts
- Watched Status - Mark items as watched with confetti celebration
- Statistics Dashboard - View your watching statistics with animated counters
- Export Feature - Export your watchlist as JSON or CSV
- Dark/Light Theme - Toggle between themes
- Infinite Scroll - Smooth scrolling experience
- Responsive Design - Works on desktop and mobile
- React 19
- React Router DOM
- Tailwind CSS
- Axios
- Canvas Confetti
- Node.js
- Express
- MongoDB with Mongoose
- JWT for authentication
- bcryptjs for password hashing
- Node.js (v16+)
- MongoDB (local or Atlas)
- TMDB API Key
git clone https://github.com/rdvankck/Watchlist.git
cd Watchlistcd backend
npm installCreate a .env file in the backend folder:
PORT=5001
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
TMDB_API_KEY=your_tmdb_api_key
Start the backend:
npm run devcd frontend
npm installCreate a .env file in the frontend folder:
VITE_TMDB_API_KEY=your_tmdb_api_key
Start the frontend:
npm run dev- Register a new account or login
- Search for movies and TV shows
- Add items to your watchlist
- Mark items as watched, add ratings and thoughts
- View your statistics on the Stats page
- Export your watchlist as JSON or CSV
Watchlist/
├── backend/
│ ├── config/
│ ├── controllers/
│ ├── middleware/
│ ├── models/
│ ├── routes/
│ ├── services/
│ └── server.js
├── frontend/
│ ├── src/
│ │ ├── api/
│ │ ├── components/
│ │ ├── context/
│ │ ├── hooks/
│ │ ├── pages/
│ │ └── App.jsx
│ └── public/
├── progress.md
└── README.md
The application features a modern dark theme with gradient backgrounds, glassmorphism effects, and smooth animations.
POST /api/auth/register- Register new userPOST /api/auth/login- Login user
GET /api/watchlist- Get user's watchlistPOST /api/watchlist- Add item to watchlistPUT /api/watchlist/:id- Update watchlist itemDELETE /api/watchlist/:id- Delete watchlist item
GET /api/tmdb/search- Search movies and TV shows
MIT