# yashu1905-bit/movie-booking-system architecture

> Architecture diagram of the GitHub repository yashu1905-bit/movie-booking-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-21). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/yashu1905-bit/movie-booking-system
- Repository: https://github.com/yashu1905-bit/movie-booking-system

## Overview

This is a movie-ticket booking platform with a React administrative dashboard and an Express/MongoDB backend. The principal workflow is an administrator or customer request entering the API, passing route and authorization middleware, reaching domain controllers and services, and producing catalog, show, booking, payment, notification, or configuration results backed by MongoDB. Authentication adds OTP email verification and JWT sessions. The sampled files clearly establish authentication, route mounting, notifications, settings, repositories, and dashboard composition; several domain links are represented at directory level because their individual sources were not sampled.

Main entry points: [`backend/src/routes`](https://github.com/yashu1905-bit/movie-booking-system/tree/main/backend/src/routes) (Route Modules), [`backend/src/repositories`](https://github.com/yashu1905-bit/movie-booking-system/tree/main/backend/src/repositories) (Domain Repositories), [`backend/src/controllers`](https://github.com/yashu1905-bit/movie-booking-system/tree/main/backend/src/controllers) (Domain Controllers), [`backend/src/services/AuthService.js`](https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/services/AuthService.js) (Auth Service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client Applications"]
  node_web_dashboard["Admin Dashboard<br/>[App.jsx]"]
  node_web_api["Web API Client<br/>[apiService.js]"]
end

subgraph group_api["API Orchestration"]
  node_express_api["Express API<br/>[app.js]"]
  node_route_modules["Route Modules"]
  node_auth_middleware["Auth Middleware<br/>[auth.js]"]
  node_auth_controller["Auth Controller<br/>[authController.js]"]
  node_domain_controllers["Domain Controllers"]
  node_notification_controller["Notification Controller"]
  node_settings_controller["Settings Controller"]
  node_analytics_routes["Analytics Routes<br/>[analytics.js]"]
end

subgraph group_services["Domain Services"]
  node_auth_service["Auth Service<br/>[AuthService.js]"]
  node_catalog_services["Catalog Services"]
  node_booking_service["Booking Service<br/>[BookingService.js]"]
  node_payment_service["Payment Service<br/>[PaymentService.js]"]
  node_discount_service["Discount Service<br/>[DiscountService.js]"]
  node_notification_service["Notification Service"]
  node_settings_service["Settings Service"]
  node_mail_service["Mail Service<br/>[MailService.js]"]
end

subgraph group_data["Persistence Layer"]
  node_repositories["Domain Repositories"]
  node_mongodb[("MongoDB<br/>[db.js]")]
end

subgraph group_integrations["External Integrations"]
  node_stripe["Stripe"]
  node_razorpay["Razorpay"]
  node_email_delivery["Email Delivery"]
  node_jwt_provider["JWT Provider"]
end

node_administrator(("Administrator"))
node_customer(("Customer"))

node_administrator -->|"uses"| node_web_dashboard
node_customer -->|"requests"| node_express_api
node_web_dashboard -->|"invokes"| node_web_api
node_web_api -->|"calls"| node_express_api
node_express_api -->|"mounts"| node_route_modules
node_route_modules -->|"dispatches"| node_auth_controller
node_route_modules -->|"dispatches"| node_domain_controllers
node_route_modules -->|"dispatches"| node_notification_controller
node_route_modules -->|"dispatches"| node_settings_controller
node_route_modules -->|"dispatches"| node_analytics_routes
node_route_modules -->|"applies"| node_auth_middleware
node_auth_middleware -->|"guards"| node_auth_controller
node_auth_controller -->|"calls"| node_auth_service
node_domain_controllers -->|"calls"| node_catalog_services
node_domain_controllers -->|"calls"| node_booking_service
node_domain_controllers -->|"calls"| node_payment_service
node_domain_controllers -->|"calls"| node_discount_service
node_domain_controllers -->|"notifies"| node_notification_service
node_notification_controller -->|"calls"| node_notification_service
node_settings_controller -->|"calls"| node_settings_service
node_auth_service -->|"reads/writes"| node_repositories
node_catalog_services -->|"reads/writes"| node_repositories
node_booking_service -->|"reads/writes"| node_repositories
node_payment_service -->|"reads/writes"| node_repositories
node_discount_service -->|"reads/writes"| node_repositories
node_notification_service -->|"reads/writes"| node_repositories
node_settings_service -->|"reads/writes"| node_repositories
node_repositories -->|"persists"| node_mongodb
node_auth_service -->|"sends OTP"| node_mail_service
node_mail_service -->|"delivers email"| node_email_delivery
node_auth_service -->|"signs tokens"| node_jwt_provider
node_payment_service -.->|"charges"| node_stripe
node_payment_service -.->|"creates orders"| node_razorpay

click node_web_dashboard "https://github.com/yashu1905-bit/movie-booking-system/blob/main/web/src/App.jsx"
click node_web_api "https://github.com/yashu1905-bit/movie-booking-system/blob/main/web/src/services/apiService.js"
click node_express_api "https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/app.js"
click node_route_modules "https://github.com/yashu1905-bit/movie-booking-system/tree/main/backend/src/routes"
click node_auth_middleware "https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/middleware/auth.js"
click node_auth_controller "https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/controllers/authController.js"
click node_domain_controllers "https://github.com/yashu1905-bit/movie-booking-system/tree/main/backend/src/controllers"
click node_notification_controller "https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/controllers/notificationController.js"
click node_settings_controller "https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/controllers/settingController.js"
click node_analytics_routes "https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/routes/analytics.js"
click node_auth_service "https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/services/AuthService.js"
click node_catalog_services "https://github.com/yashu1905-bit/movie-booking-system/tree/main/backend/src/services"
click node_booking_service "https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/services/BookingService.js"
click node_payment_service "https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/services/PaymentService.js"
click node_discount_service "https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/services/DiscountService.js"
click node_notification_service "https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/services/NotificationService.js"
click node_settings_service "https://github.com/yashu1905-bit/movie-booking-system/tree/main/backend/src/services"
click node_mail_service "https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/services/MailService.js"
click node_repositories "https://github.com/yashu1905-bit/movie-booking-system/tree/main/backend/src/repositories"
click node_mongodb "https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/config/db.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_web_dashboard,node_web_api toneBlue
class node_express_api,node_route_modules,node_auth_middleware,node_auth_controller,node_domain_controllers,node_notification_controller,node_settings_controller,node_analytics_routes toneAmber
class node_auth_service,node_catalog_services,node_booking_service,node_payment_service,node_discount_service,node_notification_service,node_settings_service,node_mail_service toneMint
class node_repositories,node_mongodb toneRose
class node_stripe,node_razorpay,node_email_delivery,node_jwt_provider,node_administrator,node_customer toneIndigo
```

## Components

### Client Applications

- [Admin Dashboard](https://github.com/yashu1905-bit/movie-booking-system/blob/main/web/src/App.jsx): `web/src/App.jsx`
- [Web API Client](https://github.com/yashu1905-bit/movie-booking-system/blob/main/web/src/services/apiService.js): `web/src/services/apiService.js`

### API Orchestration

- [Express API](https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/app.js): `backend/src/app.js`
- [Route Modules](https://github.com/yashu1905-bit/movie-booking-system/tree/main/backend/src/routes): `backend/src/routes`
- [Auth Middleware](https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/middleware/auth.js): `backend/src/middleware/auth.js`
- [Auth Controller](https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/controllers/authController.js): `backend/src/controllers/authController.js`
- [Domain Controllers](https://github.com/yashu1905-bit/movie-booking-system/tree/main/backend/src/controllers): `backend/src/controllers`
- [Notification Controller](https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/controllers/notificationController.js): `backend/src/controllers/notificationController.js`
- [Settings Controller](https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/controllers/settingController.js): `backend/src/controllers/settingController.js`
- [Analytics Routes](https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/routes/analytics.js): `backend/src/routes/analytics.js`

### Domain Services

- [Auth Service](https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/services/AuthService.js): `backend/src/services/AuthService.js`
- [Catalog Services](https://github.com/yashu1905-bit/movie-booking-system/tree/main/backend/src/services): `backend/src/services`
- [Booking Service](https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/services/BookingService.js): `backend/src/services/BookingService.js`
- [Payment Service](https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/services/PaymentService.js): `backend/src/services/PaymentService.js`
- [Discount Service](https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/services/DiscountService.js): `backend/src/services/DiscountService.js`
- [Notification Service](https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/services/NotificationService.js): `backend/src/services/NotificationService.js`
- [Settings Service](https://github.com/yashu1905-bit/movie-booking-system/tree/main/backend/src/services): `backend/src/services`
- [Mail Service](https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/services/MailService.js): `backend/src/services/MailService.js`

### Persistence Layer

- [Domain Repositories](https://github.com/yashu1905-bit/movie-booking-system/tree/main/backend/src/repositories): `backend/src/repositories`
- [MongoDB](https://github.com/yashu1905-bit/movie-booking-system/blob/main/backend/src/config/db.js): `backend/src/config/db.js`

### External Integrations

- **Stripe**
- **Razorpay**
- **Email Delivery**
- **JWT Provider**

### Other components

- **Administrator**
- **Customer**

## Connections

- Administrator → Admin Dashboard: uses
- Customer → Express API: requests
- Admin Dashboard → Web API Client: invokes
- Web API Client → Express API: calls
- Express API → Route Modules: mounts
- Route Modules → Auth Controller: dispatches
- Route Modules → Domain Controllers: dispatches
- Route Modules → Notification Controller: dispatches
- Route Modules → Settings Controller: dispatches
- Route Modules → Analytics Routes: dispatches
- Route Modules → Auth Middleware: applies
- Auth Middleware → Auth Controller: guards
- Auth Controller → Auth Service: calls
- Domain Controllers → Catalog Services: calls
- Domain Controllers → Booking Service: calls
- Domain Controllers → Payment Service: calls
- Domain Controllers → Discount Service: calls
- Domain Controllers → Notification Service: notifies
- Notification Controller → Notification Service: calls
- Settings Controller → Settings Service: calls
- Auth Service → Domain Repositories: reads/writes
- Catalog Services → Domain Repositories: reads/writes
- Booking Service → Domain Repositories: reads/writes
- Payment Service → Domain Repositories: reads/writes
- Discount Service → Domain Repositories: reads/writes
- Notification Service → Domain Repositories: reads/writes
- Settings Service → Domain Repositories: reads/writes
- Domain Repositories → MongoDB: persists
- Auth Service → Mail Service: sends OTP
- Mail Service → Email Delivery: delivers email
- Auth Service → JWT Provider: signs tokens
- Payment Service → Stripe: charges
- Payment Service → Razorpay: creates orders
