Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/adrijadastidar/movie-backend

Back-end file for movie
https://github.com/adrijadastidar/movie-backend

axois expressjs jwt-authentication mongodb neo4j nodejs razorpay-api

Last synced: 15 days ago
JSON representation

Back-end file for movie

Awesome Lists containing this project

README

        

---

### **🎬 All-in-One Movie Website - Backend**

---

## 📜 Table of Contents
- [Introduction](#introduction)
- [Features](#features)
- [Tech Stack](#tech-stack)
- [Installation](#installation)
- [Usage](#usage)
- [Database Schema](#database-schema)
- [Future Enhancements](#future-enhancements)
- [Contributing](#contributing)
- [Contact](#contact)

---

## 📝 Introduction
The **All-in-One Movie Website Backend** is a Node.js and Express.js application designed to power a comprehensive movie platform. It integrates multiple APIs and technologies to offer a rich user experience, including personalized movie recommendations using a graph database (Neo4j) and the TMDB API for movie data. The project also includes secure payment processing with Razorpay, enabling users to book movie tickets seamlessly.

---

## ✨ Features
- **User Authentication & Authorization**: Secure login and registration using JWT.
- **Movie Data from TMDB**: Fetches up-to-date movie information using the TMDB API.
- **Personalized Recommendations**: Uses a Knowledge Graph and Neo4j database to deliver personalized movie recommendations.
- **Movie Booking System**: Complete booking flow with seat selection and confirmation.
- **Payment Gateway**: Razorpay integration for secure and seamless payment processing.
- **Admin Panel**: Manage movies, bookings, and user data.
- **Review & Rating System**: Users can review and rate movies.
- **Error Handling & Logging**: Robust error handling and logging for easier debugging.

---

## 🛠️ Tech Stack
- **Backend Framework**: [Node.js](https://nodejs.org/), [Express.js](https://expressjs.com/)
- **Database**: [MongoDB](https://www.mongodb.com/) & [Neo4j](https://neo4j.com/) for graph-based recommendations
- **External APIs**: [TMDB API](https://developers.themoviedb.org/3/getting-started/introduction) for fetching movie data
- **Recommendations**: Knowledge Graphs using Neo4j and TMDB 1M dataset
- **Authentication**: [JWT (JSON Web Tokens)](https://jwt.io/)
- **Payment Integration**: [Razorpay](https://razorpay.com/)
- **Machine Learning**: knowledge- graph based for advanced recommendation algorithms

---

## 🛠️ Installation

### Prerequisites
- Node.js (>= 14.x)
- MongoDB (Local or Atlas)
- Neo4j (Local or Cloud)
- npm or yarn

### Step 1: Clone the Repository
```bash
git clone https://github.com/yourusername/all-in-one-movie-website-backend.git
cd all-in-one-movie-website-backend
```

### Step 2: Install Dependencies
```bash
npm install
```

### Step 3: Setup Environment Variables
Create a `.env` file in the root directory with the following:
```
PORT=5000
MONGO_URI=mongodb+srv://:@cluster.mongodb.net/movieDB
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your-neo4j-password
JWT_SECRET=your-jwt-secret
TMDB_API_KEY=your-tmdb-api-key
RAZORPAY_KEY_ID=your-razorpay-key-id
RAZORPAY_KEY_SECRET=your-razorpay-key-secret
```

### Step 4: Run the Server
```bash
npm start run
```
The server will start on `http://localhost:1000`.

---

## 🚀 Usage
- Ensure MongoDB and Neo4j are running.
- Use [Postman](https://www.postman.com/) or any API client to test the endpoints.
- For recommendations, ensure the Neo4j graph database is properly seeded with the TMDB 1M dataset.

---

## 🔮 Future Enhancements
- **Deep Learning-Based Recommendations**: Integrate TensorFlow for advanced neural network recommendations.
- **Social Features**: Allow users to follow each other and share recommendations.
- **Enhanced Payment Security**: Implement 3D Secure authentication for Razorpay payments.
- **Mobile Backend Support**: Build APIs for a mobile version using React Native.

---

## 🤝 Contributing
We welcome contributions from the community! If you'd like to contribute, follow these steps:
1. Fork the repository.
2. Create a new branch (`git checkout -b feature/your-feature-name`).
3. Commit your changes (`git commit -m 'Add new feature'`).
4. Push to the branch (`git push origin feature/your-feature-name`).
5. Open a Pull Request.

---

## 📧 Contact
For any questions or suggestions, feel free to reach out:
- **Adrija Dastidar** - [email protected]
- **GitHub**: [AdrijaDastidar](https://github.com/AdrijaDastidar)

---