# satishsurani/mybus-bus-booking-site architecture

> Architecture diagram of the GitHub repository satishsurani/mybus-bus-booking-site, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-08-02). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/satishsurani/mybus-bus-booking-site
- Repository: https://github.com/satishsurani/mybus-bus-booking-site

## Overview

#### 1. Purpose and Runtime
A server-rendered PHP/MySQL bus-ticket booking system. Browser pages use JavaScript/AJAX for dynamic operations; PHP endpoints own authentication, inventory/booking mutations, and payment handling. It is intended for an Apache/PHP local stack such as XAMPP/WAMP, with schema/bootstrap data in `mybus.sql`.

#### 2. Public Application Entry Points
The customer-facing flow begins at `index.php`, with bus discovery/detail interaction through `bus.php` and `ajax/bus.php`. Account and trip history are exposed through `bookings.php`; logout is handled by `logout.php`. Shared page chrome and likely session-aware navigation are centralized in `inc/header.php`, `inc/footer.php`, and `inc/links.php`.

#### 3. Authentication Boundary
Customer login and registration are API-style PHP mutations in `ajax/login.php` and `ajax/register.php`. These endpoints form the identity boundary for booking operations; authenticated user state is then consumed by customer pages such as `bookings.php` and booking confirmation paths. Administrative authentication is separately entered through `admin/index.php` and terminated by `admin/logout.php`.

#### 4. Search, Availability, and Seat Selection
Bus search/filtering and real-time availability are driven by the public bus endpoint `ajax/bus.php`, rendered in the customer bus UI at `bus.php`. The system’s key inventory boundary is the booking action: a selected seat must transition from available to reserved without conflicting with concurrent requests. The schema in `mybus.sql` is the authoritative persistence model for buses, routes/schedules, users, and bookings.

#### 5. Booking and Payment Lifecycle
Booking confirmation is coordinated by `confirm_booking.php` and client logic in `scripts/confirm_booking.js`. State-changing operations are split into endpoints: `ajax/confirm_booking.php` confirms a reservation, `ajax/cancel_booking.php` cancels it, and `ajax/submitpayment.php` records/submits payment processing. User-visible terminal states are represented by `payment-success.php` and `payment-failed.php`. Razorpay is the stated external payment gateway; payment callbacks/result handling should be treated as a trust boundary rather than relying on browser-provided success state.

#### 6. Administration Plane
The admin site is a distinct PHP surface rooted at `admin/index.php`, with operational screens in `admin/dashboard.php`, `admin/bus.php`, and `admin/bookings.php`. Admin AJAX endpoints—`admin/ajax/dashboard.php`, `admin/ajax/bus.php`, and `admin/ajax/bookings.php`—support management/reporting without full page reloads. Shared admin database and authorization foundations are concentrated in `admin/inc/db_config.php` and `admin/inc/essentials.php`.

#### 7. Reporting and External Integrations
Booking output can be generated as a PDF through `generate_pdf.php`, with `bookings_report.pdf` indicating a report artifact/output. Dependency management is present via `composer.json` and `composer.lock`, likely supporting PHP integrations such as PHPMailer. Email confirmations are expected to use PHPMailer/SMTP, creating a separate outbound delivery boundary after successful booking/payment persistence.

