The Movie Recommendation System is a platform designed to enhance the user experience by offering personalized movie recommendations, user forums, and detailed movie information. This project enables users to explore trending movies, create watchlists, review films, and interact with others through forums.
- Authentication: Users can register, log in, and update their profiles.
- Personalized Recommendations: Users receive movie recommendations based on preferences like genre, actors, and directors.
- Watchlists: Create and manage custom movie lists.
- Wishlist: Add movies to a personal wishlist for future reference.
- View detailed movie information, including cast, crew, and ratings.
- Search and filter movies by title, genre, release year, and IMDb rating.
- Browse top-rated movies, trending titles, and genre-specific recommendations.
- Submit and manage reviews for movies.
- Like and dislike reviews.
- View movie ratings and contribute your own.
- Engage in discussions about movies in community forums.
- Create posts, comment, and upvote/downvote contributions.
- Join and leave forums as per interest.
- Monitor platform activity with access to:
- Most liked posts and reviews.
- Forums with the most members or posts.
- Popular movies by IMDb rating.
- Manage user reports and platform moderation tasks.
hashir-ayaz-Movie-Recommendation-System/
├── controllers/ # Business logic for different modules
├── populateDB/ # Scripts and data for populating the database
├── services/ # Helper services like reminders
├── config/ # Configuration files (DB, Swagger)
├── routes/ # API routes
├── middleware/ # Middleware for error handling and authentication
├── models/ # Mongoose schemas for database collections
├── utils/ # Utility functions (auth, email, etc.)
├── app.js # Main Express application file
├── server.js # Server entry point
└── package.json # Project dependencies and metadata
- POST
/api/v1/auth/register: Register a new user. - POST
/api/v1/auth/login: Log in a user.
- GET
/api/v1/movies: Fetch movies with optional filters. - POST
/api/v1/movies: Add a new movie (Admin). - PUT
/api/v1/movies/:id: Update movie details (Admin). - DELETE
/api/v1/movies/:id: Delete a movie (Admin).
- POST
/api/v1/movies/:id/reviews: Add a review for a movie. - GET
/api/v1/movies/:id/reviews: Get reviews for a movie. - POST
/api/v1/reviews/:id/like: Like a review.
- GET
/api/v1/forums: List all forums. - POST
/api/v1/forums: Create a new forum. - GET
/api/v1/forums/:id: View details of a specific forum.
- Framework: Node.js with Express.js
- Database: MongoDB
- Authentication: JWT-based
- API Documentation: Swagger
- Email Service: Nodemailer
- Node.js: Ensure Node.js is installed.
- MongoDB: A running MongoDB instance.
- Environment Variables: Set up a
.envfile with the following keys:MONGO_URI=<your-mongo-db-uri> JWT_SECRET=<your-jwt-secret> PORT=3000
- Clone the repository:
git clone <repository-url> cd hashir-ayaz-Movie-Recommendation-System
- Install dependencies:
npm install
- Start the server:
npm start
- Fork the repository.
- Create a feature branch:
git checkout -b feature-name
- Commit your changes and push:
git push origin feature-name
- Open a pull request.
This project is licensed under the MIT License.