# git-aryan07/movieticketbooking architecture

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

- Interactive diagram: https://gitdiagram.com/git-aryan07/movieticketbooking
- Repository: https://github.com/git-aryan07/movieticketbooking

## Overview

QuickShow is a MERN movie-ticket booking application. Moviegoers browse movies and showtimes, choose seats, pay through Stripe, and manage bookings and favorites; administrators manage shows and review booking analytics. The backend also synchronizes Clerk users and runs booking-expiry, confirmation, reminder, and new-show email workflows. Frontend-to-API details and webhook internals are only partially sampled, so those connections are limited to documented or visible entry points.

Main entry points: [`backend/server.js`](https://github.com/git-aryan07/movieticketbooking/blob/main/backend/server.js) (Express server), [`frontend/src/App.jsx`](https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/App.jsx) (React application), [`backend/inngest/index.js`](https://github.com/git-aryan07/movieticketbooking/blob/main/backend/inngest/index.js) (Event workflows), [`backend/models/Booking.js`](https://github.com/git-aryan07/movieticketbooking/blob/main/backend/models/Booking.js) (MongoDB models)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Customer experience"]
  node_frontend["React application<br/>[App.jsx]"]
  node_home["Movie discovery<br/>[Home.jsx]"]
  node_details["Movie details<br/>[MovieDetails.jsx]"]
  node_seats["Seat selection<br/>[SeatLayout.jsx]"]
  node_bookings["My bookings<br/>[MyBookings.jsx]"]
  node_favorites["Favorites<br/>[Favorite.jsx]"]
end

subgraph group_admin["Admin operations"]
  node_adminui["Admin screens<br/>[Layout.jsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.jsx]"]
  node_showadmin["Show management<br/>[AddShows.jsx]"]
  node_bookingadmin["Booking management<br/>[ListBookings.jsx]"]
end

subgraph group_api["Backend API"]
  node_server["Express server<br/>[server.js]"]
  node_showapi["Movie and show API<br/>[showController.js]"]
  node_bookingapi["Booking API"]
  node_userapi["User account API<br/>[userController.js]"]
  node_adminapi["Admin API<br/>[adminController.js]"]
  node_webhook["Stripe webhook<br/>[stripeWebhooks.js]"]
  node_auth["Auth middleware<br/>[auth.js]"]
end

subgraph group_work["Data and workflows"]
  node_models[("MongoDB models<br/>[Booking.js]")]
  node_inngest["Event workflows<br/>[index.js]"]
  node_mailer["Email delivery<br/>[nodeMailer.js]"]
end

node_moviegoer(("Moviegoer"))
node_administrator(("Administrator"))
node_clerk{{"Clerk"}}
node_stripe{{"Stripe"}}
node_tmdb{{"TMDB"}}
node_mongo[("MongoDB")]
node_email{{"Email service"}}

node_moviegoer -->|"uses"| node_frontend
node_administrator -->|"uses"| node_frontend
node_frontend -->|"routes"| node_home
node_frontend -->|"routes"| node_details
node_frontend -->|"routes"| node_seats
node_frontend -->|"routes"| node_bookings
node_frontend -->|"routes"| node_favorites
node_frontend -->|"routes"| node_adminui
node_adminui -->|"routes"| node_dashboard
node_adminui -->|"routes"| node_showadmin
node_adminui -->|"routes"| node_bookingadmin
node_frontend -.->|"API requests"| node_server
node_server -->|"dispatches"| node_showapi
node_server -->|"dispatches"| node_bookingapi
node_server -->|"dispatches"| node_userapi
node_server -->|"dispatches"| node_adminapi
node_server -->|"dispatches"| node_webhook
node_server -->|"uses"| node_auth
node_showapi -->|"reads/writes"| node_models
node_bookingapi -->|"reads/writes"| node_models
node_userapi -->|"reads"| node_models
node_adminapi -->|"reads"| node_models
node_showapi -->|"fetches titles"| node_tmdb
node_bookingapi -->|"creates checkout"| node_stripe
node_bookingapi -->|"sends expiry event"| node_inngest
node_showapi -->|"sends show event"| node_inngest
node_inngest -->|"reads/writes"| node_models
node_inngest -->|"sends notifications"| node_mailer
node_inngest -->|"delivers email"| node_email
node_server -->|"serves functions"| node_inngest
node_server -->|"auth middleware"| node_clerk
node_inngest -.->|"syncs user events"| node_clerk
node_stripe -.->|"webhook events"| node_server
node_mailer -->|"sends"| node_email

click node_frontend "https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/App.jsx"
click node_home "https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/pages/Home.jsx"
click node_details "https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/pages/MovieDetails.jsx"
click node_seats "https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/pages/SeatLayout.jsx"
click node_bookings "https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/pages/MyBookings.jsx"
click node_favorites "https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/pages/Favorite.jsx"
click node_adminui "https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/pages/admin/Layout.jsx"
click node_dashboard "https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/pages/admin/Dashboard.jsx"
click node_showadmin "https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/pages/admin/AddShows.jsx"
click node_bookingadmin "https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/pages/admin/ListBookings.jsx"
click node_server "https://github.com/git-aryan07/movieticketbooking/blob/main/backend/server.js"
click node_showapi "https://github.com/git-aryan07/movieticketbooking/blob/main/backend/controllers/showController.js"
click node_bookingapi "https://github.com/git-aryan07/movieticketbooking/blob/main/backend/controllers/bookingController.js"
click node_userapi "https://github.com/git-aryan07/movieticketbooking/blob/main/backend/controllers/userController.js"
click node_adminapi "https://github.com/git-aryan07/movieticketbooking/blob/main/backend/controllers/adminController.js"
click node_webhook "https://github.com/git-aryan07/movieticketbooking/blob/main/backend/controllers/stripeWebhooks.js"
click node_auth "https://github.com/git-aryan07/movieticketbooking/blob/main/backend/middleware/auth.js"
click node_models "https://github.com/git-aryan07/movieticketbooking/blob/main/backend/models/Booking.js"
click node_inngest "https://github.com/git-aryan07/movieticketbooking/blob/main/backend/inngest/index.js"
click node_mailer "https://github.com/git-aryan07/movieticketbooking/blob/main/backend/configs/nodeMailer.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_frontend,node_home,node_details,node_seats,node_bookings,node_favorites toneBlue
class node_adminui,node_dashboard,node_showadmin,node_bookingadmin,node_mongo toneAmber
class node_server,node_showapi,node_bookingapi,node_userapi,node_adminapi,node_webhook,node_auth toneMint
class node_models,node_inngest,node_mailer toneRose
class node_moviegoer,node_administrator,node_clerk,node_stripe,node_tmdb,node_email toneIndigo
```

## Components

### Customer experience

- [React application](https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Movie discovery](https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/pages/Home.jsx): `frontend/src/pages/Home.jsx`
- [Movie details](https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/pages/MovieDetails.jsx): `frontend/src/pages/MovieDetails.jsx`
- [Seat selection](https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/pages/SeatLayout.jsx): `frontend/src/pages/SeatLayout.jsx`
- [My bookings](https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/pages/MyBookings.jsx): `frontend/src/pages/MyBookings.jsx`
- [Favorites](https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/pages/Favorite.jsx): `frontend/src/pages/Favorite.jsx`

### Admin operations

- [Admin screens](https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/pages/admin/Layout.jsx): `frontend/src/pages/admin/Layout.jsx`
- [Dashboard](https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/pages/admin/Dashboard.jsx): `frontend/src/pages/admin/Dashboard.jsx`
- [Show management](https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/pages/admin/AddShows.jsx): `frontend/src/pages/admin/AddShows.jsx`
- [Booking management](https://github.com/git-aryan07/movieticketbooking/blob/main/frontend/src/pages/admin/ListBookings.jsx): `frontend/src/pages/admin/ListBookings.jsx`

### Backend API

- [Express server](https://github.com/git-aryan07/movieticketbooking/blob/main/backend/server.js): `backend/server.js`
- [Movie and show API](https://github.com/git-aryan07/movieticketbooking/blob/main/backend/controllers/showController.js): `backend/controllers/showController.js`
- [Booking API](https://github.com/git-aryan07/movieticketbooking/blob/main/backend/controllers/bookingController.js): `backend/controllers/bookingController.js`
- [User account API](https://github.com/git-aryan07/movieticketbooking/blob/main/backend/controllers/userController.js): `backend/controllers/userController.js`
- [Admin API](https://github.com/git-aryan07/movieticketbooking/blob/main/backend/controllers/adminController.js): `backend/controllers/adminController.js`
- [Stripe webhook](https://github.com/git-aryan07/movieticketbooking/blob/main/backend/controllers/stripeWebhooks.js): `backend/controllers/stripeWebhooks.js`
- [Auth middleware](https://github.com/git-aryan07/movieticketbooking/blob/main/backend/middleware/auth.js): `backend/middleware/auth.js`

### Data and workflows

- [MongoDB models](https://github.com/git-aryan07/movieticketbooking/blob/main/backend/models/Booking.js): `backend/models/Booking.js`
- [Event workflows](https://github.com/git-aryan07/movieticketbooking/blob/main/backend/inngest/index.js): `backend/inngest/index.js`
- [Email delivery](https://github.com/git-aryan07/movieticketbooking/blob/main/backend/configs/nodeMailer.js): `backend/configs/nodeMailer.js`

### Other components

- **Moviegoer**
- **Administrator**
- **Clerk**
- **Stripe**
- **TMDB**
- **MongoDB**
- **Email service**

## Connections

- Moviegoer → React application: uses
- Administrator → React application: uses
- React application → Movie discovery: routes
- React application → Movie details: routes
- React application → Seat selection: routes
- React application → My bookings: routes
- React application → Favorites: routes
- React application → Admin screens: routes
- Admin screens → Dashboard: routes
- Admin screens → Show management: routes
- Admin screens → Booking management: routes
- React application → Express server: API requests
- Express server → Movie and show API: dispatches
- Express server → Booking API: dispatches
- Express server → User account API: dispatches
- Express server → Admin API: dispatches
- Express server → Stripe webhook: dispatches
- Express server → Auth middleware: uses
- Movie and show API → MongoDB models: reads/writes
- Booking API → MongoDB models: reads/writes
- User account API → MongoDB models: reads
- Admin API → MongoDB models: reads
- Movie and show API → TMDB: fetches titles
- Booking API → Stripe: creates checkout
- Booking API → Event workflows: sends expiry event
- Movie and show API → Event workflows: sends show event
- Event workflows → MongoDB models: reads/writes
- Event workflows → Email delivery: sends notifications
- Event workflows → Email service: delivers email
- Express server → Event workflows: serves functions
- Express server → Clerk: auth middleware
- Event workflows → Clerk: syncs user events
- Stripe → Express server: webhook events
- Email delivery → Email service: sends
