# padmanavamukhopadhyay/point-of-sale_inventory_system architecture

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

## Overview

TillTrack is a single-store POS and inventory application with a server-side Vaadin UI and shared PostgreSQL stock. The main workflow is cashier login, item entry by scanner/search or phone scan, payment confirmation, sale creation, and receipt generation. Owner workflows cover catalog and stock management, sales history and reports, staff and store settings. The README documents these capabilities; relationships below are documentation-backed, since most implementation files were not sampled.

Main entry points: [`src/main/java/com/sensei/posinventorysystem/sale/SaleService.java`](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/sale/SaleService.java) (Checkout and sales), [`src/main/java/com/sensei/posinventorysystem/ui`](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/tree/main/src/main/java/com/sensei/posinventorysystem/ui) (Vaadin application), [`src/main/java/com/sensei/posinventorysystem/sale/SaleRepository.java`](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/sale/SaleRepository.java) (Sales records), [`src/main/java/com/sensei/posinventorysystem/inventory/StockService.java`](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/inventory/StockService.java) (Stock management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Checkout experience"]
  node_vaadin["Vaadin application"]
  node_phone_scan["Phone barcode scan<br/>[ScanView.java]"]
  node_auth["Login and access control"]
end

subgraph group_commerce["Sales and inventory"]
  node_catalog["Product catalog"]
  node_categories["Category management"]
  node_stock["Stock management<br/>[StockService.java]"]
  node_checkout["Checkout and sales<br/>[SaleService.java]"]
  node_receipt["Receipt PDF"]
  node_history["Sales history"]
  node_reports["Revenue and profit reports<br/>[ReportService.java]"]
  node_stock_report["Stock report PDF"]
end

subgraph group_administration["Store administration"]
  node_staff["Cashier accounts and attendance"]
  node_access_links["LAN access links"]
  node_settings["Store settings"]
  node_anomaly["Stock anomaly review<br/>[SaleService.java]"]
end

subgraph group_platform["Persistence and operations"]
  node_sale_store[("Sales records")]
  node_backup["Database backups"]
  node_desktop["Windows desktop integration"]
  node_database[("PostgreSQL")]
end

node_cashier(("Cashier"))
node_owner(("Owner"))

node_cashier -->|"uses"| node_vaadin
node_owner -->|"uses"| node_vaadin
node_vaadin -->|"authenticates through"| node_auth
node_cashier -->|"scans from phone"| node_phone_scan
node_phone_scan -->|"adds scanned item"| node_checkout
node_vaadin -->|"supports checkout"| node_checkout
node_checkout -->|"looks up items"| node_catalog
node_checkout -->|"creates sale"| node_sale_store
node_checkout -->|"updates shared stock"| node_stock
node_checkout -->|"generates receipt"| node_receipt
node_owner -->|"manages products"| node_catalog
node_owner -->|"manages categories"| node_categories
node_owner -->|"restocks and writes off"| node_stock
node_owner -->|"exports stock report"| node_stock_report
node_owner -->|"reviews sales"| node_history
node_history -->|"reads sales"| node_sale_store
node_owner -->|"requests reports"| node_reports
node_reports -->|"reads sales data"| node_sale_store
node_owner -->|"manages accounts"| node_staff
node_owner -->|"shares LAN access"| node_access_links
node_owner -->|"configures store"| node_settings
node_checkout -->|"logs stock shortfall"| node_anomaly
node_owner -->|"reviews allowance"| node_anomaly
node_settings -.->|"persists settings"| node_database
node_stock -.->|"persists stock"| node_database
node_sale_store -.->|"stores sales"| node_database
node_desktop -->|"triggers backups"| node_backup
node_backup -->|"dumps database"| node_database

click node_vaadin "https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/tree/main/src/main/java/com/sensei/posinventorysystem/ui"
click node_phone_scan "https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/ui/ScanView.java"
click node_auth "https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/config/SecurityConfig.java"
click node_catalog "https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/product/ProductService.java"
click node_categories "https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/product/CategoryService.java"
click node_stock "https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/inventory/StockService.java"
click node_checkout "https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/sale/SaleService.java"
click node_sale_store "https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/sale/SaleRepository.java"
click node_receipt "https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/sale/ReceiptPdfService.java"
click node_history "https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/sale/SalesHistoryService.java"
click node_reports "https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/report/ReportService.java"
click node_staff "https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/tree/main/src/main/java/com/sensei/posinventorysystem/user"
click node_access_links "https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/settings/AccessLinkService.java"
click node_settings "https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/settings/StoreSettingsService.java"
click node_anomaly "https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/sale/SaleService.java"
click node_stock_report "https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/inventory/StockReportPdfService.java"
click node_backup "https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/backup/DatabaseBackupService.java"
click node_desktop "https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/desktop/DesktopIntegration.java"

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_vaadin,node_phone_scan,node_auth toneBlue
class node_catalog,node_categories,node_stock,node_checkout,node_receipt,node_history,node_reports,node_stock_report toneAmber
class node_staff,node_access_links,node_settings,node_anomaly toneMint
class node_sale_store,node_backup,node_desktop,node_database toneRose
class node_cashier,node_owner toneIndigo
```

## Components

### Checkout experience

- [Vaadin application](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/tree/main/src/main/java/com/sensei/posinventorysystem/ui): `src/main/java/com/sensei/posinventorysystem/ui`
- [Phone barcode scan](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/ui/ScanView.java): `src/main/java/com/sensei/posinventorysystem/ui/ScanView.java`
- [Login and access control](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/config/SecurityConfig.java): `src/main/java/com/sensei/posinventorysystem/config/SecurityConfig.java`

### Sales and inventory

- [Product catalog](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/product/ProductService.java): `src/main/java/com/sensei/posinventorysystem/product/ProductService.java`
- [Category management](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/product/CategoryService.java): `src/main/java/com/sensei/posinventorysystem/product/CategoryService.java`
- [Stock management](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/inventory/StockService.java): `src/main/java/com/sensei/posinventorysystem/inventory/StockService.java`
- [Checkout and sales](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/sale/SaleService.java): `src/main/java/com/sensei/posinventorysystem/sale/SaleService.java`
- [Receipt PDF](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/sale/ReceiptPdfService.java): `src/main/java/com/sensei/posinventorysystem/sale/ReceiptPdfService.java`
- [Sales history](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/sale/SalesHistoryService.java): `src/main/java/com/sensei/posinventorysystem/sale/SalesHistoryService.java`
- [Revenue and profit reports](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/report/ReportService.java): `src/main/java/com/sensei/posinventorysystem/report/ReportService.java`
- [Stock report PDF](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/inventory/StockReportPdfService.java): `src/main/java/com/sensei/posinventorysystem/inventory/StockReportPdfService.java`

### Store administration

- [Cashier accounts and attendance](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/tree/main/src/main/java/com/sensei/posinventorysystem/user): `src/main/java/com/sensei/posinventorysystem/user`
- [LAN access links](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/settings/AccessLinkService.java): `src/main/java/com/sensei/posinventorysystem/settings/AccessLinkService.java`
- [Store settings](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/settings/StoreSettingsService.java): `src/main/java/com/sensei/posinventorysystem/settings/StoreSettingsService.java`
- [Stock anomaly review](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/sale/SaleService.java): `src/main/java/com/sensei/posinventorysystem/sale/SaleService.java`

### Persistence and operations

- [Sales records](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/sale/SaleRepository.java): `src/main/java/com/sensei/posinventorysystem/sale/SaleRepository.java`
- [Database backups](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/backup/DatabaseBackupService.java): `src/main/java/com/sensei/posinventorysystem/backup/DatabaseBackupService.java`
- [Windows desktop integration](https://github.com/padmanavamukhopadhyay/point-of-sale_inventory_system/blob/main/src/main/java/com/sensei/posinventorysystem/desktop/DesktopIntegration.java): `src/main/java/com/sensei/posinventorysystem/desktop/DesktopIntegration.java`
- **PostgreSQL**

### Other components

- **Cashier**
- **Owner**

## Connections

- Cashier → Vaadin application: uses (evidence: `README.md`)
- Owner → Vaadin application: uses (evidence: `README.md`)
- Vaadin application → Login and access control: authenticates through (evidence: `README.md`)
- Cashier → Phone barcode scan: scans from phone (evidence: `README.md`)
- Phone barcode scan → Checkout and sales: adds scanned item (evidence: `README.md`)
- Vaadin application → Checkout and sales: supports checkout (evidence: `README.md`)
- Checkout and sales → Product catalog: looks up items (evidence: `README.md`)
- Checkout and sales → Sales records: creates sale (evidence: `README.md`)
- Checkout and sales → Stock management: updates shared stock (evidence: `README.md`)
- Checkout and sales → Receipt PDF: generates receipt (evidence: `README.md`)
- Owner → Product catalog: manages products (evidence: `README.md`)
- Owner → Category management: manages categories (evidence: `README.md`)
- Owner → Stock management: restocks and writes off (evidence: `README.md`)
- Owner → Stock report PDF: exports stock report (evidence: `README.md`)
- Owner → Sales history: reviews sales (evidence: `README.md`)
- Sales history → Sales records: reads sales (evidence: `README.md`)
- Owner → Revenue and profit reports: requests reports (evidence: `README.md`)
- Revenue and profit reports → Sales records: reads sales data (evidence: `README.md`)
- Owner → Cashier accounts and attendance: manages accounts (evidence: `README.md`)
- Owner → LAN access links: shares LAN access (evidence: `README.md`)
- Owner → Store settings: configures store (evidence: `README.md`)
- Checkout and sales → Stock anomaly review: logs stock shortfall (evidence: `README.md`)
- Owner → Stock anomaly review: reviews allowance (evidence: `README.md`)
- Store settings → PostgreSQL: persists settings
- Stock management → PostgreSQL: persists stock
- Sales records → PostgreSQL: stores sales
- Windows desktop integration → Database backups: triggers backups (evidence: `README.md`)
- Database backups → PostgreSQL: dumps database (evidence: `README.md`)