Main entry points: [`ajax/submitpayment.php`](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/ajax/submitpayment.php) (Payment submission API), [`mybus.sql`](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/mybus.sql) (MySQL booking store), [`index.php`](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/index.php) (Customer pages), [`bus.php`](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/bus.php) (Bus discovery UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_customer["Customer app"]
  node_browser(("Customer browser<br/>client"))
  node_customer_pages["Customer pages<br/>PHP pages<br/>[index.php]"]
  node_bus_ui["Bus discovery UI<br/>PHP page<br/>[bus.php]"]
  node_customer_auth["Customer auth API<br/>AJAX endpoints<br/>[login.php]"]
  node_availability_api["Availability API<br/>AJAX endpoint<br/>[bus.php]"]
  node_booking_history["Booking history<br/>PHP page<br/>[bookings.php]"]
end

subgraph group_booking["Booking &amp; payment"]
  node_booking_confirmation["Booking confirmation"]
  node_booking_api["Reservation API<br/>AJAX endpoints"]
  node_payment_api["Payment submission API<br/>AJAX endpoint<br/>[submitpayment.php]"]
  node_payment_results["Payment result pages<br/>PHP pages"]
end

subgraph group_admin["Administration"]
  node_admin_login["Admin login<br/>PHP page<br/>[index.php]"]
  node_admin_console["Admin console<br/>PHP pages<br/>[dashboard.php]"]
  node_admin_api["Admin AJAX APIs<br/>AJAX endpoints<br/>[dashboard.php]"]
  node_admin_security["Admin DB &amp; authorization<br/>PHP foundation<br/>[db_config.php]"]
end

subgraph group_platform["Persistence &amp; integrations"]
  node_mysql[("MySQL booking store<br/>MySQL schema<br/>[mybus.sql]")]
  node_razorpay{{"Razorpay<br/>payment gateway"}}
  node_email{{"SMTP email delivery<br/>outbound integration"}}
  node_pdf_export["PDF booking export<br/>PHP generator<br/>[generate_pdf.php]"]
  node_pdf_artifact["Booking PDF report<br/>report artifact"]
  node_php_dependencies["PHP dependencies<br/>Composer manifest<br/>[composer.json]"]
end

node_browser -->|"renders"| node_customer_pages
node_customer_pages -->|"login/register"| node_customer_auth
node_customer_pages -->|"browse buses"| node_bus_ui
node_customer_pages -->|"view trips"| node_booking_history
node_bus_ui -->|"AJAX search &amp; seats"| node_availability_api
node_availability_api -->|"reads availability"| node_mysql
node_bus_ui -->|"selected trip &amp; seat"| node_booking_confirmation
node_booking_confirmation -->|"confirm/cancel"| node_booking_api
node_booking_api -->|"atomic reservation state"| node_mysql
node_booking_confirmation -->|"submit payment"| node_payment_api
node_payment_api -->|"payment request/result"| node_razorpay
node_payment_api -->|"persists payment state"| node_mysql
node_payment_api -->|"trusted outcome"| node_payment_results
node_payment_api -->|"confirmation delivery"| node_email
node_admin_login -->|"authenticated access"| node_admin_console
node_admin_console -->|"AJAX operations"| node_admin_api
node_admin_api -->|"authorization &amp; DB setup"| node_admin_security
node_admin_security -->|"administrative access"| node_mysql
node_booking_history -->|"generate report"| node_pdf_export
node_pdf_export -->|"reads bookings"| node_mysql
node_pdf_export -->|"writes"| node_pdf_artifact
node_php_dependencies -.->|"mailer library"| node_email

click node_customer_pages "https://github.com/satishsurani/mybus-bus-booking-site/blob/main/index.php"
click node_bus_ui "https://github.com/satishsurani/mybus-bus-booking-site/blob/main/bus.php"
click node_customer_auth "https://github.com/satishsurani/mybus-bus-booking-site/blob/main/ajax/login.php"
click node_availability_api "https://github.com/satishsurani/mybus-bus-booking-site/blob/main/ajax/bus.php"
click node_booking_history "https://github.com/satishsurani/mybus-bus-booking-site/blob/main/bookings.php"
click node_booking_confirmation "https://github.com/satishsurani/mybus-bus-booking-site/blob/main/confirm_booking.php"
click node_booking_api "https://github.com/satishsurani/mybus-bus-booking-site/blob/main/ajax/confirm_booking.php"
click node_payment_api "https://github.com/satishsurani/mybus-bus-booking-site/blob/main/ajax/submitpayment.php"
click node_payment_results "https://github.com/satishsurani/mybus-bus-booking-site/blob/main/payment-success.php"
click node_admin_login "https://github.com/satishsurani/mybus-bus-booking-site/blob/main/admin/index.php"
click node_admin_console "https://github.com/satishsurani/mybus-bus-booking-site/blob/main/admin/dashboard.php"
click node_admin_api "https://github.com/satishsurani/mybus-bus-booking-site/blob/main/admin/ajax/dashboard.php"
click node_admin_security "https://github.com/satishsurani/mybus-bus-booking-site/blob/main/admin/inc/db_config.php"
click node_mysql "https://github.com/satishsurani/mybus-bus-booking-site/blob/main/mybus.sql"
click node_pdf_export "https://github.com/satishsurani/mybus-bus-booking-site/blob/main/generate_pdf.php"
click node_pdf_artifact "https://github.com/satishsurani/mybus-bus-booking-site/blob/main/bookings_report.pdf"
click node_php_dependencies "https://github.com/satishsurani/mybus-bus-booking-site/blob/main/composer.json"

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_browser,node_customer_pages,node_bus_ui,node_customer_auth,node_availability_api,node_booking_history toneBlue
class node_booking_confirmation,node_booking_api,node_payment_api,node_payment_results toneAmber
class node_admin_login,node_admin_console,node_admin_api,node_admin_security toneMint
class node_mysql,node_razorpay,node_email,node_pdf_export,node_pdf_artifact,node_php_dependencies toneRose
```

## Components

### Customer app

- **Customer browser**: client · Server-rendered pages enhanced with AJAX.
- [Customer pages](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/index.php): PHP pages · Discovery, account history, and shared page chrome. · `index.php`
- [Bus discovery UI](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/bus.php): PHP page · Shows search results, details, and seat selection. · `bus.php`
- [Customer auth API](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/ajax/login.php): AJAX endpoints · Login and registration establish customer identity. · `ajax/login.php`
- [Availability API](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/ajax/bus.php): AJAX endpoint · Supplies bus search, filters, and availability. · `ajax/bus.php`
- [Booking history](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/bookings.php): PHP page · `bookings.php`

### Booking & payment

- [Booking confirmation](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/confirm_booking.php): PHP page + client JS · Coordinates selected-seat confirmation and payment initiation. · `confirm_booking.php`
- [Reservation API](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/ajax/confirm_booking.php): AJAX endpoints · Confirms and cancels reservations against inventory. · `ajax/confirm_booking.php`
- [Payment submission API](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/ajax/submitpayment.php): AJAX endpoint · Records payment submission and processes gateway results. · `ajax/submitpayment.php`
- [Payment result pages](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/payment-success.php): PHP pages · Customer-visible success or failure states. · `payment-success.php`

### Administration

- [Admin login](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/admin/index.php): PHP page · Separate administrative authentication entry point. · `admin/index.php`
- [Admin console](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/admin/dashboard.php): PHP pages · Dashboard, bus operations, and booking operations. · `admin/dashboard.php`
- [Admin AJAX APIs](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/admin/ajax/dashboard.php): AJAX endpoints · Management and reporting operations without page reloads. · `admin/ajax/dashboard.php`
- [Admin DB & authorization](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/admin/inc/db_config.php): PHP foundation · Shared administrative database and authorization setup. · `admin/inc/db_config.php`

### Persistence & integrations

- [MySQL booking store](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/mybus.sql): MySQL schema · Authoritative buses, routes, schedules, users, bookings, and payment state. · `mybus.sql`
- **Razorpay**: payment gateway · External payment trust boundary.
- **SMTP email delivery**: outbound integration · Sends confirmations after durable booking and payment state.
- [PDF booking export](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/generate_pdf.php): PHP generator · Generates booking-report output. · `generate_pdf.php`
- [Booking PDF report](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/bookings_report.pdf): report artifact · `bookings_report.pdf`
- [PHP dependencies](https://github.com/satishsurani/mybus-bus-booking-site/blob/main/composer.json): Composer manifest · Provides integration libraries such as PHPMailer. · `composer.json`

## Connections

- Customer browser → Customer pages: renders
- Customer pages → Customer auth API: login/register
- Customer pages → Bus discovery UI: browse buses
- Customer pages → Booking history: view trips
- Bus discovery UI → Availability API: AJAX search & seats
- Availability API → MySQL booking store: reads availability
- Bus discovery UI → Booking confirmation: selected trip & seat
- Booking confirmation → Reservation API: confirm/cancel
- Reservation API → MySQL booking store: atomic reservation state
- Booking confirmation → Payment submission API: submit payment
- Payment submission API → Razorpay: payment request/result
- Payment submission API → MySQL booking store: persists payment state
- Payment submission API → Payment result pages: trusted outcome
- Payment submission API → SMTP email delivery: confirmation delivery
- Admin login → Admin console: authenticated access
- Admin console → Admin AJAX APIs: AJAX operations
- Admin AJAX APIs → Admin DB & authorization: authorization & DB setup
- Admin DB & authorization → MySQL booking store: administrative access
- Booking history → PDF booking export: generate report
- PDF booking export → MySQL booking store: reads bookings
- PDF booking export → Booking PDF report: writes
- PHP dependencies → SMTP email delivery: mailer library
