# nutt99/restaurant-bi-backend-laravel architecture

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

- Interactive diagram: https://gitdiagram.com/nutt99/restaurant-bi-backend-laravel
- Repository: https://github.com/nutt99/restaurant-bi-backend-laravel

## Overview

This repository implements a restaurant sales and business-intelligence application: users manage menu items, record transactions, and inspect sales summaries and reports. The main request path is API client → Laravel routes → controller actions → Eloquent models and database; transaction creation calculates totals and persists both the transaction and its items. Dashboard analytics and report exports are separate read-oriented capabilities. The README is only Laravel boilerplate, so product capabilities are inferred from sampled controllers and the source index; frontend behavior and detailed route middleware are not shown.

Main entry points: [`routes/api.php`](https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/routes/api.php) (API Routes), [`app/Models/Transaction.php`](https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Models/Transaction.php) (Transaction), [`app/Http/Controllers/TransactionController.php`](https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Http/Controllers/TransactionController.php) (Transaction Handling), [`app/Http/Controllers/ReportController.php`](https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Http/Controllers/ReportController.php) (Reports and Exports)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["API and Access"]
  node_api_routes["API Routes<br/>[api.php]"]
  node_auth["Authentication<br/>[AuthController.php]"]
  node_roles["Role Middleware<br/>[CheckRole.php]"]
end

subgraph group_sales["Restaurant Sales"]
  node_menu_api["Menu Management<br/>[MenuController.php]"]
  node_transaction_api["Transaction Handling"]
end

subgraph group_insights["Sales Intelligence"]
  node_dashboard["Dashboard Metrics"]
  node_reporting["Reports and Exports"]
  node_export_view["Sales Export View<br/>[sales.blade.php]"]
end

subgraph group_domain["Domain and Persistence"]
  node_user["User Account<br/>[User.php]"]
  node_menu["Menu Item<br/>[Menu.php]"]
  node_transaction["Transaction<br/>[Transaction.php]"]
  node_transaction_item["Transaction Item"]
  node_database[("Application Database")]
end

node_client(("API Client"))
node_pdf["PDF Exporter"]
node_excel["Excel Exporter"]

node_client -->|"sends requests"| node_api_routes
node_api_routes -->|"routes to"| node_auth
node_api_routes -->|"routes to"| node_menu_api
node_api_routes -->|"routes to"| node_transaction_api
node_api_routes -->|"routes to"| node_dashboard
node_api_routes -->|"routes to"| node_reporting
node_auth -->|"authenticates users"| node_user
node_menu_api -->|"reads and writes"| node_menu
node_transaction_api -->|"loads prices"| node_menu
node_transaction_api -->|"validates user"| node_user
node_transaction_api -->|"creates and reads"| node_transaction
node_transaction_api -->|"creates items"| node_transaction_item
node_dashboard -->|"aggregates sales"| node_transaction
node_dashboard -->|"ranks menu sales"| node_transaction_item
node_reporting -->|"queries report data"| node_transaction
node_reporting -->|"renders exports"| node_export_view
node_reporting -->|"downloads PDF"| node_pdf
node_reporting -->|"downloads workbook"| node_excel
node_transaction -->|"has many"| node_transaction_item
node_transaction_item -->|"belongs to"| node_menu
node_transaction -->|"belongs to"| node_user
node_transaction -.->|"persists records"| node_database
node_transaction_item -.->|"persists records"| node_database
node_menu -.->|"persists records"| node_database
node_user -.->|"persists records"| node_database
node_api_routes -.->|"may apply roles"| node_roles

