# successfulshreya/guesthouse_system architecture

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

- Interactive diagram: https://gitdiagram.com/successfulshreya/guesthouse_system
- Repository: https://github.com/successfulshreya/guesthouse_system

## Overview

#### Purpose and runtime
A server-rendered PHP/MySQL guesthouse booking system intended for XAMPP (Apache + MySQL). It supports separate admin and user workflows: users search availability and book rooms; administrators maintain guesthouses, rooms, users, and bookings. The database schema/data is supplied at `database/guesthouse_db (2).sql`, with connection setup centralized in `db_connect.php`.

#### Application entry and session boundary
`index.php` is the primary browser entry point and likely owns authentication/routing into role-specific dashboards. `logout.php` terminates authenticated access. The application is organized by URL-accessible PHP pages rather than a framework/router, so authorization/session checks must be consistently enforced at each page boundary.

Paths: `index.php`, `logout.php`, `db_connect.php`

#### User booking workflow
The user area provides the core reservation flow: availability lookup, room selection/details, rate lookup, and booking submission. Users can then inspect their reservations and reports from their dashboard. Dynamic room/rate endpoints suggest UI-driven requests that return room-specific data during booking.

Paths: `user/dashboard.php`, `user/availability.php`, `user/book_room.php`  
Paths: `user/get_room.php`, `user/get_room_rate.php`, `user/my_booking.php`

#### Administration workflow
Admin pages are the operational control plane. The dashboard links to CRUD-style creation for guesthouses, rooms, and users, while booking management handles reservation review or updates. Admin actions operate directly against the shared MySQL data model used by user booking pages.

Paths: `admin/dashboard.php`, `admin/manage_booking.php`, `admin/add_guesthouse.php`  
Paths: `admin/add_room.php`, `admin/add_user.php`

#### Data model and persistence
MySQL is the system of record for identities, guesthouse inventory, room data/rates, and bookings. The SQL export is therefore the authoritative source for table relationships, required booking fields, initial accounts, and constraints. All application pages should use the common database connection layer rather than independent connection definitions.

Paths: `database/guesthouse_db (2).sql`, `db_connect.php`

#### Notification integration
Email notifications are implemented through the bundled PHPMailer library and an application mail configuration file. Booking or administrative events can use SMTP, creating an external-service boundary: credentials and transport settings belong in mail configuration, while sending behavior should remain in application workflows.

Paths: `includes/mail_config.php`, `includes/PHPMailer/src/PHPMailer.php`, `includes/PHPMailer/src/SMTP.php`  
Paths: `testmail.php`

#### Presentation boundary
Views are PHP pages with dedicated CSS per role, not a separate frontend application. Admin and user interfaces have separate styling assets, reinforcing the role-area split while sharing the same PHP/MySQL backend.

Paths: `admin/styleadmin.css`, `user/style.css`

