# mdavidjeremiah/dbms-project architecture

> Architecture diagram of the GitHub repository mdavidjeremiah/dbms-project, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mdavidjeremiah/dbms-project
- Repository: https://github.com/mdavidjeremiah/dbms-project

## Overview

Hardware World is a retail operations application for browser-based staff workflows. Users authenticate, then manage organisation and staff, catalogue and suppliers, purchase orders, sales, payroll, and ledger records; the FastAPI routes enforce role permissions and persist business data through SQLAlchemy to MySQL. The README also documents local OpenAPI/Swagger documentation. Frontend module wiring and several backend route implementations were not sampled, so the graph groups those documented capabilities without asserting detailed internal calls between them.

Main entry points: [`backend/main.py`](https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/main.py) (FastAPI routes), [`backend/database.py`](https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/database.py) (DB sessions), [`frontend`](https://github.com/mdavidjeremiah/dbms-project/tree/main/frontend) (Application pages), [`frontend/assets/js/api.js`](https://github.com/mdavidjeremiah/dbms-project/blob/main/frontend/assets/js/api.js) (API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Browser application"]
  node_browser["Browser"]
  node_webui["Application pages"]
  node_webapi["API client<br/>[api.js]"]
  node_webauth["Login UI<br/>[auth.js]"]
end

subgraph group_service["API service"]
  node_fastapi["FastAPI routes<br/>[main.py]"]
  node_auth["JWT and RBAC<br/>[auth.py]"]
  node_schemas["Request models<br/>[schemas.py]"]
  node_docs["API documentation"]
end

subgraph group_domain["Retail operations"]
  node_organisation["Organisation and staff<br/>[main.py]"]
  node_catalogue["Products and suppliers<br/>[main.py]"]
  node_procurement["Purchase orders<br/>[main.py]"]
  node_sales["Sales operations<br/>[main.py]"]
  node_payroll["Payroll processing<br/>[main.py]"]
  node_ledger["Financial ledger<br/>[main.py]"]
end

subgraph group_persistence["Persistence"]
  node_orm["SQLAlchemy entities<br/>[models.py]"]
  node_database["DB sessions<br/>[database.py]"]
end

node_staff(("Staff user"))
node_mysql[("MySQL database")]

node_staff -->|"uses"| node_browser
node_browser -->|"opens pages"| node_webui
node_webui -->|"signs in"| node_webauth
node_webui -->|"requests data"| node_webapi
node_webapi -->|"calls REST API"| node_fastapi
node_webauth -->|"submits login"| node_fastapi
node_fastapi -->|"authenticates"| node_auth
node_auth -->|"loads user"| node_database
node_fastapi -->|"validates payloads"| node_schemas
node_fastapi -->|"handles requests"| node_organisation
node_fastapi -->|"handles requests"| node_catalogue
node_fastapi -->|"handles requests"| node_procurement
node_fastapi -->|"handles requests"| node_sales
node_fastapi -->|"handles requests"| node_payroll
node_fastapi -->|"handles requests"| node_ledger
node_fastapi -->|"serves UI"| node_docs
node_organisation -->|"queries and writes"| node_database
node_catalogue -->|"queries and writes"| node_database
node_procurement -->|"queries and writes"| node_database
node_sales -->|"queries and writes"| node_database
node_payroll -->|"queries and writes"| node_database
node_ledger -->|"queries and writes"| node_database
node_database -->|"uses mappings"| node_orm
node_database -->|"persists data"| node_mysql

click node_webui "https://github.com/mdavidjeremiah/dbms-project/tree/main/frontend"
click node_webapi "https://github.com/mdavidjeremiah/dbms-project/blob/main/frontend/assets/js/api.js"
click node_webauth "https://github.com/mdavidjeremiah/dbms-project/blob/main/frontend/assets/js/auth.js"
click node_fastapi "https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/main.py"
click node_auth "https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/auth.py"
click node_schemas "https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/schemas.py"
click node_docs "https://github.com/mdavidjeremiah/dbms-project/tree/main/backend/swagger-ui"
click node_organisation "https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/main.py"
click node_catalogue "https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/main.py"
click node_procurement "https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/main.py"
click node_sales "https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/main.py"
click node_payroll "https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/main.py"
click node_ledger "https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/main.py"
click node_orm "https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/models.py"
click node_database "https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/database.py"

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_browser,node_webui,node_webapi,node_webauth,node_staff toneBlue
class node_fastapi,node_auth,node_schemas,node_docs,node_mysql toneAmber
class node_organisation,node_catalogue,node_procurement,node_sales,node_payroll,node_ledger toneMint
class node_orm,node_database toneRose
```

## Components

### Browser application

- **Browser**
- [Application pages](https://github.com/mdavidjeremiah/dbms-project/tree/main/frontend): `frontend`
- [API client](https://github.com/mdavidjeremiah/dbms-project/blob/main/frontend/assets/js/api.js): `frontend/assets/js/api.js`
- [Login UI](https://github.com/mdavidjeremiah/dbms-project/blob/main/frontend/assets/js/auth.js): `frontend/assets/js/auth.js`

### API service

- [FastAPI routes](https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/main.py): `backend/main.py`
- [JWT and RBAC](https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/auth.py): `backend/auth.py`
- [Request models](https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/schemas.py): `backend/schemas.py`
- [API documentation](https://github.com/mdavidjeremiah/dbms-project/tree/main/backend/swagger-ui): `backend/swagger-ui`

### Retail operations

- [Organisation and staff](https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/main.py): `backend/main.py`
- [Products and suppliers](https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/main.py): `backend/main.py`
- [Purchase orders](https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/main.py): `backend/main.py`
- [Sales operations](https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/main.py): `backend/main.py`
- [Payroll processing](https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/main.py): `backend/main.py`
- [Financial ledger](https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/main.py): `backend/main.py`

### Persistence

- [SQLAlchemy entities](https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/models.py): `backend/models.py`
- [DB sessions](https://github.com/mdavidjeremiah/dbms-project/blob/main/backend/database.py): `backend/database.py`

### Other components

- **Staff user**
- **MySQL database**

## Connections

- Staff user → Browser: uses
- Browser → Application pages: opens pages
- Application pages → Login UI: signs in
- Application pages → API client: requests data
- API client → FastAPI routes: calls REST API
- Login UI → FastAPI routes: submits login
- FastAPI routes → JWT and RBAC: authenticates
- JWT and RBAC → DB sessions: loads user
- FastAPI routes → Request models: validates payloads
- FastAPI routes → Organisation and staff: handles requests
- FastAPI routes → Products and suppliers: handles requests
- FastAPI routes → Purchase orders: handles requests
- FastAPI routes → Sales operations: handles requests
- FastAPI routes → Payroll processing: handles requests
- FastAPI routes → Financial ledger: handles requests
- FastAPI routes → API documentation: serves UI
- Organisation and staff → DB sessions: queries and writes
- Products and suppliers → DB sessions: queries and writes
- Purchase orders → DB sessions: queries and writes
- Sales operations → DB sessions: queries and writes
- Payroll processing → DB sessions: queries and writes
- Financial ledger → DB sessions: queries and writes
- DB sessions → SQLAlchemy entities: uses mappings
- DB sessions → MySQL database: persists data
