# georgi-01/pizzeria-jetski-web-app-vms architecture

> Architecture diagram of the GitHub repository georgi-01/pizzeria-jetski-web-app-vms, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/georgi-01/pizzeria-jetski-web-app-vms
- Repository: https://github.com/georgi-01/pizzeria-jetski-web-app-vms

## Overview

Pizzeria Jetski is a web application with a React frontend and a NestJS backend backed by PostgreSQL. The principal visible workflow is a browser loading the frontend, reaching the router, and opening public or administrative pages. The tree also shows employee and manager page areas, though the sampled router does not connect them. On the server, startup initializes the application and seeds the database when needed; a separate health endpoint checks database connectivity. Backend request/data flows are based on sampled source; broader page capabilities are inferred from filenames and route declarations.

Main entry points: [`frontend/src/app/router/AppRouter.jsx`](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/app/router/AppRouter.jsx) (App router), [`backend/src/database-initializer/database-initializer.service.ts`](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/backend/src/database-initializer/database-initializer.service.ts) (Database initializer), [`backend/src/app.module.ts`](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/backend/src/app.module.ts) (Application module), [`backend/src/prisma/prisma.service.ts`](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/backend/src/prisma/prisma.service.ts) (Prisma client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web entry and navigation"]
  node_frontend_entry["Frontend entry<br/>[main.jsx]"]
  node_app["App shell<br/>[App.jsx]"]
  node_router["App router<br/>[AppRouter.jsx]"]
end

subgraph group_public["Public pages"]
  node_home["Home page<br/>[HomePage.jsx]"]
  node_login["Login page<br/>[LoginPage.jsx]"]
  node_error["Error pages<br/>[ErrorPage.jsx]"]
end

subgraph group_admin["Admin operations"]
  node_admin_control["Admin control panel"]
  node_admin_categories["Categories<br/>[CategoriesPage.jsx]"]
  node_admin_ingredients["Ingredients"]
  node_admin_inventory["Inventory<br/>[InventoryPage.jsx]"]
  node_admin_menu["Menu<br/>[MenuPage.jsx]"]
  node_admin_orders["Orders<br/>[OrdersPage.jsx]"]
  node_admin_promotions["Admin promotions<br/>[PromotionsPage.jsx]"]
  node_admin_employees["Admin employees<br/>[EmployeesPage.jsx]"]
  node_admin_system["System status<br/>[SystemPage.jsx]"]
end

subgraph group_staff["Employee and manager"]
  node_employee_tasks["Daily tasks<br/>[DailyTasksPage.jsx]"]
  node_employee_makeline["Make line<br/>[MakeLinePage.jsx]"]
  node_employee_promos["Employee promotions<br/>[PromotionsPage.jsx]"]
  node_employee_routing["Routing<br/>[RoutingPage.jsx]"]
  node_manager_archive["Archive<br/>[ArchivePage.jsx]"]
  node_manager_employees["Manager employees<br/>[EmployeesPage.jsx]"]
  node_manager_history["Order history"]
  node_manager_stats["Statistics<br/>[StatisticsPage.jsx]"]
end

subgraph group_server["Backend and database"]
  node_server_entry["Server bootstrap<br/>[main.ts]"]
  node_app_module["Application module<br/>[app.module.ts]"]
  node_health_controller["Health endpoint<br/>[app.controller.ts]"]
  node_health_service["Health check<br/>[app.service.ts]"]
  node_prisma_service["Prisma client<br/>[prisma.service.ts]"]
  node_initializer["Database initializer"]
  node_seed_reader["Seed file reader"]
  node_postgres[("PostgreSQL")]
end

node_browser(("Browser user"))

node_browser -->|"opens app"| node_frontend_entry
node_frontend_entry -->|"renders"| node_app
node_app -->|"renders"| node_router
node_router -->|"routes to"| node_home
node_router -->|"routes to"| node_login
node_router -->|"routes to"| node_error
node_router -->|"routes to"| node_admin_control
node_router -->|"routes to"| node_admin_categories
node_router -->|"routes to"| node_admin_ingredients
node_router -->|"routes to"| node_admin_inventory
node_router -->|"routes to"| node_admin_menu
node_router -->|"routes to"| node_admin_orders
node_router -->|"routes to"| node_admin_promotions
node_router -->|"routes to"| node_admin_employees
node_router -->|"routes to"| node_admin_system
node_server_entry -->|"starts"| node_app_module
node_app_module -->|"loads"| node_initializer
node_app_module -->|"registers"| node_health_controller
node_health_controller -->|"calls"| node_health_service
node_health_service -->|"checks connection"| node_prisma_service
node_initializer -->|"reads seed files"| node_seed_reader
node_seed_reader -->|"returns seed data"| node_initializer
node_initializer -->|"seeds transaction"| node_prisma_service
node_prisma_service -->|"queries"| node_postgres

click node_frontend_entry "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/main.jsx"
click node_app "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/App.jsx"
click node_router "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/app/router/AppRouter.jsx"
click node_home "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/public/Home/HomePage.jsx"
click node_login "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/public/Login/LoginPage.jsx"
click node_error "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/public/Error/ErrorPage.jsx"
click node_admin_control "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/admin/ControlPanel/ControlPanelPage.jsx"
click node_admin_categories "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/admin/Categories/CategoriesPage.jsx"
click node_admin_ingredients "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/admin/Ingredients/IngredientsPage.jsx"
click node_admin_inventory "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/admin/Inventory/InventoryPage.jsx"
click node_admin_menu "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/admin/Menu/MenuPage.jsx"
click node_admin_orders "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/admin/Orders/OrdersPage.jsx"
click node_admin_promotions "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/admin/Promotions/PromotionsPage.jsx"
click node_admin_employees "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/admin/Employees/EmployeesPage.jsx"
click node_admin_system "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/admin/System/SystemPage.jsx"
click node_employee_tasks "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/employee/DailyTasks/DailyTasksPage.jsx"
click node_employee_makeline "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/employee/MakeLine/MakeLinePage.jsx"
click node_employee_promos "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/employee/Promotions/PromotionsPage.jsx"
click node_employee_routing "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/employee/Routing/RoutingPage.jsx"
click node_manager_archive "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/manager/Archive/ArchivePage.jsx"
click node_manager_employees "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/manager/Employees/EmployeesPage.jsx"
click node_manager_history "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/manager/OrderHistory/OrderHistoryPage.jsx"
click node_manager_stats "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/manager/Statistics/StatisticsPage.jsx"
click node_server_entry "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/backend/src/main.ts"
click node_app_module "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/backend/src/app.module.ts"
click node_health_controller "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/backend/src/app.controller.ts"
click node_health_service "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/backend/src/app.service.ts"
click node_prisma_service "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/backend/src/prisma/prisma.service.ts"
click node_initializer "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/backend/src/database-initializer/database-initializer.service.ts"
click node_seed_reader "https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/backend/src/database-initializer/seed-file-reader.service.ts"

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_entry,node_app,node_router,node_browser toneBlue
class node_home,node_login,node_error toneAmber
class node_admin_control,node_admin_categories,node_admin_ingredients,node_admin_inventory,node_admin_menu,node_admin_orders,node_admin_promotions,node_admin_employees,node_admin_system toneMint
class node_employee_tasks,node_employee_makeline,node_employee_promos,node_employee_routing,node_manager_archive,node_manager_employees,node_manager_history,node_manager_stats toneRose
class node_server_entry,node_app_module,node_health_controller,node_health_service,node_prisma_service,node_initializer,node_seed_reader,node_postgres toneIndigo
```

## Components

### Web entry and navigation

- [Frontend entry](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/main.jsx): `frontend/src/main.jsx`
- [App shell](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [App router](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/app/router/AppRouter.jsx): `frontend/src/app/router/AppRouter.jsx`

### Public pages

- [Home page](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/public/Home/HomePage.jsx): `frontend/src/pages/public/Home/HomePage.jsx`
- [Login page](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/public/Login/LoginPage.jsx): `frontend/src/pages/public/Login/LoginPage.jsx`
- [Error pages](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/public/Error/ErrorPage.jsx): `frontend/src/pages/public/Error/ErrorPage.jsx`

### Admin operations

- [Admin control panel](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/admin/ControlPanel/ControlPanelPage.jsx): `frontend/src/pages/admin/ControlPanel/ControlPanelPage.jsx`
- [Categories](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/admin/Categories/CategoriesPage.jsx): `frontend/src/pages/admin/Categories/CategoriesPage.jsx`
- [Ingredients](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/admin/Ingredients/IngredientsPage.jsx): `frontend/src/pages/admin/Ingredients/IngredientsPage.jsx`
- [Inventory](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/admin/Inventory/InventoryPage.jsx): `frontend/src/pages/admin/Inventory/InventoryPage.jsx`
- [Menu](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/admin/Menu/MenuPage.jsx): `frontend/src/pages/admin/Menu/MenuPage.jsx`
- [Orders](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/admin/Orders/OrdersPage.jsx): `frontend/src/pages/admin/Orders/OrdersPage.jsx`
- [Admin promotions](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/admin/Promotions/PromotionsPage.jsx): `frontend/src/pages/admin/Promotions/PromotionsPage.jsx`
- [Admin employees](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/admin/Employees/EmployeesPage.jsx): `frontend/src/pages/admin/Employees/EmployeesPage.jsx`
- [System status](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/admin/System/SystemPage.jsx): `frontend/src/pages/admin/System/SystemPage.jsx`

### Employee and manager

- [Daily tasks](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/employee/DailyTasks/DailyTasksPage.jsx): `frontend/src/pages/employee/DailyTasks/DailyTasksPage.jsx`
- [Make line](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/employee/MakeLine/MakeLinePage.jsx): `frontend/src/pages/employee/MakeLine/MakeLinePage.jsx`
- [Employee promotions](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/employee/Promotions/PromotionsPage.jsx): `frontend/src/pages/employee/Promotions/PromotionsPage.jsx`
- [Routing](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/employee/Routing/RoutingPage.jsx): `frontend/src/pages/employee/Routing/RoutingPage.jsx`
- [Archive](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/manager/Archive/ArchivePage.jsx): `frontend/src/pages/manager/Archive/ArchivePage.jsx`
- [Manager employees](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/manager/Employees/EmployeesPage.jsx): `frontend/src/pages/manager/Employees/EmployeesPage.jsx`
- [Order history](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/manager/OrderHistory/OrderHistoryPage.jsx): `frontend/src/pages/manager/OrderHistory/OrderHistoryPage.jsx`
- [Statistics](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/frontend/src/pages/manager/Statistics/StatisticsPage.jsx): `frontend/src/pages/manager/Statistics/StatisticsPage.jsx`

### Backend and database

- [Server bootstrap](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/backend/src/main.ts): `backend/src/main.ts`
- [Application module](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/backend/src/app.module.ts): `backend/src/app.module.ts`
- [Health endpoint](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/backend/src/app.controller.ts): `backend/src/app.controller.ts`
- [Health check](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/backend/src/app.service.ts): `backend/src/app.service.ts`
- [Prisma client](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/backend/src/prisma/prisma.service.ts): `backend/src/prisma/prisma.service.ts`
- [Database initializer](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/backend/src/database-initializer/database-initializer.service.ts): `backend/src/database-initializer/database-initializer.service.ts`
- [Seed file reader](https://github.com/georgi-01/pizzeria-jetski-web-app-vms/blob/main/backend/src/database-initializer/seed-file-reader.service.ts): `backend/src/database-initializer/seed-file-reader.service.ts`
- **PostgreSQL**

### Other components

- **Browser user**

## Connections

- Browser user → Frontend entry: opens app
- Frontend entry → App shell: renders
- App shell → App router: renders
- App router → Home page: routes to
- App router → Login page: routes to
- App router → Error pages: routes to
- App router → Admin control panel: routes to
- App router → Categories: routes to
- App router → Ingredients: routes to
- App router → Inventory: routes to
- App router → Menu: routes to
- App router → Orders: routes to
- App router → Admin promotions: routes to
- App router → Admin employees: routes to
- App router → System status: routes to
- Server bootstrap → Application module: starts
- Application module → Database initializer: loads
- Application module → Health endpoint: registers
- Health endpoint → Health check: calls
- Health check → Prisma client: checks connection
- Database initializer → Seed file reader: reads seed files
- Seed file reader → Database initializer: returns seed data
- Database initializer → Prisma client: seeds transaction
- Prisma client → PostgreSQL: queries
