A full-stack MERN application for personalized movie, series, and anime recommendations. Create and share your favorite lists with the world!
- Secure user registration and login with JWT tokens
- Password hashing with bcrypt
- New Dashboard-based UI with intuitive sidebar navigation
- After login, users are taken directly to their personalized dashboard
- Upload and manage profile pictures with drag & drop
- Edit personal information (name, username, bio)
- Change passwords securely
- Enhanced Favorite Media Management - organize movies, series, and anime separately
- Username availability checking in real-time
- OMDB API Integration for comprehensive movie and TV show data
- Real-time search with instant results
- High-quality posters and detailed metadata
- Genre-based categorization and IMDB ratings
- Intuitive List Management - create lists with public/private visibility
- Password-protected Private Lists for exclusive sharing
- Visual Media Cards with posters, ratings, and genre tags
- Smooth Add/Remove Flow with OMDB search integration
- Explore Public Lists created by other users
- View counts and engagement metrics
- Node.js - Runtime environment
- Express.js - Web framework
- MongoDB - Database
- Mongoose - ODM for MongoDB
- JWT - Authentication
- bcryptjs - Password hashing
- Multer - File uploads
- Express Validator - Input validation
- Helmet - Security middleware
- CORS - Cross-origin resource sharing
- React - UI library
- React Router - Client-side routing
- React Query - Data fetching and caching
- Tailwind CSS - Styling
- Lucide React - Icons
- React Hook Form - Form handling
- React Hot Toast - Notifications
- Axios - HTTP client
- OMDB API - Comprehensive movie, TV show, and anime data with high-quality images
BingeKaro/
βββ backend/ # Backend server
β βββ models/ # Database models
β βββ routes/ # API routes
β βββ middleware/ # Custom middleware
β βββ utils/ # Utility functions
β βββ uploads/ # File uploads
β βββ server.js # Main server file
βββ frontend/ # React application
β βββ src/
β β βββ components/ # Reusable components
β β βββ pages/ # Page components
β β βββ contexts/ # React contexts
β β βββ services/ # API services
β β βββ App.js # Main app component
β βββ public/ # Static files
βββ README.md # Project documentation
- Node.js (v16 or higher)
- MongoDB (local or Atlas)
- OMDB API key
-
Clone the repository
git clone <repository-url> cd BingeKaro
-
Install dependencies
# Install root dependencies npm install # Install backend dependencies cd backend npm install # Install frontend dependencies cd ../frontend npm install
-
Environment Setup
Create
.envfile in the backend directory:# Server Configuration PORT=5000 NODE_ENV=development # MongoDB Configuration MONGODB_URI=mongodb://localhost:27017/bingekaro # JWT Configuration JWT_SECRET=your_jwt_secret_key_here JWT_EXPIRE=7d # OMDB API Configuration OMDB_API_KEY=your_omdb_api_key_here OMDB_BASE_URL=http://www.omdbapi.com # File Upload Configuration MAX_FILE_SIZE=5242880 UPLOAD_PATH=./uploads # Rate Limiting RATE_LIMIT_WINDOW_MS=900000 RATE_LIMIT_MAX_REQUESTS=100
-
Get OMDB API Key
- Visit OMDB
- Create an account and request an API key
- Add the API key to your backend
.envfile
Create
.envfile in the frontend directory:# OMDB API Configuration REACT_APP_OMDB_API_KEY=your_omdb_api_key_here # Backend API URL (if different from default) REACT_APP_API_URL=http://localhost:5000/api
-
Start the application
# From the root directory npm run dev # Or start separately: # Backend (from backend directory) npm run dev # Frontend (from frontend directory) npm start
The application will be available at:
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
POST /api/auth/register- Register new userPOST /api/auth/login- Login userPOST /api/auth/logout- Logout userGET /api/auth/me- Get current user
GET /api/users/profile- Get user profilePUT /api/users/profile- Update profilePUT /api/users/password- Change passwordPOST /api/users/profile-picture- Upload profile pictureDELETE /api/users/profile-picture- Remove profile picture
GET /api/search- Search mediaGET /api/search/movies/:id- Get movie detailsGET /api/search/tv/:id- Get TV show detailsGET /api/search/popular/movies- Get popular moviesGET /api/search/popular/tv- Get popular TV showsGET /api/search/anime- Get anime
POST /api/recommendations- Create recommendation listGET /api/recommendations- Get user's listsGET /api/recommendations/public- Get public listsGET /api/recommendations/:id- Get list by IDPUT /api/recommendations/:id- Update listDELETE /api/recommendations/:id- Delete list
cd backend
npm run dev # Start with nodemoncd frontend
npm start # Start development serverThe application uses MongoDB. Make sure MongoDB is running locally or update the connection string in the .env file.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License.
- OMDB API for providing the movie and TV show data
- Lucide for the beautiful icons
- Tailwind CSS for the utility-first CSS framework
If you have any questions or need help, please open an issue on GitHub.
Made with β€οΈ for the movie and TV show community!