Main entry points: [`db_connect.php`](https://github.com/successfulshreya/guesthouse_system/blob/main/db_connect.php) (Database connection), [`user/availability.php`](https://github.com/successfulshreya/guesthouse_system/blob/main/user/availability.php) (Availability search), [`admin/dashboard.php`](https://github.com/successfulshreya/guesthouse_system/blob/main/admin/dashboard.php) (Admin dashboard), [`index.php`](https://github.com/successfulshreya/guesthouse_system/blob/main/index.php) (Application entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_user_area["User booking area"]
  node_user_dashboard["User dashboard<br/>PHP page<br/>[dashboard.php]"]
  node_availability["Availability search<br/>PHP page<br/>[availability.php]"]
  node_booking["Booking submission<br/>PHP page<br/>[book_room.php]"]
  node_room_details["Room details endpoint<br/>PHP endpoint<br/>[get_room.php]"]
  node_room_rate["Room rate endpoint<br/>PHP endpoint<br/>[get_room_rate.php]"]
  node_my_bookings["My bookings<br/>PHP page<br/>[my_booking.php]"]
end

subgraph group_admin_area["Administration"]
  node_admin_dashboard["Admin dashboard<br/>PHP page<br/>[dashboard.php]"]
  node_booking_management["Booking management<br/>PHP page<br/>[manage_booking.php]"]
  node_guesthouse_admin["Guesthouse creation<br/>PHP page<br/>[add_guesthouse.php]"]
  node_room_admin["Room creation<br/>PHP page<br/>[add_room.php]"]
  node_user_admin["User creation<br/>PHP page<br/>[add_user.php]"]
end

subgraph group_platform["Shared platform"]
  node_entry["Application entry<br/>PHP page<br/>[index.php]"]
  node_logout["Logout<br/>PHP page<br/>[logout.php]"]
  node_db_connect["Database connection<br/>PHP module<br/>[db_connect.php]"]
  node_mysql[("Guesthouse MySQL<br/>system of record")]
  node_mail_config["Mail configuration<br/>PHP module<br/>[mail_config.php]"]
  node_phpmailer["PHPMailer<br/>mail library<br/>[PHPMailer.php]"]
  node_smtp["SMTP transport<br/>mail library<br/>[SMTP.php]"]
  node_mail_test["Mail test<br/>PHP page<br/>[testmail.php]"]
end

node_entry -->|"user access"| node_user_dashboard
node_entry -->|"admin access"| node_admin_dashboard
node_entry -->|"ends session"| node_logout
node_user_dashboard -->|"search rooms"| node_availability
node_availability -->|"loads room"| node_room_details
node_availability -->|"loads rate"| node_room_rate
node_availability -->|"selects room"| node_booking
node_user_dashboard -->|"views reservations"| node_my_bookings
node_admin_dashboard -->|"manages bookings"| node_booking_management
node_admin_dashboard -->|"maintains guesthouses"| node_guesthouse_admin
node_admin_dashboard -->|"maintains rooms"| node_room_admin
node_admin_dashboard -->|"maintains users"| node_user_admin
node_availability -->|"uses"| node_db_connect
node_booking -->|"uses"| node_db_connect
node_my_bookings -->|"uses"| node_db_connect
node_booking_management -->|"uses"| node_db_connect
node_guesthouse_admin -->|"uses"| node_db_connect
node_room_admin -->|"uses"| node_db_connect
node_user_admin -->|"uses"| node_db_connect
node_db_connect -->|"connects"| node_mysql
node_booking -.->|"may notify"| node_mail_config
node_mail_config -->|"configures"| node_phpmailer
node_phpmailer -->|"sends via"| node_smtp
node_mail_test -->|"tests"| node_mail_config

click node_entry "https://github.com/successfulshreya/guesthouse_system/blob/main/index.php"
click node_logout "https://github.com/successfulshreya/guesthouse_system/blob/main/logout.php"
click node_db_connect "https://github.com/successfulshreya/guesthouse_system/blob/main/db_connect.php"
click node_mysql "https://github.com/successfulshreya/guesthouse_system/blob/main/database/guesthouse_db%20(2).sql"
click node_user_dashboard "https://github.com/successfulshreya/guesthouse_system/blob/main/user/dashboard.php"
click node_availability "https://github.com/successfulshreya/guesthouse_system/blob/main/user/availability.php"
click node_booking "https://github.com/successfulshreya/guesthouse_system/blob/main/user/book_room.php"
click node_room_details "https://github.com/successfulshreya/guesthouse_system/blob/main/user/get_room.php"
click node_room_rate "https://github.com/successfulshreya/guesthouse_system/blob/main/user/get_room_rate.php"
click node_my_bookings "https://github.com/successfulshreya/guesthouse_system/blob/main/user/my_booking.php"
click node_admin_dashboard "https://github.com/successfulshreya/guesthouse_system/blob/main/admin/dashboard.php"
click node_booking_management "https://github.com/successfulshreya/guesthouse_system/blob/main/admin/manage_booking.php"
click node_guesthouse_admin "https://github.com/successfulshreya/guesthouse_system/blob/main/admin/add_guesthouse.php"
click node_room_admin "https://github.com/successfulshreya/guesthouse_system/blob/main/admin/add_room.php"
click node_user_admin "https://github.com/successfulshreya/guesthouse_system/blob/main/admin/add_user.php"
click node_mail_config "https://github.com/successfulshreya/guesthouse_system/blob/main/includes/mail_config.php"
click node_phpmailer "https://github.com/successfulshreya/guesthouse_system/blob/main/includes/PHPMailer/src/PHPMailer.php"
click node_smtp "https://github.com/successfulshreya/guesthouse_system/blob/main/includes/PHPMailer/src/SMTP.php"
click node_mail_test "https://github.com/successfulshreya/guesthouse_system/blob/main/testmail.php"

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_user_dashboard,node_availability,node_booking,node_room_details,node_room_rate,node_my_bookings toneBlue
class node_admin_dashboard,node_booking_management,node_guesthouse_admin,node_room_admin,node_user_admin toneAmber
class node_entry,node_logout,node_db_connect,node_mysql,node_mail_config,node_phpmailer,node_smtp,node_mail_test toneMint
```

## Components

### User booking area

- [User dashboard](https://github.com/successfulshreya/guesthouse_system/blob/main/user/dashboard.php): PHP page · `user/dashboard.php`
- [Availability search](https://github.com/successfulshreya/guesthouse_system/blob/main/user/availability.php): PHP page · `user/availability.php`
- [Booking submission](https://github.com/successfulshreya/guesthouse_system/blob/main/user/book_room.php): PHP page · Creates reservations from selected room details and rates. · `user/book_room.php`
- [Room details endpoint](https://github.com/successfulshreya/guesthouse_system/blob/main/user/get_room.php): PHP endpoint · `user/get_room.php`
- [Room rate endpoint](https://github.com/successfulshreya/guesthouse_system/blob/main/user/get_room_rate.php): PHP endpoint · `user/get_room_rate.php`
- [My bookings](https://github.com/successfulshreya/guesthouse_system/blob/main/user/my_booking.php): PHP page · `user/my_booking.php`

### Administration

- [Admin dashboard](https://github.com/successfulshreya/guesthouse_system/blob/main/admin/dashboard.php): PHP page · `admin/dashboard.php`
- [Booking management](https://github.com/successfulshreya/guesthouse_system/blob/main/admin/manage_booking.php): PHP page · Reviews or updates reservations. · `admin/manage_booking.php`
- [Guesthouse creation](https://github.com/successfulshreya/guesthouse_system/blob/main/admin/add_guesthouse.php): PHP page · `admin/add_guesthouse.php`
- [Room creation](https://github.com/successfulshreya/guesthouse_system/blob/main/admin/add_room.php): PHP page · `admin/add_room.php`
- [User creation](https://github.com/successfulshreya/guesthouse_system/blob/main/admin/add_user.php): PHP page · `admin/add_user.php`

### Shared platform

- [Application entry](https://github.com/successfulshreya/guesthouse_system/blob/main/index.php): PHP page · Authentication and role routing boundary. · `index.php`
- [Logout](https://github.com/successfulshreya/guesthouse_system/blob/main/logout.php): PHP page · `logout.php`
- [Database connection](https://github.com/successfulshreya/guesthouse_system/blob/main/db_connect.php): PHP module · Shared MySQL connection setup. · `db_connect.php`
- [Guesthouse MySQL](https://github.com/successfulshreya/guesthouse_system/blob/main/database/guesthouse_db%20(2).sql): system of record · Stores identities, inventory, rates, and bookings. · `database/guesthouse_db (2).sql`
- [Mail configuration](https://github.com/successfulshreya/guesthouse_system/blob/main/includes/mail_config.php): PHP module · SMTP credentials and transport settings. · `includes/mail_config.php`
- [PHPMailer](https://github.com/successfulshreya/guesthouse_system/blob/main/includes/PHPMailer/src/PHPMailer.php): mail library · `includes/PHPMailer/src/PHPMailer.php`
- [SMTP transport](https://github.com/successfulshreya/guesthouse_system/blob/main/includes/PHPMailer/src/SMTP.php): mail library · `includes/PHPMailer/src/SMTP.php`
- [Mail test](https://github.com/successfulshreya/guesthouse_system/blob/main/testmail.php): PHP page · `testmail.php`

## Connections

- Application entry → User dashboard: user access
- Application entry → Admin dashboard: admin access
- Application entry → Logout: ends session
- User dashboard → Availability search: search rooms
- Availability search → Room details endpoint: loads room
- Availability search → Room rate endpoint: loads rate
- Availability search → Booking submission: selects room
- User dashboard → My bookings: views reservations
- Admin dashboard → Booking management: manages bookings
- Admin dashboard → Guesthouse creation: maintains guesthouses
- Admin dashboard → Room creation: maintains rooms
- Admin dashboard → User creation: maintains users
- Availability search → Database connection: uses
- Booking submission → Database connection: uses
- My bookings → Database connection: uses
- Booking management → Database connection: uses
- Guesthouse creation → Database connection: uses
- Room creation → Database connection: uses
- User creation → Database connection: uses
- Database connection → Guesthouse MySQL: connects
- Booking submission → Mail configuration: may notify
- Mail configuration → PHPMailer: configures
- PHPMailer → SMTP transport: sends via
- Mail test → Mail configuration: tests
