Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/belovetech/cineverse
Distributed movie ticketing system with microservices for authentication, movie management, ticket booking, and notifications.
https://github.com/belovetech/cineverse
expressjs mongodb mongoose nodejs postgresql rabbitmq sequelizer typescript
Last synced: about 1 month ago
JSON representation
Distributed movie ticketing system with microservices for authentication, movie management, ticket booking, and notifications.
- Host: GitHub
- URL: https://github.com/belovetech/cineverse
- Owner: belovetech
- Created: 2023-06-18T09:55:35.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-09-26T10:07:43.000Z (about 1 year ago)
- Last Synced: 2023-09-26T11:46:27.581Z (about 1 year ago)
- Topics: expressjs, mongodb, mongoose, nodejs, postgresql, rabbitmq, sequelizer, typescript
- Language: TypeScript
- Homepage:
- Size: 4.45 MB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# Distributed Movie Ticketing System
The Distributed Movie Ticketing System is a distributed application that allows users to browse and book movie tickets. It is divided into several microservices to handle specific functionalities.
![DESIGN](/images/movie-ticketing-system-design.jpeg)
#### The system consists of the following services:
1. **Authentication Service**: Responsible for user authentication, signup, signin, password management, and user session management.
2. **Movie Service**: Handles movie-related functionalities, including movie listing, movie details retrieval, and movie search.
3. **Ticket Service**: Manages ticket booking and reservation, seat selection, and ticket cancellation.
4. **Notification Service**: Provides notification capabilities, such as sending booking confirmations and updates to users via email or SMS.
### Features
- **Authentication Service:**
- **User Signup:** Customers can create new accounts by providing their personal details.
- **User Signin:** Registered customers can sign in to access their accounts.
- **Password Management:** Customers can reset and update their passwords securely.
- **User Session Management:** Maintains user sessions and ensures secure access to protected resources.- **Movie Service:**
- **Movie Listing:** Displays a list of available movies, including details such as title, genre, duration, and rating.
- **Movie Details:** Provides detailed information about a specific movie, including cast, synopsis, and showtimes.
- **Movie Search:** Allows users to search for movies based on various criteria, such as title, genre, or release year.- **Ticket Service:**
- **Ticket Booking:** Enables users to book movie tickets, select seats, and make payments.
- **Ticket Cancellation:** Allows users to cancel their booked tickets and initiate refunds if applicable.
- **Seat Availability:** Provides real-time information about seat availability for a particular movie and showtime.- **Notification Service:**
- **Booking Confirmation:** Sends booking confirmations to users via email or SMS.
- **Update Notifications:** Sends updates, such as changes in showtime or seat availability, to users.### Getting Started
To get started with the Distributed Movie Ticketing System, follow the instructions provided in the respective README files for each service:
- Authentication Service: [Readme](https://github.com/belovetech/movie-ticketing-system/tree/main/auth_service)
- Movie Service: [Readme](https://github.com/belovetech/movie-ticketing-system/tree/main/movie_service)
- Ticket Service: [Readme](https://github.com/belovetech/movie-ticketing-system/tree/main/ticket_service)
- Notification Service: [Readme](https://github.com/belovetech/movie-ticketing-system/tree/main/notification_service)
Each service has its own set of dependencies and instructions for installation and configuration.### Technologies Used
- Typescript
- Node.js
- Express.js
- MongoDB (Mongoose)
- PostgreSQL (Sequelizer)
- RabbitMQ (Message Queue)
- JSON Web Tokens (JWT)
- bcrypt.js
- SMTP and SMS providers (for the Notification Service)## Installation
1. clone the repo
2. Use nx to run other operations### Running task with [Nx](https://nx.dev/reference/nx-json#)
Nx is used for smooth running of operations across the entire monorepo. These commands should be run from the root of the project.
```bash
npx nx# build shared library
npx nx build @cineverse/libs# start movie service
npx nx dev movie-service# run in parallel across all services
npx nx run-many --target=build --all# run specific service
npx nx run-many --target=build --projects=auth-service,movie-service# project graph visualization
npx nx graph
```### ERD
![ERD](/images/cineverse-ERD.jpg)
### Contributing
Contributions are welcome! If you encounter any issues or have suggestions for improvement, please open an issue or submit a pull request.
### Contact
For any inquiries or questions, please contact the project team at [email]([email protected])