# jarus2004/shop_backend architecture

> Architecture diagram of the GitHub repository jarus2004/shop_backend, 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/jarus2004/shop_backend
- Repository: https://github.com/jarus2004/shop_backend

## Overview

Shop Backend is a Laravel e-commerce REST API for web and mobile clients, with a server-rendered admin area. The customer workflow is to register or log in, browse categories and products, then create, view, or cancel orders; order creation checks availability and price, records order items, and adjusts stock transactionally. Admins manage catalog data and order statuses. The graph follows documented routes and sampled controller/model relationships; unsampled view and request details are represented only where the tree or source index supports them.

Main entry points: [`app/Http/Controllers/Api/OrderController.php`](https://github.com/jarus2004/shop_backend/blob/main/app/Http/Controllers/Api/OrderController.php) (Order API), [`routes/api.php`](https://github.com/jarus2004/shop_backend/blob/main/routes/api.php) (API routes), [`app/Http/Controllers/Admin/AdminViewController.php`](https://github.com/jarus2004/shop_backend/blob/main/app/Http/Controllers/Admin/AdminViewController.php) (Admin page routing), [`config/database.php`](https://github.com/jarus2004/shop_backend/blob/main/config/database.php) (Relational database)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["HTTP entry points"]
  node_web_routes["Web routes<br/>[web.php]"]
  node_api_routes["API routes<br/>[api.php]"]
  node_admin_middleware["Admin authorization"]
end

subgraph group_api["Customer and admin API"]
  node_auth["Authentication<br/>[AuthController.php]"]
  node_categories["Category API"]
  node_products["Product API"]
  node_orders["Order API"]
  node_responses["JSON response helpers<br/>[ApiResponse.php]"]
  node_category_resource["Category representation"]
  node_product_resource["Product representation"]
  node_order_resource["Order representation<br/>[OrderResource.php]"]
  node_item_resource["Order item representation"]
  node_user_resource["User representation<br/>[UserResource.php]"]
end

subgraph group_domain["Commerce data"]
  node_users["Users<br/>[User.php]"]
  node_category_model["Categories<br/>[Category.php]"]
  node_product_model["Products<br/>[Product.php]"]
  node_order_model["Orders<br/>[Order.php]"]
  node_order_items["Order items<br/>[OrderItem.php]"]
  node_database[("Relational database<br/>[database.php]")]
  node_user_factory["User factory<br/>[UserFactory.php]"]
  node_shop_seeder["Shop seed data<br/>[ShopSeeder.php]"]
end

subgraph group_admin["Admin interface"]
  node_admin_views["Admin page routing"]
  node_admin_products["Product management page<br/>[index.blade.php]"]
  node_admin_categories["Category management page<br/>[index.blade.php]"]
  node_admin_orders["Order management page<br/>[index.blade.php]"]
  node_admin_login["Admin login page<br/>[login.blade.php]"]
end

node_customer(("Customer client"))
node_admin_user(("Admin user"))

node_customer -->|"calls API"| node_api_routes
node_admin_user -->|"opens admin"| node_web_routes
node_api_routes -->|"routes to"| node_auth
node_api_routes -->|"routes to"| node_categories
node_api_routes -->|"routes to"| node_products
node_api_routes -->|"routes to"| node_orders
node_web_routes -->|"routes to"| node_admin_views
node_web_routes -.->|"guards admin routes"| node_admin_middleware
node_admin_views -->|"renders"| node_admin_login
node_admin_views -->|"renders"| node_admin_products
node_admin_views -->|"renders"| node_admin_categories
node_admin_views -->|"renders"| node_admin_orders
node_auth -->|"creates and reads"| node_users
node_auth -->|"serializes"| node_user_resource
node_categories -->|"queries and updates"| node_category_model
node_categories -->|"serializes"| node_category_resource
node_products -->|"queries and updates"| node_product_model
node_products -->|"serializes"| node_product_resource
node_orders -->|"creates and updates"| node_order_model
node_orders -->|"creates and reads"| node_order_items
node_orders -->|"checks and adjusts stock"| node_product_model
node_orders -->|"serializes"| node_order_resource
node_order_resource -->|"renders items"| node_item_resource
node_product_resource -->|"renders category"| node_category_resource
node_auth -->|"formats responses"| node_responses
node_categories -->|"formats responses"| node_responses
node_products -->|"formats responses"| node_responses
node_orders -->|"formats responses"| node_responses
node_user_factory -->|"builds"| node_users
node_shop_seeder -->|"seeds"| node_users
node_shop_seeder -->|"seeds"| node_category_model
node_shop_seeder -->|"seeds"| node_product_model
node_users -.->|"persists via ORM"| node_database
node_category_model -.->|"persists via ORM"| node_database
node_product_model -.->|"persists via ORM"| node_database
node_order_model -.->|"persists via ORM"| node_database
node_order_items -.->|"persists via ORM"| node_database

click node_web_routes "https://github.com/jarus2004/shop_backend/blob/main/routes/web.php"
click node_api_routes "https://github.com/jarus2004/shop_backend/blob/main/routes/api.php"
click node_auth "https://github.com/jarus2004/shop_backend/blob/main/app/Http/Controllers/Api/AuthController.php"
click node_categories "https://github.com/jarus2004/shop_backend/blob/main/app/Http/Controllers/Api/CategoryController.php"
click node_products "https://github.com/jarus2004/shop_backend/blob/main/app/Http/Controllers/Api/ProductController.php"
click node_orders "https://github.com/jarus2004/shop_backend/blob/main/app/Http/Controllers/Api/OrderController.php"
click node_admin_views "https://github.com/jarus2004/shop_backend/blob/main/app/Http/Controllers/Admin/AdminViewController.php"
click node_admin_middleware "https://github.com/jarus2004/shop_backend/blob/main/app/Http/Middleware/AdminMiddleware.php"
click node_users "https://github.com/jarus2004/shop_backend/blob/main/app/Models/User.php"
click node_category_model "https://github.com/jarus2004/shop_backend/blob/main/app/Models/Category.php"
click node_product_model "https://github.com/jarus2004/shop_backend/blob/main/app/Models/Product.php"
click node_order_model "https://github.com/jarus2004/shop_backend/blob/main/app/Models/Order.php"
click node_order_items "https://github.com/jarus2004/shop_backend/blob/main/app/Models/OrderItem.php"
click node_database "https://github.com/jarus2004/shop_backend/blob/main/config/database.php"
click node_responses "https://github.com/jarus2004/shop_backend/blob/main/app/Http/Traits/ApiResponse.php"
click node_category_resource "https://github.com/jarus2004/shop_backend/blob/main/app/Http/Resources/CategoryResource.php"
click node_product_resource "https://github.com/jarus2004/shop_backend/blob/main/app/Http/Resources/ProductResource.php"
click node_order_resource "https://github.com/jarus2004/shop_backend/blob/main/app/Http/Resources/OrderResource.php"
click node_item_resource "https://github.com/jarus2004/shop_backend/blob/main/app/Http/Resources/OrderItemResource.php"
click node_user_resource "https://github.com/jarus2004/shop_backend/blob/main/app/Http/Resources/UserResource.php"
click node_admin_products "https://github.com/jarus2004/shop_backend/blob/main/resources/views/admin/products/index.blade.php"
click node_admin_categories "https://github.com/jarus2004/shop_backend/blob/main/resources/views/admin/categories/index.blade.php"
click node_admin_orders "https://github.com/jarus2004/shop_backend/blob/main/resources/views/admin/orders/index.blade.php"
click node_admin_login "https://github.com/jarus2004/shop_backend/blob/main/resources/views/admin/login.blade.php"
click node_user_factory "https://github.com/jarus2004/shop_backend/blob/main/database/factories/UserFactory.php"
click node_shop_seeder "https://github.com/jarus2004/shop_backend/blob/main/database/seeders/ShopSeeder.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_web_routes,node_api_routes,node_admin_middleware,node_customer,node_admin_user toneBlue
class node_auth,node_categories,node_products,node_orders,node_responses,node_category_resource,node_product_resource,node_order_resource,node_item_resource,node_user_resource toneAmber
class node_users,node_category_model,node_product_model,node_order_model,node_order_items,node_database,node_user_factory,node_shop_seeder toneMint
class node_admin_views,node_admin_products,node_admin_categories,node_admin_orders,node_admin_login toneRose
```

## Components

### HTTP entry points

- [Web routes](https://github.com/jarus2004/shop_backend/blob/main/routes/web.php): `routes/web.php`
- [API routes](https://github.com/jarus2004/shop_backend/blob/main/routes/api.php): `routes/api.php`
- [Admin authorization](https://github.com/jarus2004/shop_backend/blob/main/app/Http/Middleware/AdminMiddleware.php): `app/Http/Middleware/AdminMiddleware.php`

### Customer and admin API

- [Authentication](https://github.com/jarus2004/shop_backend/blob/main/app/Http/Controllers/Api/AuthController.php): `app/Http/Controllers/Api/AuthController.php`
- [Category API](https://github.com/jarus2004/shop_backend/blob/main/app/Http/Controllers/Api/CategoryController.php): `app/Http/Controllers/Api/CategoryController.php`
- [Product API](https://github.com/jarus2004/shop_backend/blob/main/app/Http/Controllers/Api/ProductController.php): `app/Http/Controllers/Api/ProductController.php`
- [Order API](https://github.com/jarus2004/shop_backend/blob/main/app/Http/Controllers/Api/OrderController.php): `app/Http/Controllers/Api/OrderController.php`
- [JSON response helpers](https://github.com/jarus2004/shop_backend/blob/main/app/Http/Traits/ApiResponse.php): `app/Http/Traits/ApiResponse.php`
- [Category representation](https://github.com/jarus2004/shop_backend/blob/main/app/Http/Resources/CategoryResource.php): `app/Http/Resources/CategoryResource.php`
- [Product representation](https://github.com/jarus2004/shop_backend/blob/main/app/Http/Resources/ProductResource.php): `app/Http/Resources/ProductResource.php`
- [Order representation](https://github.com/jarus2004/shop_backend/blob/main/app/Http/Resources/OrderResource.php): `app/Http/Resources/OrderResource.php`
- [Order item representation](https://github.com/jarus2004/shop_backend/blob/main/app/Http/Resources/OrderItemResource.php): `app/Http/Resources/OrderItemResource.php`
- [User representation](https://github.com/jarus2004/shop_backend/blob/main/app/Http/Resources/UserResource.php): `app/Http/Resources/UserResource.php`

### Commerce data

- [Users](https://github.com/jarus2004/shop_backend/blob/main/app/Models/User.php): `app/Models/User.php`
- [Categories](https://github.com/jarus2004/shop_backend/blob/main/app/Models/Category.php): `app/Models/Category.php`
- [Products](https://github.com/jarus2004/shop_backend/blob/main/app/Models/Product.php): `app/Models/Product.php`
- [Orders](https://github.com/jarus2004/shop_backend/blob/main/app/Models/Order.php): `app/Models/Order.php`
- [Order items](https://github.com/jarus2004/shop_backend/blob/main/app/Models/OrderItem.php): `app/Models/OrderItem.php`
- [Relational database](https://github.com/jarus2004/shop_backend/blob/main/config/database.php): `config/database.php`
- [User factory](https://github.com/jarus2004/shop_backend/blob/main/database/factories/UserFactory.php): `database/factories/UserFactory.php`
- [Shop seed data](https://github.com/jarus2004/shop_backend/blob/main/database/seeders/ShopSeeder.php): `database/seeders/ShopSeeder.php`

### Admin interface

- [Admin page routing](https://github.com/jarus2004/shop_backend/blob/main/app/Http/Controllers/Admin/AdminViewController.php): `app/Http/Controllers/Admin/AdminViewController.php`
- [Product management page](https://github.com/jarus2004/shop_backend/blob/main/resources/views/admin/products/index.blade.php): `resources/views/admin/products/index.blade.php`
- [Category management page](https://github.com/jarus2004/shop_backend/blob/main/resources/views/admin/categories/index.blade.php): `resources/views/admin/categories/index.blade.php`
- [Order management page](https://github.com/jarus2004/shop_backend/blob/main/resources/views/admin/orders/index.blade.php): `resources/views/admin/orders/index.blade.php`
- [Admin login page](https://github.com/jarus2004/shop_backend/blob/main/resources/views/admin/login.blade.php): `resources/views/admin/login.blade.php`

### Other components

- **Customer client**
- **Admin user**

## Connections

- Customer client → API routes: calls API (evidence: `README.md`)
- Admin user → Web routes: opens admin
- API routes → Authentication: routes to (evidence: `routes/api.php`)
- API routes → Category API: routes to (evidence: `routes/api.php`)
- API routes → Product API: routes to (evidence: `routes/api.php`)
- API routes → Order API: routes to (evidence: `routes/api.php`)
- Web routes → Admin page routing: routes to (evidence: `routes/web.php`)
- Web routes → Admin authorization: guards admin routes
- Admin page routing → Admin login page: renders (evidence: `app/Http/Controllers/Admin/AdminViewController.php`)
- Admin page routing → Product management page: renders (evidence: `app/Http/Controllers/Admin/AdminViewController.php`)
- Admin page routing → Category management page: renders (evidence: `app/Http/Controllers/Admin/AdminViewController.php`)
- Admin page routing → Order management page: renders (evidence: `app/Http/Controllers/Admin/AdminViewController.php`)
- Authentication → Users: creates and reads (evidence: `app/Http/Controllers/Api/AuthController.php`)
- Authentication → User representation: serializes (evidence: `app/Http/Controllers/Api/AuthController.php`)
- Category API → Categories: queries and updates (evidence: `app/Http/Controllers/Api/CategoryController.php`)
- Category API → Category representation: serializes (evidence: `app/Http/Controllers/Api/CategoryController.php`)
- Product API → Products: queries and updates (evidence: `app/Http/Controllers/Api/ProductController.php`)
- Product API → Product representation: serializes (evidence: `app/Http/Controllers/Api/ProductController.php`)
- Order API → Orders: creates and updates (evidence: `app/Http/Controllers/Api/OrderController.php`)
- Order API → Order items: creates and reads (evidence: `app/Http/Controllers/Api/OrderController.php`)
- Order API → Products: checks and adjusts stock (evidence: `app/Http/Controllers/Api/OrderController.php`)
- Order API → Order representation: serializes (evidence: `app/Http/Controllers/Api/OrderController.php`)
- Order representation → Order item representation: renders items (evidence: `app/Http/Resources/OrderResource.php`)
- Product representation → Category representation: renders category (evidence: `app/Http/Resources/ProductResource.php`)
- Authentication → JSON response helpers: formats responses (evidence: `app/Http/Controllers/Api/AuthController.php`)
- Category API → JSON response helpers: formats responses (evidence: `app/Http/Controllers/Api/CategoryController.php`)
- Product API → JSON response helpers: formats responses (evidence: `app/Http/Controllers/Api/ProductController.php`)
- Order API → JSON response helpers: formats responses (evidence: `app/Http/Controllers/Api/OrderController.php`)
- User factory → Users: builds (evidence: `database/factories/UserFactory.php`)
- Shop seed data → Users: seeds (evidence: `database/seeders/ShopSeeder.php`)
- Shop seed data → Categories: seeds (evidence: `database/seeders/ShopSeeder.php`)
- Shop seed data → Products: seeds (evidence: `database/seeders/ShopSeeder.php`)
- Users → Relational database: persists via ORM
- Categories → Relational database: persists via ORM
- Products → Relational database: persists via ORM
- Orders → Relational database: persists via ORM
- Order items → Relational database: persists via ORM
