# ch-israr/glink-website architecture

> Architecture diagram of the GitHub repository ch-israr/glink-website, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ch-israr/glink-website
- Repository: https://github.com/ch-israr/glink-website

## Overview

Globe Link International is a UAE moving and Sharjah-based storage website, served by one FastAPI application with a SQLite-backed content, enquiry, and admin system. Visitors browse service and storage pages, choose a unit size, submit a quote/contact enquiry, and are directed to WhatsApp; the enquiry is also saved. Administrators sign in to manage sizes, FAQ, business details, and enquiries. The README documents the full page and API scope; sampled source confirms the main storage, authentication, rate-limit, and browser-form behavior, though some route details were not excerpted.

Main entry points: [`app/main.py`](https://github.com/ch-israr/glink-website/blob/main/app/main.py) (Admin Routes), [`app/db.py`](https://github.com/ch-israr/glink-website/blob/main/app/db.py) (SQLite Database), [`static/js/site.js`](https://github.com/ch-israr/glink-website/blob/main/static/js/site.js) (Site Interactions), [`static/js/admin.js`](https://github.com/ch-israr/glink-website/blob/main/static/js/admin.js) (Admin Dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public Website"]
  node_public_pages["Service Pages"]
  node_booking["Booking Pages<br/>[book.html]"]
  node_site_js["Site Interactions<br/>[site.js]"]
  node_web_app["FastAPI Routes<br/>[main.py]"]
  node_content_api["Content API<br/>[main.py]"]
end

subgraph group_lead["Enquiries"]
  node_lead_flow["Lead Submission<br/>[main.py]"]
  node_whatsapp["WhatsApp"]
end

subgraph group_admin["Administration"]
  node_admin_ui["Admin Dashboard<br/>[admin.js]"]
  node_admin_routes["Admin Routes<br/>[main.py]"]
  node_authentication["Session Authentication<br/>[auth.py]"]
  node_rate_limit["Rate Limiting<br/>[ratelimit.py]"]
end

subgraph group_data["Application Data"]
  node_sqlite[("SQLite Database<br/>[db.py]")]
end

node_visitor(("Visitor"))

node_visitor -->|"requests pages"| node_web_app
node_web_app -->|"renders pages"| node_public_pages
node_web_app -->|"renders booking"| node_booking
node_visitor -.->|"uses site"| node_site_js
node_site_js -->|"fetches content"| node_content_api
node_content_api -->|"reads content"| node_sqlite
node_site_js -->|"posts enquiry"| node_lead_flow
node_lead_flow -->|"saves enquiry"| node_sqlite
node_site_js -->|"opens message"| node_whatsapp
node_admin_ui -->|"loads content"| node_content_api
node_admin_ui -->|"updates records"| node_admin_routes
node_admin_routes -->|"checks session"| node_authentication
node_admin_routes -->|"checks limits"| node_rate_limit
node_authentication -->|"manages sessions"| node_sqlite
node_admin_routes -->|"manages content"| node_sqlite
node_admin_routes -->|"manages enquiries"| node_sqlite

click node_public_pages "https://github.com/ch-israr/glink-website/tree/main/templates"
click node_booking "https://github.com/ch-israr/glink-website/blob/main/templates/book.html"
click node_site_js "https://github.com/ch-israr/glink-website/blob/main/static/js/site.js"
click node_web_app "https://github.com/ch-israr/glink-website/blob/main/app/main.py"
click node_lead_flow "https://github.com/ch-israr/glink-website/blob/main/app/main.py"
click node_admin_ui "https://github.com/ch-israr/glink-website/blob/main/static/js/admin.js"
click node_admin_routes "https://github.com/ch-israr/glink-website/blob/main/app/main.py"
click node_authentication "https://github.com/ch-israr/glink-website/blob/main/app/auth.py"
click node_rate_limit "https://github.com/ch-israr/glink-website/blob/main/app/ratelimit.py"
click node_sqlite "https://github.com/ch-israr/glink-website/blob/main/app/db.py"
click node_content_api "https://github.com/ch-israr/glink-website/blob/main/app/main.py"

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_public_pages,node_booking,node_site_js,node_web_app,node_content_api toneBlue
class node_lead_flow,node_whatsapp toneAmber
class node_admin_ui,node_admin_routes,node_authentication,node_rate_limit toneMint
class node_sqlite toneRose
class node_visitor toneIndigo
```

## Components

### Public Website

- [Service Pages](https://github.com/ch-israr/glink-website/tree/main/templates): `templates`
- [Booking Pages](https://github.com/ch-israr/glink-website/blob/main/templates/book.html): `templates/book.html`
- [Site Interactions](https://github.com/ch-israr/glink-website/blob/main/static/js/site.js): `static/js/site.js`
- [FastAPI Routes](https://github.com/ch-israr/glink-website/blob/main/app/main.py): `app/main.py`
- [Content API](https://github.com/ch-israr/glink-website/blob/main/app/main.py): `app/main.py`

### Enquiries

- [Lead Submission](https://github.com/ch-israr/glink-website/blob/main/app/main.py): `app/main.py`
- **WhatsApp**

### Administration

- [Admin Dashboard](https://github.com/ch-israr/glink-website/blob/main/static/js/admin.js): `static/js/admin.js`
- [Admin Routes](https://github.com/ch-israr/glink-website/blob/main/app/main.py): `app/main.py`
- [Session Authentication](https://github.com/ch-israr/glink-website/blob/main/app/auth.py): `app/auth.py`
- [Rate Limiting](https://github.com/ch-israr/glink-website/blob/main/app/ratelimit.py): `app/ratelimit.py`

### Application Data

- [SQLite Database](https://github.com/ch-israr/glink-website/blob/main/app/db.py): `app/db.py`

### Other components

- **Visitor**

## Connections

- Visitor → FastAPI Routes: requests pages (evidence: `README.md`)
- FastAPI Routes → Service Pages: renders pages (evidence: `app/main.py`)
- FastAPI Routes → Booking Pages: renders booking (evidence: `app/main.py`)
- Visitor → Site Interactions: uses site
- Site Interactions → Content API: fetches content (evidence: `static/js/site.js`)
- Content API → SQLite Database: reads content (evidence: `app/main.py`)
- Site Interactions → Lead Submission: posts enquiry (evidence: `static/js/site.js`)
- Lead Submission → SQLite Database: saves enquiry (evidence: `README.md`)
- Site Interactions → WhatsApp: opens message (evidence: `static/js/site.js`)
- Admin Dashboard → Content API: loads content (evidence: `static/js/admin.js`)
- Admin Dashboard → Admin Routes: updates records (evidence: `static/js/admin.js`)
- Admin Routes → Session Authentication: checks session (evidence: `app/main.py`)
- Admin Routes → Rate Limiting: checks limits (evidence: `app/main.py`)
- Session Authentication → SQLite Database: manages sessions (evidence: `app/auth.py`)
- Admin Routes → SQLite Database: manages content (evidence: `app/main.py`)
- Admin Routes → SQLite Database: manages enquiries (evidence: `README.md`)