click node_api_routes "https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/routes/api.php"
click node_auth "https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Http/Controllers/AuthController.php"
click node_roles "https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Http/Middleware/CheckRole.php"
click node_menu_api "https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Http/Controllers/MenuController.php"
click node_transaction_api "https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Http/Controllers/TransactionController.php"
click node_dashboard "https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Http/Controllers/DashboardController.php"
click node_reporting "https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Http/Controllers/ReportController.php"
click node_export_view "https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/resources/views/sales.blade.php"
click node_user "https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Models/User.php"
click node_menu "https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Models/Menu.php"
click node_transaction "https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Models/Transaction.php"
click node_transaction_item "https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Models/TransactionItem.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_api_routes,node_auth,node_roles,node_client toneBlue
class node_menu_api,node_transaction_api toneAmber
class node_dashboard,node_reporting,node_export_view toneMint
class node_user,node_menu,node_transaction,node_transaction_item,node_database toneRose
class node_pdf,node_excel toneIndigo
```

## Components

### API and Access

- [API Routes](https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/routes/api.php): `routes/api.php`
- [Authentication](https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Http/Controllers/AuthController.php): `app/Http/Controllers/AuthController.php`
- [Role Middleware](https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Http/Middleware/CheckRole.php): `app/Http/Middleware/CheckRole.php`

### Restaurant Sales

- [Menu Management](https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Http/Controllers/MenuController.php): `app/Http/Controllers/MenuController.php`
- [Transaction Handling](https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Http/Controllers/TransactionController.php): `app/Http/Controllers/TransactionController.php`

### Sales Intelligence

- [Dashboard Metrics](https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Http/Controllers/DashboardController.php): `app/Http/Controllers/DashboardController.php`
- [Reports and Exports](https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Http/Controllers/ReportController.php): `app/Http/Controllers/ReportController.php`
- [Sales Export View](https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/resources/views/sales.blade.php): `resources/views/sales.blade.php`

### Domain and Persistence

- [User Account](https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Models/User.php): `app/Models/User.php`
- [Menu Item](https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Models/Menu.php): `app/Models/Menu.php`
- [Transaction](https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Models/Transaction.php): `app/Models/Transaction.php`
- [Transaction Item](https://github.com/nutt99/restaurant-bi-backend-laravel/blob/master/app/Models/TransactionItem.php): `app/Models/TransactionItem.php`
- **Application Database**

### Other components

- **API Client**
- **PDF Exporter**
- **Excel Exporter**

## Connections

- API Client → API Routes: sends requests (evidence: `routes/api.php`)
- API Routes → Authentication: routes to (evidence: `routes/api.php`)
- API Routes → Menu Management: routes to (evidence: `routes/api.php`)
- API Routes → Transaction Handling: routes to (evidence: `routes/api.php`)
- API Routes → Dashboard Metrics: routes to (evidence: `routes/api.php`)
- API Routes → Reports and Exports: routes to (evidence: `routes/api.php`)
- Authentication → User Account: authenticates users (evidence: `app/Http/Controllers/AuthController.php`)
- Menu Management → Menu Item: reads and writes (evidence: `app/Http/Controllers/MenuController.php`)
- Transaction Handling → Menu Item: loads prices (evidence: `app/Http/Controllers/TransactionController.php`)
- Transaction Handling → User Account: validates user (evidence: `app/Http/Controllers/TransactionController.php`)
- Transaction Handling → Transaction: creates and reads (evidence: `app/Http/Controllers/TransactionController.php`)
- Transaction Handling → Transaction Item: creates items (evidence: `app/Http/Controllers/TransactionController.php`)
- Dashboard Metrics → Transaction: aggregates sales (evidence: `app/Http/Controllers/DashboardController.php`)
- Dashboard Metrics → Transaction Item: ranks menu sales (evidence: `app/Http/Controllers/DashboardController.php`)
- Reports and Exports → Transaction: queries report data (evidence: `app/Http/Controllers/ReportController.php`)
- Reports and Exports → Sales Export View: renders exports (evidence: `app/Http/Controllers/ReportController.php`)
- Reports and Exports → PDF Exporter: downloads PDF (evidence: `app/Http/Controllers/ReportController.php`)
- Reports and Exports → Excel Exporter: downloads workbook (evidence: `app/Http/Controllers/ReportController.php`)
- Transaction → Transaction Item: has many (evidence: `app/Models/Transaction.php`)
- Transaction Item → Menu Item: belongs to (evidence: `app/Models/TransactionItem.php`)
- Transaction → User Account: belongs to (evidence: `app/Models/Transaction.php`)
- Transaction → Application Database: persists records
- Transaction Item → Application Database: persists records
- Menu Item → Application Database: persists records
- User Account → Application Database: persists records
- API Routes → Role Middleware: may apply roles
