# ericcaballes101/wvfleetmaintenancechecklist architecture

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

## Overview

This is a static monthly vehicle-maintenance checklist and condition-report website. Drivers complete and validate a report, then submit it online or export it as CSV, print/PDF, or email it; drafts autosave on the device. The map separates checklist entry, report handling, and persistence/integrations. The excerpts show checklist rendering, signature handling, CSV, printing, and online submission; email and some restore/validation details are documented in the README but not fully shown in source.

Main entry points: [`index.html`](https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/index.html) (Report Form), [`app.js`](https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js) (Report Formatter), [`config.js`](https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/config.js) (Settings)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Checklist Entry"]
  node_form["Report Form<br/>[index.html]"]
  node_checklist["Checklist Items<br/>[app.js]"]
  node_maintenance["Maintenance Rows<br/>[app.js]"]
  node_signature["Signature Pad<br/>[app.js]"]
end

subgraph group_reports["Report Handling"]
  node_validation["Report Validation<br/>[app.js]"]
  node_formatter["Report Formatter<br/>[app.js]"]
  node_csv["CSV Export<br/>[app.js]"]
  node_printing["Print / PDF<br/>[app.js]"]
  node_email["Email Report<br/>[app.js]"]
end

subgraph group_storage["Persistence and Integrations"]
  node_autosave["Draft Autosave<br/>[app.js]"]
  node_draftstore[("Device Draft")]
  node_config["Settings<br/>[config.js]"]
  node_submit["Online Submission<br/>[app.js]"]
end

node_driver(("Driver"))
node_endpoint["Submission Endpoint"]
node_emailclient["Email Client"]
node_browser["Browser"]

node_driver -->|"fills"| node_form
node_form -->|"renders"| node_checklist
node_form -->|"adds rows"| node_maintenance
node_driver -->|"signs"| node_signature
node_form -->|"autosaves"| node_autosave
node_autosave -->|"writes draft"| node_draftstore
node_draftstore -->|"restores draft"| node_autosave
node_driver -->|"submits or exports"| node_validation
node_validation -->|"validates report"| node_formatter
node_formatter -->|"formats data"| node_csv
node_csv -->|"downloads CSV"| node_browser
node_validation -->|"permits printing"| node_printing
node_printing -->|"prints report"| node_browser
node_formatter -->|"formats data"| node_submit
node_submit -->|"reads settings"| node_config
node_submit -->|"posts report"| node_endpoint
node_formatter -.->|"prepares message"| node_email
node_email -.->|"opens email"| node_emailclient
node_driver -->|"emails report"| node_email

click node_form "https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/index.html"
click node_checklist "https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js"
click node_maintenance "https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js"
click node_signature "https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js"
click node_validation "https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js"
click node_formatter "https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js"
click node_csv "https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js"
click node_printing "https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js"
click node_email "https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js"
click node_autosave "https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js"
click node_config "https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/config.js"
click node_submit "https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.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_form,node_checklist,node_maintenance,node_signature,node_emailclient,node_browser toneBlue
class node_validation,node_formatter,node_csv,node_printing,node_email toneAmber
class node_autosave,node_draftstore,node_config,node_submit toneMint
class node_driver,node_endpoint toneIndigo
```

## Components

### Checklist Entry

- [Report Form](https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/index.html): `index.html`
- [Checklist Items](https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js): `app.js`
- [Maintenance Rows](https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js): `app.js`
- [Signature Pad](https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js): `app.js`

### Report Handling

- [Report Validation](https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js): `app.js`
- [Report Formatter](https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js): `app.js`
- [CSV Export](https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js): `app.js`
- [Print / PDF](https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js): `app.js`
- [Email Report](https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js): `app.js`

### Persistence and Integrations

- [Draft Autosave](https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js): `app.js`
- **Device Draft**
- [Settings](https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/config.js): `config.js`
- [Online Submission](https://github.com/ericcaballes101/wvfleetmaintenancechecklist/blob/main/app.js): `app.js`

### Other components

- **Driver**
- **Submission Endpoint**
- **Email Client**
- **Browser**

## Connections

- Driver → Report Form: fills (evidence: `README.md`)
- Report Form → Checklist Items: renders (evidence: `app.js`)
- Report Form → Maintenance Rows: adds rows (evidence: `app.js`)
- Driver → Signature Pad: signs (evidence: `app.js`)
- Report Form → Draft Autosave: autosaves (evidence: `README.md`)
- Draft Autosave → Device Draft: writes draft (evidence: `README.md`)
- Device Draft → Draft Autosave: restores draft (evidence: `README.md`)
- Driver → Report Validation: submits or exports (evidence: `README.md`)
- Report Validation → Report Formatter: validates report (evidence: `app.js`)
- Report Formatter → CSV Export: formats data (evidence: `app.js`)
- CSV Export → Browser: downloads CSV (evidence: `app.js`)
- Report Validation → Print / PDF: permits printing (evidence: `app.js`)
- Print / PDF → Browser: prints report (evidence: `app.js`)
- Report Formatter → Online Submission: formats data (evidence: `app.js`)
- Online Submission → Settings: reads settings (evidence: `app.js`)
- Online Submission → Submission Endpoint: posts report (evidence: `app.js`)
- Report Formatter → Email Report: prepares message (evidence: `README.md`)
- Email Report → Email Client: opens email (evidence: `README.md`)
- Driver → Email Report: emails report (evidence: `README.md`)
