# destinym01/finaladrian architecture

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

## Overview

This is a hospital-oriented computerized maintenance management system. Users enter through the web app to manage equipment and related records; clinical engineers submit daily inspections and planned preventive maintenance, while administrators review schedules, work orders, and reports. The graph shows the Express routing and controller layer, Sequelize-backed domain records, and rendered views. The README documents broader capabilities than the sampled controller excerpts; report and CRUD branches are included where supported by routes and the repository tree, without guessing at unsampled call wiring.

Main entry points: [`util/db.js`](https://github.com/destinym01/finaladrian/blob/main/util/db.js) (Sequelize connection), [`controllers/report.js`](https://github.com/destinym01/finaladrian/blob/main/controllers/report.js) (Report controller), [`controllers/home.js`](https://github.com/destinym01/finaladrian/blob/main/controllers/home.js) (Home controller), [`server.js`](https://github.com/destinym01/finaladrian/blob/main/server.js) (Express server)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_server["Express server<br/>[server.js]"]
  node_mainroutes["Main routes<br/>[main.js]"]
  node_reportroutes["Report routes<br/>[report.js]"]
  node_crudroutes["CRUD routes"]
  node_home["Home controller<br/>[home.js]"]
  node_crud["Record controllers"]
  node_views["Handlebars views"]
end

subgraph group_assets["Equipment operations"]
  node_equipment["Equipment records<br/>[equipment.js]"]
  node_maintenance["Maintenance records<br/>[maintenance.js]"]
  node_breakdown["Breakdown records<br/>[break_down.js]"]
  node_workorder["Work orders<br/>[work_order.js]"]
  node_spares["Spare parts<br/>[spare_part.js]"]
  node_departments["Departments<br/>[department.js]"]
  node_suppliers["Suppliers<br/>[agent_supplier.js]"]
  node_engineers["Clinical engineers"]
end

subgraph group_reports["Inspections and reports"]
  node_report["Report controller<br/>[report.js]"]
  node_daily["Daily inspections"]
  node_ppm["PPM reports<br/>[ppm.js]"]
  node_questions["PPM questions<br/>[ppm_questions.js]"]
end

subgraph group_data["Persistence"]
  node_dbutil["Sequelize connection<br/>[db.js]"]
  node_mysql[("MySQL database<br/>[cmms.sql]")]
end

node_users(("Admin / engineer"))

node_users -->|"use"| node_server
node_server -->|"mounts routes"| node_mainroutes
node_server -->|"mounts routes"| node_reportroutes
node_server -->|"mounts routes"| node_crudroutes
node_mainroutes -->|"dispatches"| node_home
node_reportroutes -->|"dispatches"| node_report
node_crudroutes -->|"dispatches"| node_crud
node_home -->|"renders"| node_views
node_report -->|"renders"| node_views
node_home -->|"queries"| node_equipment
node_home -->|"queries"| node_breakdown
node_home -->|"queries"| node_workorder
node_home -->|"creates / queries"| node_daily
node_home -->|"creates / queries"| node_ppm
node_report -->|"queries"| node_equipment
node_report -->|"queries"| node_departments
node_report -->|"queries"| node_suppliers
node_report -->|"queries"| node_spares
node_report -->|"queries"| node_daily
node_report -->|"queries"| node_ppm
node_report -->|"queries"| node_questions
node_report -->|"queries"| node_breakdown
node_equipment -->|"uses"| node_dbutil
node_maintenance -->|"uses"| node_dbutil
node_breakdown -->|"uses"| node_dbutil
node_workorder -->|"uses"| node_dbutil
node_spares -->|"uses"| node_dbutil
node_departments -->|"uses"| node_dbutil
node_suppliers -->|"uses"| node_dbutil
node_engineers -->|"uses"| node_dbutil
node_daily -->|"uses"| node_dbutil
node_ppm -->|"uses"| node_dbutil
node_questions -->|"uses"| node_dbutil
node_dbutil -->|"connects"| node_mysql

click node_server "https://github.com/destinym01/finaladrian/blob/main/server.js"
click node_mainroutes "https://github.com/destinym01/finaladrian/blob/main/routes/main.js"
click node_reportroutes "https://github.com/destinym01/finaladrian/blob/main/routes/report.js"
click node_crudroutes "https://github.com/destinym01/finaladrian/tree/main/routes"
click node_home "https://github.com/destinym01/finaladrian/blob/main/controllers/home.js"
click node_report "https://github.com/destinym01/finaladrian/blob/main/controllers/report.js"
click node_crud "https://github.com/destinym01/finaladrian/tree/main/controllers"
click node_views "https://github.com/destinym01/finaladrian/tree/main/views"
click node_equipment "https://github.com/destinym01/finaladrian/blob/main/models/equipment.js"
click node_maintenance "https://github.com/destinym01/finaladrian/blob/main/models/maintenance.js"
click node_breakdown "https://github.com/destinym01/finaladrian/blob/main/models/break_down.js"
click node_workorder "https://github.com/destinym01/finaladrian/blob/main/models/work_order.js"
click node_spares "https://github.com/destinym01/finaladrian/blob/main/models/spare_part.js"
click node_departments "https://github.com/destinym01/finaladrian/blob/main/models/department.js"
click node_suppliers "https://github.com/destinym01/finaladrian/blob/main/models/agent_supplier.js"
click node_engineers "https://github.com/destinym01/finaladrian/blob/main/models/clinical_engineer.js"
click node_daily "https://github.com/destinym01/finaladrian/blob/main/models/dialy_inspection.js"
click node_ppm "https://github.com/destinym01/finaladrian/blob/main/models/ppm.js"
click node_questions "https://github.com/destinym01/finaladrian/blob/main/models/ppm_questions.js"
click node_dbutil "https://github.com/destinym01/finaladrian/blob/main/util/db.js"
click node_mysql "https://github.com/destinym01/finaladrian/blob/main/cmms.sql"

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_mainroutes,node_reportroutes,node_crudroutes,node_home,node_crud,node_views toneBlue
class node_equipment,node_maintenance,node_breakdown,node_workorder,node_spares,node_departments,node_suppliers,node_engineers toneAmber
class node_report,node_daily,node_ppm,node_questions toneMint
class node_dbutil,node_mysql toneRose
class node_users toneIndigo
```

## Components

### Web application

- [Express server](https://github.com/destinym01/finaladrian/blob/main/server.js): `server.js`
- [Main routes](https://github.com/destinym01/finaladrian/blob/main/routes/main.js): `routes/main.js`
- [Report routes](https://github.com/destinym01/finaladrian/blob/main/routes/report.js): `routes/report.js`
- [CRUD routes](https://github.com/destinym01/finaladrian/tree/main/routes): `routes`
- [Home controller](https://github.com/destinym01/finaladrian/blob/main/controllers/home.js): `controllers/home.js`
- [Record controllers](https://github.com/destinym01/finaladrian/tree/main/controllers): `controllers`
- [Handlebars views](https://github.com/destinym01/finaladrian/tree/main/views): `views`

### Equipment operations

- [Equipment records](https://github.com/destinym01/finaladrian/blob/main/models/equipment.js): `models/equipment.js`
- [Maintenance records](https://github.com/destinym01/finaladrian/blob/main/models/maintenance.js): `models/maintenance.js`
- [Breakdown records](https://github.com/destinym01/finaladrian/blob/main/models/break_down.js): `models/break_down.js`
- [Work orders](https://github.com/destinym01/finaladrian/blob/main/models/work_order.js): `models/work_order.js`
- [Spare parts](https://github.com/destinym01/finaladrian/blob/main/models/spare_part.js): `models/spare_part.js`
- [Departments](https://github.com/destinym01/finaladrian/blob/main/models/department.js): `models/department.js`
- [Suppliers](https://github.com/destinym01/finaladrian/blob/main/models/agent_supplier.js): `models/agent_supplier.js`
- [Clinical engineers](https://github.com/destinym01/finaladrian/blob/main/models/clinical_engineer.js): `models/clinical_engineer.js`

### Inspections and reports

- [Report controller](https://github.com/destinym01/finaladrian/blob/main/controllers/report.js): `controllers/report.js`
- [Daily inspections](https://github.com/destinym01/finaladrian/blob/main/models/dialy_inspection.js): `models/dialy_inspection.js`
- [PPM reports](https://github.com/destinym01/finaladrian/blob/main/models/ppm.js): `models/ppm.js`
- [PPM questions](https://github.com/destinym01/finaladrian/blob/main/models/ppm_questions.js): `models/ppm_questions.js`

### Persistence

- [Sequelize connection](https://github.com/destinym01/finaladrian/blob/main/util/db.js): `util/db.js`
- [MySQL database](https://github.com/destinym01/finaladrian/blob/main/cmms.sql): `cmms.sql`

### Other components

- **Admin / engineer**

## Connections

- Admin / engineer → Express server: use
- Express server → Main routes: mounts routes
- Express server → Report routes: mounts routes
- Express server → CRUD routes: mounts routes
- Main routes → Home controller: dispatches
- Report routes → Report controller: dispatches
- CRUD routes → Record controllers: dispatches
- Home controller → Handlebars views: renders
- Report controller → Handlebars views: renders
- Home controller → Equipment records: queries
- Home controller → Breakdown records: queries
- Home controller → Work orders: queries
- Home controller → Daily inspections: creates / queries
- Home controller → PPM reports: creates / queries
- Report controller → Equipment records: queries
- Report controller → Departments: queries
- Report controller → Suppliers: queries
- Report controller → Spare parts: queries
- Report controller → Daily inspections: queries
- Report controller → PPM reports: queries
- Report controller → PPM questions: queries
- Report controller → Breakdown records: queries
- Equipment records → Sequelize connection: uses
- Maintenance records → Sequelize connection: uses
- Breakdown records → Sequelize connection: uses
- Work orders → Sequelize connection: uses
- Spare parts → Sequelize connection: uses
- Departments → Sequelize connection: uses
- Suppliers → Sequelize connection: uses
- Clinical engineers → Sequelize connection: uses
- Daily inspections → Sequelize connection: uses
- PPM reports → Sequelize connection: uses
- PPM questions → Sequelize connection: uses
- Sequelize connection → MySQL database: connects
