# tashinifaz/bd-all-pro architecture

> Architecture diagram of the GitHub repository tashinifaz/bd-all-pro, 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/tashinifaz/bd-all-pro
- Repository: https://github.com/tashinifaz/bd-all-pro

## Overview

BD ALL PRO is a server-rendered business-management app for gadget inventory and sales. An owner signs in through the Express server, then manages products and stock, records purchases or orders, handles delivery, settlement, returns and repairs, and reviews cash and profit reports. PostgreSQL holds business state; shared web handlers provide transactional form submissions, while shared views render pages. The README documents major business capabilities not fully visible in sampled code; those branches are included, with evidence limits reflected in the edges.

Main entry points: [`src/server.js`](https://github.com/tashinifaz/bd-all-pro/blob/main/src/server.js) (Express server), [`src/db.js`](https://github.com/tashinifaz/bd-all-pro/blob/main/src/db.js) (PostgreSQL), [`src/catalog.js`](https://github.com/tashinifaz/bd-all-pro/blob/main/src/catalog.js) (Products and stock), [`src/orders.js`](https://github.com/tashinifaz/bd-all-pro/blob/main/src/orders.js) (Orders and returns)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Web entry and access"]
  node_server["Express server<br/>[server.js]"]
  node_access["Login and access<br/>[access.js]"]
  node_web["Request handlers<br/>[web.js]"]
  node_compression["Response compression<br/>[gzip.js]"]
end

subgraph group_inventory["Catalog and inventory"]
  node_catalog["Products and stock<br/>[catalog.js]"]
  node_scanner["Camera scanning<br/>[scan.js]"]
  node_scanroutes["Serial lookup<br/>[scan.js]"]
end

subgraph group_transactions["Business operations"]
  node_purchases["Purchases and suppliers<br/>[purchases.js]"]
  node_orders["Orders and returns<br/>[orders.js]"]
  node_repairs["Repair tickets<br/>[ops.js]"]
  node_forms["Business forms<br/>[forms.js]"]
  node_settings["Account settings<br/>[settings.js]"]
end

subgraph group_insight["Reporting and presentation"]
  node_dashboard["Dashboard<br/>[dash.js]"]
  node_reports["Reports and exports<br/>[reports.js]"]
  node_views["HTML views<br/>[views.js]"]
end

subgraph group_persistence["Persistence"]
  node_businessrules["Stock and money rules<br/>[lib.js]"]
  node_database[("PostgreSQL<br/>[db.js]")]
  node_schema["Business schema<br/>[schema.sql]"]
  node_migrate["Schema migration<br/>[migrate.js]"]
  node_seed["Demo data<br/>[seed.js]"]
end

node_owner(("Owner"))
node_browser["Browser app<br/>[app.js]"]

node_owner -->|"uses"| node_server
node_server -->|"loads access"| node_access
node_server -->|"registers routes"| node_web
node_server -->|"installs middleware"| node_compression
node_server -->|"runs migration"| node_migrate
node_server -->|"optionally loads"| node_seed
node_access -->|"loads user"| node_database
node_server -->|"checks login"| node_database
node_server -->|"registers routes"| node_catalog
node_server -->|"registers routes"| node_purchases
node_server -->|"registers routes"| node_orders
node_server -->|"registers routes"| node_repairs
node_server -->|"registers routes"| node_forms
node_server -->|"registers routes"| node_settings
node_server -->|"registers routes"| node_dashboard
node_server -->|"registers reports"| node_reports
node_web -->|"runs transactions"| node_database
node_catalog -->|"uses handlers"| node_web
node_catalog -->|"moves stock"| node_businessrules
node_orders -->|"uses handlers"| node_web
node_orders -->|"moves stock"| node_businessrules
node_reports -->|"uses stock labels"| node_catalog
node_reports -->|"queries results"| node_database
node_migrate -->|"applies schema"| node_database
node_migrate -->|"reads schema"| node_schema
node_seed -->|"inserts demo data"| node_database
node_catalog -.->|"reads and writes"| node_database
node_purchases -.->|"records purchases"| node_database
node_orders -->|"records orders"| node_database
node_repairs -.->|"records repairs"| node_database
node_dashboard -.->|"reads metrics"| node_database
node_settings -.->|"stores preferences"| node_database
node_forms -.->|"supports form actions"| node_browser
node_browser -->|"loads on scan"| node_scanner
node_scanner -.->|"checks serials"| node_scanroutes
node_scanroutes -.->|"looks up serial"| node_database
node_web -->|"renders errors"| node_views
node_catalog -->|"renders pages"| node_views
node_orders -->|"renders pages"| node_views
node_reports -->|"renders reports"| node_views
node_browser -.->|"submits actions"| node_server

click node_server "https://github.com/tashinifaz/bd-all-pro/blob/main/src/server.js"
click node_access "https://github.com/tashinifaz/bd-all-pro/blob/main/src/access.js"
click node_web "https://github.com/tashinifaz/bd-all-pro/blob/main/src/web.js"
click node_catalog "https://github.com/tashinifaz/bd-all-pro/blob/main/src/catalog.js"
click node_purchases "https://github.com/tashinifaz/bd-all-pro/blob/main/src/purchases.js"
click node_orders "https://github.com/tashinifaz/bd-all-pro/blob/main/src/orders.js"
click node_repairs "https://github.com/tashinifaz/bd-all-pro/blob/main/src/ops.js"
click node_forms "https://github.com/tashinifaz/bd-all-pro/blob/main/src/forms.js"
click node_settings "https://github.com/tashinifaz/bd-all-pro/blob/main/src/settings.js"
click node_dashboard "https://github.com/tashinifaz/bd-all-pro/blob/main/src/dash.js"
click node_reports "https://github.com/tashinifaz/bd-all-pro/blob/main/src/reports.js"
click node_views "https://github.com/tashinifaz/bd-all-pro/blob/main/src/views.js"
click node_browser "https://github.com/tashinifaz/bd-all-pro/blob/main/public/app.js"
click node_scanner "https://github.com/tashinifaz/bd-all-pro/blob/main/public/scan.js"
click node_scanroutes "https://github.com/tashinifaz/bd-all-pro/blob/main/src/scan.js"
click node_businessrules "https://github.com/tashinifaz/bd-all-pro/blob/main/src/lib.js"
click node_database "https://github.com/tashinifaz/bd-all-pro/blob/main/src/db.js"
click node_schema "https://github.com/tashinifaz/bd-all-pro/blob/main/db/schema.sql"
click node_migrate "https://github.com/tashinifaz/bd-all-pro/blob/main/db/migrate.js"
click node_seed "https://github.com/tashinifaz/bd-all-pro/blob/main/db/seed.js"
click node_compression "https://github.com/tashinifaz/bd-all-pro/blob/main/src/gzip.js"

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_server,node_access,node_web,node_compression,node_browser toneBlue
class node_catalog,node_scanner,node_scanroutes toneAmber
class node_purchases,node_orders,node_repairs,node_forms,node_settings toneMint
class node_dashboard,node_reports,node_views toneRose
class node_businessrules,node_database,node_schema,node_migrate,node_seed,node_owner toneIndigo
```

## Components

### Web entry and access

- [Express server](https://github.com/tashinifaz/bd-all-pro/blob/main/src/server.js): `src/server.js`
- [Login and access](https://github.com/tashinifaz/bd-all-pro/blob/main/src/access.js): `src/access.js`
- [Request handlers](https://github.com/tashinifaz/bd-all-pro/blob/main/src/web.js): `src/web.js`
- [Response compression](https://github.com/tashinifaz/bd-all-pro/blob/main/src/gzip.js): `src/gzip.js`

### Catalog and inventory

- [Products and stock](https://github.com/tashinifaz/bd-all-pro/blob/main/src/catalog.js): `src/catalog.js`
- [Camera scanning](https://github.com/tashinifaz/bd-all-pro/blob/main/public/scan.js): `public/scan.js`
- [Serial lookup](https://github.com/tashinifaz/bd-all-pro/blob/main/src/scan.js): `src/scan.js`

### Business operations

- [Purchases and suppliers](https://github.com/tashinifaz/bd-all-pro/blob/main/src/purchases.js): `src/purchases.js`
- [Orders and returns](https://github.com/tashinifaz/bd-all-pro/blob/main/src/orders.js): `src/orders.js`
- [Repair tickets](https://github.com/tashinifaz/bd-all-pro/blob/main/src/ops.js): `src/ops.js`
- [Business forms](https://github.com/tashinifaz/bd-all-pro/blob/main/src/forms.js): `src/forms.js`
- [Account settings](https://github.com/tashinifaz/bd-all-pro/blob/main/src/settings.js): `src/settings.js`

### Reporting and presentation

- [Dashboard](https://github.com/tashinifaz/bd-all-pro/blob/main/src/dash.js): `src/dash.js`
- [Reports and exports](https://github.com/tashinifaz/bd-all-pro/blob/main/src/reports.js): `src/reports.js`
- [HTML views](https://github.com/tashinifaz/bd-all-pro/blob/main/src/views.js): `src/views.js`

### Persistence

- [Stock and money rules](https://github.com/tashinifaz/bd-all-pro/blob/main/src/lib.js): `src/lib.js`
- [PostgreSQL](https://github.com/tashinifaz/bd-all-pro/blob/main/src/db.js): `src/db.js`
- [Business schema](https://github.com/tashinifaz/bd-all-pro/blob/main/db/schema.sql): `db/schema.sql`
- [Schema migration](https://github.com/tashinifaz/bd-all-pro/blob/main/db/migrate.js): `db/migrate.js`
- [Demo data](https://github.com/tashinifaz/bd-all-pro/blob/main/db/seed.js): `db/seed.js`

### Other components

- **Owner**
- [Browser app](https://github.com/tashinifaz/bd-all-pro/blob/main/public/app.js): `public/app.js`

## Connections

- Owner → Express server: uses (evidence: `README.md`)
- Express server → Login and access: loads access (evidence: `src/server.js`)
- Express server → Request handlers: registers routes (evidence: `src/server.js`)
- Express server → Response compression: installs middleware (evidence: `src/server.js`)
- Express server → Schema migration: runs migration (evidence: `src/server.js`)
- Express server → Demo data: optionally loads (evidence: `src/server.js`)
- Login and access → PostgreSQL: loads user (evidence: `src/access.js`)
- Express server → PostgreSQL: checks login (evidence: `src/server.js`)
- Express server → Products and stock: registers routes (evidence: `src/server.js`)
- Express server → Purchases and suppliers: registers routes (evidence: `src/server.js`)
- Express server → Orders and returns: registers routes (evidence: `src/server.js`)
- Express server → Repair tickets: registers routes (evidence: `src/server.js`)
- Express server → Business forms: registers routes (evidence: `src/server.js`)
- Express server → Account settings: registers routes (evidence: `src/server.js`)
- Express server → Dashboard: registers routes (evidence: `src/server.js`)
- Express server → Reports and exports: registers reports (evidence: `src/server.js`)
- Request handlers → PostgreSQL: runs transactions (evidence: `src/web.js`)
- Products and stock → Request handlers: uses handlers (evidence: `src/catalog.js`)
- Products and stock → Stock and money rules: moves stock (evidence: `src/catalog.js`)
- Orders and returns → Request handlers: uses handlers (evidence: `src/orders.js`)
- Orders and returns → Stock and money rules: moves stock (evidence: `src/orders.js`)
- Reports and exports → Products and stock: uses stock labels (evidence: `src/reports.js`)
- Reports and exports → PostgreSQL: queries results (evidence: `src/reports.js`)
- Schema migration → PostgreSQL: applies schema (evidence: `db/migrate.js`)
- Schema migration → Business schema: reads schema (evidence: `db/migrate.js`)
- Demo data → PostgreSQL: inserts demo data (evidence: `db/seed.js`)
- Products and stock → PostgreSQL: reads and writes
- Purchases and suppliers → PostgreSQL: records purchases (evidence: `README.md`)
- Orders and returns → PostgreSQL: records orders (evidence: `src/orders.js`)
- Repair tickets → PostgreSQL: records repairs (evidence: `README.md`)
- Dashboard → PostgreSQL: reads metrics (evidence: `src/dash.js`)
- Account settings → PostgreSQL: stores preferences (evidence: `src/settings.js`)
- Business forms → Browser app: supports form actions (evidence: `README.md`)
- Browser app → Camera scanning: loads on scan (evidence: `README.md`)
- Camera scanning → Serial lookup: checks serials (evidence: `README.md`)
- Serial lookup → PostgreSQL: looks up serial (evidence: `src/scan.js`)
- Request handlers → HTML views: renders errors (evidence: `src/web.js`)
- Products and stock → HTML views: renders pages (evidence: `src/catalog.js`)
- Orders and returns → HTML views: renders pages (evidence: `src/orders.js`)
- Reports and exports → HTML views: renders reports (evidence: `src/reports.js`)
- Browser app → Express server: submits actions
