# uvraj3927/restaurent-booking-system architecture

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

- Interactive diagram: https://gitdiagram.com/uvraj3927/restaurent-booking-system
- Repository: https://github.com/uvraj3927/restaurent-booking-system

## Overview

Pyrites Grill is a restaurant menu and reservation application, presented as a hands-on AWS infrastructure project. Guests browse menu items, check table availability, create reservations, then retrieve or cancel them using a booking reference and email. Admin endpoints support booking lookup and menu management. The Flask service uses SQLAlchemy models and a configured database; startup creates tables and seeds initial menu and table data. The README documents static hosting on S3, an EC2-hosted API, and a private RDS database. Infrastructure wiring is represented at the documented level because the Terraform files were not sampled.

Main entry points: [`backend/app.py`](https://github.com/uvraj3927/restaurent-booking-system/blob/main/backend/app.py) (Flask App Startup), [`backend/extensions.py`](https://github.com/uvraj3927/restaurent-booking-system/blob/main/backend/extensions.py) (SQLAlchemy Extension), [`backend/routes/api.py`](https://github.com/uvraj3927/restaurent-booking-system/blob/main/backend/routes/api.py) (Guest API), [`backend/models.py`](https://github.com/uvraj3927/restaurent-booking-system/blob/main/backend/models.py) (Menu, Table & Booking Models)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Guest Web App"]
  node_frontend["Menu &amp; Booking UI<br/>[app.js]"]
  node_api_config["API Base Config<br/>[config.js]"]
end

subgraph group_service["Flask Application"]
  node_api["Guest API<br/>[api.py]"]
  node_admin["Admin API<br/>[admin.py]"]
  node_app["Flask App Startup<br/>[app.py]"]
  node_settings["App &amp; DB Settings<br/>[config.py]"]
  node_seed["Initial Menu &amp; Tables<br/>[seeds.py]"]
end

subgraph group_data["Persistence"]
  node_orm["SQLAlchemy Extension<br/>[extensions.py]"]
  node_models["Menu, Table &amp; Booking Models<br/>[models.py]"]
  node_database[("Application Database")]
end

subgraph group_cloud["AWS Infrastructure"]
  node_s3["Static Frontend Hosting<br/>[s3.tf]"]
  node_ec2["API Server<br/>[main.tf]"]
  node_vpc["Isolated VPC<br/>[main.tf]"]
  node_public_subnet["Public Subnet<br/>[main.tf]"]
  node_private_subnet["Private Subnet<br/>[main.tf]"]
  node_security_groups["Security Groups<br/>[main.tf]"]
  node_rds[("Managed MySQL<br/>[main.tf]")]
end

node_guest(("Guest"))

node_guest -->|"uses"| node_frontend
node_frontend -->|"reads base URL"| node_api_config
node_frontend -->|"requests menu, availability &amp; bookings"| node_api
node_app -->|"registers"| node_api
node_app -->|"registers"| node_admin
node_app -->|"loads"| node_settings
node_app -->|"initializes"| node_orm
node_app -->|"imports"| node_models
node_app -->|"runs at startup"| node_seed
node_api -->|"queries &amp; updates"| node_models
node_api -->|"commits changes"| node_orm
node_api -->|"reads booking rules"| node_settings
node_admin -->|"queries &amp; updates"| node_models
node_admin -->|"commits changes"| node_orm
node_admin -->|"checks admin key"| node_settings
node_seed -->|"creates initial records"| node_models
node_seed -->|"commits records"| node_orm
node_models -->|"defines ORM entities"| node_orm
node_orm -.->|"persists records"| node_database
node_s3 -->|"serves frontend"| node_guest
node_guest -->|"calls Flask API"| node_ec2
node_ec2 -->|"accesses database"| node_rds
node_vpc -->|"contains"| node_public_subnet
node_vpc -->|"contains"| node_private_subnet
node_public_subnet -->|"hosts"| node_ec2
node_private_subnet -->|"hosts"| node_rds
node_security_groups -->|"restricts access"| node_rds

click node_frontend "https://github.com/uvraj3927/restaurent-booking-system/blob/main/frontend/js/app.js"
click node_api_config "https://github.com/uvraj3927/restaurent-booking-system/blob/main/frontend/js/config.js"
click node_api "https://github.com/uvraj3927/restaurent-booking-system/blob/main/backend/routes/api.py"
click node_admin "https://github.com/uvraj3927/restaurent-booking-system/blob/main/backend/routes/admin.py"
click node_app "https://github.com/uvraj3927/restaurent-booking-system/blob/main/backend/app.py"
click node_settings "https://github.com/uvraj3927/restaurent-booking-system/blob/main/backend/config.py"
click node_seed "https://github.com/uvraj3927/restaurent-booking-system/blob/main/backend/seeds.py"
click node_orm "https://github.com/uvraj3927/restaurent-booking-system/blob/main/backend/extensions.py"
click node_models "https://github.com/uvraj3927/restaurent-booking-system/blob/main/backend/models.py"
click node_s3 "https://github.com/uvraj3927/restaurent-booking-system/blob/main/Infra/s3.tf"
click node_ec2 "https://github.com/uvraj3927/restaurent-booking-system/blob/main/Infra/main.tf"
click node_vpc "https://github.com/uvraj3927/restaurent-booking-system/blob/main/Infra/main.tf"
click node_public_subnet "https://github.com/uvraj3927/restaurent-booking-system/blob/main/Infra/main.tf"
click node_private_subnet "https://github.com/uvraj3927/restaurent-booking-system/blob/main/Infra/main.tf"
click node_security_groups "https://github.com/uvraj3927/restaurent-booking-system/blob/main/Infra/main.tf"
click node_rds "https://github.com/uvraj3927/restaurent-booking-system/blob/main/Infra/main.tf"

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_api_config toneBlue
class node_api,node_admin,node_app,node_settings,node_seed toneAmber
class node_orm,node_models,node_database toneMint
class node_s3,node_ec2,node_vpc,node_public_subnet,node_private_subnet,node_security_groups,node_rds toneRose
class node_guest toneIndigo
```

## Components

### Guest Web App

- [Menu & Booking UI](https://github.com/uvraj3927/restaurent-booking-system/blob/main/frontend/js/app.js): `frontend/js/app.js`
- [API Base Config](https://github.com/uvraj3927/restaurent-booking-system/blob/main/frontend/js/config.js): `frontend/js/config.js`

### Flask Application

- [Guest API](https://github.com/uvraj3927/restaurent-booking-system/blob/main/backend/routes/api.py): `backend/routes/api.py`
- [Admin API](https://github.com/uvraj3927/restaurent-booking-system/blob/main/backend/routes/admin.py): `backend/routes/admin.py`
- [Flask App Startup](https://github.com/uvraj3927/restaurent-booking-system/blob/main/backend/app.py): `backend/app.py`
- [App & DB Settings](https://github.com/uvraj3927/restaurent-booking-system/blob/main/backend/config.py): `backend/config.py`
- [Initial Menu & Tables](https://github.com/uvraj3927/restaurent-booking-system/blob/main/backend/seeds.py): `backend/seeds.py`

### Persistence

- [SQLAlchemy Extension](https://github.com/uvraj3927/restaurent-booking-system/blob/main/backend/extensions.py): `backend/extensions.py`
- [Menu, Table & Booking Models](https://github.com/uvraj3927/restaurent-booking-system/blob/main/backend/models.py): `backend/models.py`
- **Application Database**

### AWS Infrastructure

- [Static Frontend Hosting](https://github.com/uvraj3927/restaurent-booking-system/blob/main/Infra/s3.tf): `Infra/s3.tf`
- [API Server](https://github.com/uvraj3927/restaurent-booking-system/blob/main/Infra/main.tf): `Infra/main.tf`
- [Isolated VPC](https://github.com/uvraj3927/restaurent-booking-system/blob/main/Infra/main.tf): `Infra/main.tf`
- [Public Subnet](https://github.com/uvraj3927/restaurent-booking-system/blob/main/Infra/main.tf): `Infra/main.tf`
- [Private Subnet](https://github.com/uvraj3927/restaurent-booking-system/blob/main/Infra/main.tf): `Infra/main.tf`
- [Security Groups](https://github.com/uvraj3927/restaurent-booking-system/blob/main/Infra/main.tf): `Infra/main.tf`
- [Managed MySQL](https://github.com/uvraj3927/restaurent-booking-system/blob/main/Infra/main.tf): `Infra/main.tf`

### Other components

- **Guest**

## Connections

- Guest → Menu & Booking UI: uses (evidence: `README.md`)
- Menu & Booking UI → API Base Config: reads base URL (evidence: `frontend/js/app.js`)
- Menu & Booking UI → Guest API: requests menu, availability & bookings (evidence: `frontend/js/app.js`)
- Flask App Startup → Guest API: registers (evidence: `backend/app.py`)
- Flask App Startup → Admin API: registers (evidence: `backend/app.py`)
- Flask App Startup → App & DB Settings: loads (evidence: `backend/app.py`)
- Flask App Startup → SQLAlchemy Extension: initializes (evidence: `backend/app.py`)
- Flask App Startup → Menu, Table & Booking Models: imports (evidence: `backend/app.py`)
- Flask App Startup → Initial Menu & Tables: runs at startup (evidence: `backend/app.py`)
- Guest API → Menu, Table & Booking Models: queries & updates (evidence: `backend/routes/api.py`)
- Guest API → SQLAlchemy Extension: commits changes (evidence: `backend/routes/api.py`)
- Guest API → App & DB Settings: reads booking rules (evidence: `backend/routes/api.py`)
- Admin API → Menu, Table & Booking Models: queries & updates (evidence: `backend/routes/admin.py`)
- Admin API → SQLAlchemy Extension: commits changes (evidence: `backend/routes/admin.py`)
- Admin API → App & DB Settings: checks admin key (evidence: `backend/routes/admin.py`)
- Initial Menu & Tables → Menu, Table & Booking Models: creates initial records (evidence: `backend/seeds.py`)
- Initial Menu & Tables → SQLAlchemy Extension: commits records (evidence: `backend/seeds.py`)
- Menu, Table & Booking Models → SQLAlchemy Extension: defines ORM entities (evidence: `backend/models.py`)
- SQLAlchemy Extension → Application Database: persists records
- Static Frontend Hosting → Guest: serves frontend (evidence: `README.md`)
- Guest → API Server: calls Flask API (evidence: `README.md`)
- API Server → Managed MySQL: accesses database (evidence: `README.md`)
- Isolated VPC → Public Subnet: contains (evidence: `README.md`)
- Isolated VPC → Private Subnet: contains (evidence: `README.md`)
- Public Subnet → API Server: hosts (evidence: `README.md`)
- Private Subnet → Managed MySQL: hosts (evidence: `README.md`)
- Security Groups → Managed MySQL: restricts access (evidence: `README.md`)
