# marco353-droid/project_potluck architecture

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

- Interactive diagram: https://gitdiagram.com/marco353-droid/project_potluck
- Repository: https://github.com/marco353-droid/project_potluck

## Overview

Potluck86 is a PHP restaurant ordering and operations site. Diners browse a table-specific menu, manage a browser-local cart, submit an order, and reach a success page; staff then monitor orders and update kitchen status. Admins manage menu availability and stock, toggle ordering, inspect orders, and view daily metrics. The shared MySQL database is accessed through PDO, with a helper for ordering-open state. Edges follow excerpted calls and SQL operations; unsampled login, success, and menu-management details are represented only where the tree and excerpts support them.

Main entry points: [`config/database.php`](https://github.com/marco353-droid/project_potluck/blob/main/config/database.php) (PDO connection), [`database/potluck86.sql`](https://github.com/marco353-droid/project_potluck/blob/main/database/potluck86.sql) (MySQL database), [`pages/menu.php`](https://github.com/marco353-droid/project_potluck/blob/main/pages/menu.php) (Browse menu), [`api/pesanan.php`](https://github.com/marco353-droid/project_potluck/blob/main/api/pesanan.php) (Order submission API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_diner["Diner ordering"]
  node_menu["Browse menu<br/>[menu.php]"]
  node_cart["Cart and checkout<br/>[keranjang.php]"]
  node_success["Order confirmation<br/>[sukses.php]"]
end

subgraph group_order["Order processing"]
  node_submit["Order submission API<br/>[pesanan.php]"]
  node_orders[("Order records<br/>[potluck86.sql]")]
  node_tracking["Order status API<br/>[get_status.php]"]
  node_statusapi["Ordering status API<br/>[status_pesanan.php]"]
end

subgraph group_operations["Staff operations"]
  node_kitchen["Kitchen queue<br/>[index.php]"]
  node_orderadmin["Order administration<br/>[pesanan.php]"]
  node_statusupdate["Status update API<br/>[update_status.php]"]
end

subgraph group_admin["Admin management"]
  node_dashboard["Operations dashboard<br/>[dashboard.php]"]
  node_menumgmt["Menu and stock<br/>[menu.php]"]
  node_login["Role login<br/>[login.php]"]
  node_logout["Logout<br/>[logout.php]"]
end

subgraph group_shared["Shared infrastructure"]
  node_dbconfig["PDO connection<br/>[database.php]"]
  node_orderstate["Ordering state helper<br/>[order_status.php]"]
  node_database[("MySQL database<br/>[potluck86.sql]")]
end

node_customer(("Diner"))

node_customer -->|"browses"| node_menu
node_menu -.->|"opens cart"| node_cart
node_cart -->|"posts order"| node_submit
node_submit -->|"redirects after success"| node_success
node_submit -->|"creates order"| node_orders
node_submit -->|"reads menu, writes order"| node_database
node_menu -->|"reads menu"| node_database
node_menu -->|"checks ordering state"| node_orderstate
node_cart -->|"polls status"| node_statusapi
node_statusapi -->|"gets open state"| node_orderstate
node_statusapi -->|"reads state"| node_database
node_customer -.->|"checks out"| node_cart
node_kitchen -->|"reads queue, updates status"| node_database
node_orderadmin -->|"reads orders"| node_database
node_dashboard -->|"toggles ordering"| node_orderstate
node_dashboard -->|"reads daily metrics"| node_database
node_menumgmt -->|"updates menu stock"| node_database
node_tracking -->|"reads order status"| node_database
node_statusupdate -->|"updates order status"| node_database
node_menu -->|"loads connection"| node_dbconfig
node_cart -->|"loads connection"| node_dbconfig
node_submit -->|"loads connection"| node_dbconfig
node_kitchen -->|"loads connection"| node_dbconfig
node_orderadmin -->|"loads connection"| node_dbconfig
node_dashboard -->|"loads connection"| node_dbconfig
node_menumgmt -->|"loads connection"| node_dbconfig
node_login -->|"loads connection"| node_dbconfig
node_tracking -->|"loads connection"| node_dbconfig
node_statusupdate -->|"loads connection"| node_dbconfig
node_success -.->|"checks status"| node_tracking

click node_menu "https://github.com/marco353-droid/project_potluck/blob/main/pages/menu.php"
click node_cart "https://github.com/marco353-droid/project_potluck/blob/main/pages/keranjang.php"
click node_success "https://github.com/marco353-droid/project_potluck/blob/main/pages/sukses.php"
click node_submit "https://github.com/marco353-droid/project_potluck/blob/main/api/pesanan.php"
click node_orders "https://github.com/marco353-droid/project_potluck/blob/main/database/potluck86.sql"
click node_tracking "https://github.com/marco353-droid/project_potluck/blob/main/api/get_status.php"
click node_statusapi "https://github.com/marco353-droid/project_potluck/blob/main/api/status_pesanan.php"
click node_kitchen "https://github.com/marco353-droid/project_potluck/blob/main/kitchen/index.php"
click node_orderadmin "https://github.com/marco353-droid/project_potluck/blob/main/admin/pesanan.php"
click node_statusupdate "https://github.com/marco353-droid/project_potluck/blob/main/api/update_status.php"
click node_dashboard "https://github.com/marco353-droid/project_potluck/blob/main/admin/dashboard.php"
click node_menumgmt "https://github.com/marco353-droid/project_potluck/blob/main/admin/menu.php"
click node_login "https://github.com/marco353-droid/project_potluck/blob/main/pages/login.php"
click node_logout "https://github.com/marco353-droid/project_potluck/blob/main/pages/logout.php"
click node_dbconfig "https://github.com/marco353-droid/project_potluck/blob/main/config/database.php"
click node_orderstate "https://github.com/marco353-droid/project_potluck/blob/main/config/order_status.php"
click node_database "https://github.com/marco353-droid/project_potluck/blob/main/database/potluck86.sql"

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_menu,node_cart,node_success toneBlue
class node_submit,node_orders,node_tracking,node_statusapi toneAmber
class node_kitchen,node_orderadmin,node_statusupdate toneMint
class node_dashboard,node_menumgmt,node_login,node_logout toneRose
class node_dbconfig,node_orderstate,node_database,node_customer toneIndigo
```

## Components

### Diner ordering

- [Browse menu](https://github.com/marco353-droid/project_potluck/blob/main/pages/menu.php): `pages/menu.php`
- [Cart and checkout](https://github.com/marco353-droid/project_potluck/blob/main/pages/keranjang.php): `pages/keranjang.php`
- [Order confirmation](https://github.com/marco353-droid/project_potluck/blob/main/pages/sukses.php): `pages/sukses.php`

### Order processing

- [Order submission API](https://github.com/marco353-droid/project_potluck/blob/main/api/pesanan.php): `api/pesanan.php`
- [Order records](https://github.com/marco353-droid/project_potluck/blob/main/database/potluck86.sql): `database/potluck86.sql`
- [Order status API](https://github.com/marco353-droid/project_potluck/blob/main/api/get_status.php): `api/get_status.php`
- [Ordering status API](https://github.com/marco353-droid/project_potluck/blob/main/api/status_pesanan.php): `api/status_pesanan.php`

### Staff operations

- [Kitchen queue](https://github.com/marco353-droid/project_potluck/blob/main/kitchen/index.php): `kitchen/index.php`
- [Order administration](https://github.com/marco353-droid/project_potluck/blob/main/admin/pesanan.php): `admin/pesanan.php`
- [Status update API](https://github.com/marco353-droid/project_potluck/blob/main/api/update_status.php): `api/update_status.php`

### Admin management

- [Operations dashboard](https://github.com/marco353-droid/project_potluck/blob/main/admin/dashboard.php): `admin/dashboard.php`
- [Menu and stock](https://github.com/marco353-droid/project_potluck/blob/main/admin/menu.php): `admin/menu.php`
- [Role login](https://github.com/marco353-droid/project_potluck/blob/main/pages/login.php): `pages/login.php`
- [Logout](https://github.com/marco353-droid/project_potluck/blob/main/pages/logout.php): `pages/logout.php`

### Shared infrastructure

- [PDO connection](https://github.com/marco353-droid/project_potluck/blob/main/config/database.php): `config/database.php`
- [Ordering state helper](https://github.com/marco353-droid/project_potluck/blob/main/config/order_status.php): `config/order_status.php`
- [MySQL database](https://github.com/marco353-droid/project_potluck/blob/main/database/potluck86.sql): `database/potluck86.sql`

### Other components

- **Diner**

## Connections

- Diner → Browse menu: browses (evidence: `README.md`)
- Browse menu → Cart and checkout: opens cart
- Cart and checkout → Order submission API: posts order (evidence: `pages/keranjang.php`)
- Order submission API → Order confirmation: redirects after success
- Order submission API → Order records: creates order (evidence: `api/pesanan.php`)
- Order submission API → MySQL database: reads menu, writes order (evidence: `api/pesanan.php`)
- Browse menu → MySQL database: reads menu (evidence: `pages/menu.php`)
- Browse menu → Ordering state helper: checks ordering state (evidence: `pages/menu.php`)
- Cart and checkout → Ordering status API: polls status (evidence: `pages/keranjang.php`)
- Ordering status API → Ordering state helper: gets open state (evidence: `api/status_pesanan.php`)
- Ordering status API → MySQL database: reads state
- Diner → Cart and checkout: checks out
- Kitchen queue → MySQL database: reads queue, updates status (evidence: `kitchen/index.php`)
- Order administration → MySQL database: reads orders (evidence: `admin/pesanan.php`)
- Operations dashboard → Ordering state helper: toggles ordering (evidence: `admin/dashboard.php`)
- Operations dashboard → MySQL database: reads daily metrics (evidence: `admin/dashboard.php`)
- Menu and stock → MySQL database: updates menu stock (evidence: `admin/menu.php`)
- Order status API → MySQL database: reads order status (evidence: `api/get_status.php`)
- Status update API → MySQL database: updates order status (evidence: `api/update_status.php`)
- Browse menu → PDO connection: loads connection (evidence: `pages/menu.php`)
- Cart and checkout → PDO connection: loads connection (evidence: `pages/keranjang.php`)
- Order submission API → PDO connection: loads connection (evidence: `api/pesanan.php`)
- Kitchen queue → PDO connection: loads connection (evidence: `kitchen/index.php`)
- Order administration → PDO connection: loads connection (evidence: `admin/pesanan.php`)
- Operations dashboard → PDO connection: loads connection (evidence: `admin/dashboard.php`)
- Menu and stock → PDO connection: loads connection (evidence: `admin/menu.php`)
- Role login → PDO connection: loads connection (evidence: `pages/login.php`)
- Order status API → PDO connection: loads connection (evidence: `api/get_status.php`)
- Status update API → PDO connection: loads connection (evidence: `api/update_status.php`)
- Order confirmation → Order status API: checks status
