# hajikhanovkh/autoreport architecture

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

- Interactive diagram: https://gitdiagram.com/hajikhanovkh/autoreport
- Repository: https://github.com/hajikhanovkh/autoreport

## Overview

AutoReport is a browser-based business reporting tool backed by an Express API and MySQL. Users manage company/VÖEN records, work with notices and report settings, analyze spreadsheet data, and request generated report or cover documents. The main document workflow sends selected firms from the browser to the API, which loads template data and signer information and builds a ZIP response. The excerpts also show company-record management and several administrative features. Source excerpts are partial, so links for unsampled API interactions are omitted rather than inferred.

Main entry points: [`server.js`](https://github.com/hajikhanovkh/autoreport/blob/main/server.js) (HTTP API), [`app.js`](https://github.com/hajikhanovkh/autoreport/blob/main/app.js) (Reporting interface), [`addvoen.js`](https://github.com/hajikhanovkh/autoreport/blob/main/addvoen.js) (Company manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Browser client"]
  node_main_ui["Reporting interface<br/>[app.js]"]
  node_company_ui["Company manager<br/>[addvoen.js]"]
  node_spreadsheet_analysis["Spreadsheet analysis<br/>[app.js]"]
  node_notice_management["Notice management<br/>[app.js]"]
  node_document_requests["Document requests<br/>[app.js]"]
end

subgraph group_api["API services"]
  node_api_server["HTTP API<br/>[server.js]"]
end

subgraph group_records["Business records"]
  node_company_records[("Company records<br/>[server.js]")]
  node_notice_records[("Notice records<br/>[server.js]")]
  node_report_settings[("Report settings<br/>[server.js]")]
  node_cover_settings[("Cover settings<br/>[server.js]")]
  node_signer_records[("Signer records<br/>[server.js]")]
  node_login_logs[("Login logs<br/>[server.js]")]
end

subgraph group_documents["Document output"]
  node_document_generation["Document generation<br/>[server.js]"]
  node_generated_files["ZIP documents<br/>[server.js]"]
end

node_user(("Operator"))
node_template_host["Template host"]

node_user -->|"uses"| node_main_ui
node_user -->|"manages records"| node_company_ui
node_main_ui -->|"analyzes spreadsheets"| node_spreadsheet_analysis
node_main_ui -->|"manages notices"| node_notice_management
node_main_ui -->|"selects firms"| node_document_requests
node_document_requests -->|"requests reports"| node_api_server
node_company_ui -->|"calls company API"| node_api_server
node_api_server -->|"reads and writes"| node_company_records
node_api_server -->|"reads and writes"| node_notice_records
node_api_server -->|"reads and writes"| node_report_settings
node_api_server -->|"reads and writes"| node_cover_settings
node_api_server -->|"reads and writes"| node_signer_records
node_api_server -->|"records attempts"| node_login_logs
node_api_server -->|"handles generation"| node_document_generation
node_document_generation -->|"fetches templates"| node_template_host
node_document_generation -->|"reads signer data"| node_signer_records
node_document_generation -->|"builds ZIP"| node_generated_files
node_generated_files -->|"returns archive"| node_document_requests

click node_main_ui "https://github.com/hajikhanovkh/autoreport/blob/main/app.js"
click node_company_ui "https://github.com/hajikhanovkh/autoreport/blob/main/addvoen.js"
click node_api_server "https://github.com/hajikhanovkh/autoreport/blob/main/server.js"
click node_company_records "https://github.com/hajikhanovkh/autoreport/blob/main/server.js"
click node_notice_records "https://github.com/hajikhanovkh/autoreport/blob/main/server.js"
click node_report_settings "https://github.com/hajikhanovkh/autoreport/blob/main/server.js"
click node_cover_settings "https://github.com/hajikhanovkh/autoreport/blob/main/server.js"
click node_signer_records "https://github.com/hajikhanovkh/autoreport/blob/main/server.js"
click node_login_logs "https://github.com/hajikhanovkh/autoreport/blob/main/server.js"
click node_spreadsheet_analysis "https://github.com/hajikhanovkh/autoreport/blob/main/app.js"
click node_notice_management "https://github.com/hajikhanovkh/autoreport/blob/main/app.js"
click node_document_requests "https://github.com/hajikhanovkh/autoreport/blob/main/app.js"
click node_document_generation "https://github.com/hajikhanovkh/autoreport/blob/main/server.js"
click node_generated_files "https://github.com/hajikhanovkh/autoreport/blob/main/server.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_main_ui,node_company_ui,node_spreadsheet_analysis,node_notice_management,node_document_requests toneBlue
class node_api_server toneAmber
class node_company_records,node_notice_records,node_report_settings,node_cover_settings,node_signer_records,node_login_logs toneMint
class node_document_generation,node_generated_files toneRose
class node_user,node_template_host toneIndigo
```

## Components

### Browser client

- [Reporting interface](https://github.com/hajikhanovkh/autoreport/blob/main/app.js): `app.js`
- [Company manager](https://github.com/hajikhanovkh/autoreport/blob/main/addvoen.js): `addvoen.js`
- [Spreadsheet analysis](https://github.com/hajikhanovkh/autoreport/blob/main/app.js): `app.js`
- [Notice management](https://github.com/hajikhanovkh/autoreport/blob/main/app.js): `app.js`
- [Document requests](https://github.com/hajikhanovkh/autoreport/blob/main/app.js): `app.js`

### API services

- [HTTP API](https://github.com/hajikhanovkh/autoreport/blob/main/server.js): `server.js`

### Business records

- [Company records](https://github.com/hajikhanovkh/autoreport/blob/main/server.js): `server.js`
- [Notice records](https://github.com/hajikhanovkh/autoreport/blob/main/server.js): `server.js`
- [Report settings](https://github.com/hajikhanovkh/autoreport/blob/main/server.js): `server.js`
- [Cover settings](https://github.com/hajikhanovkh/autoreport/blob/main/server.js): `server.js`
- [Signer records](https://github.com/hajikhanovkh/autoreport/blob/main/server.js): `server.js`
- [Login logs](https://github.com/hajikhanovkh/autoreport/blob/main/server.js): `server.js`

### Document output

- [Document generation](https://github.com/hajikhanovkh/autoreport/blob/main/server.js): `server.js`
- [ZIP documents](https://github.com/hajikhanovkh/autoreport/blob/main/server.js): `server.js`

### Other components

- **Operator**
- **Template host**

## Connections

- Operator → Reporting interface: uses
- Operator → Company manager: manages records
- Reporting interface → Spreadsheet analysis: analyzes spreadsheets (evidence: `app.js`)
- Reporting interface → Notice management: manages notices (evidence: `app.js`)
- Reporting interface → Document requests: selects firms (evidence: `app.js`)
- Document requests → HTTP API: requests reports (evidence: `app.js`)
- Company manager → HTTP API: calls company API (evidence: `addvoen.js`)
- HTTP API → Company records: reads and writes (evidence: `server.js`)
- HTTP API → Notice records: reads and writes (evidence: `server.js`)
- HTTP API → Report settings: reads and writes (evidence: `server.js`)
- HTTP API → Cover settings: reads and writes (evidence: `server.js`)
- HTTP API → Signer records: reads and writes (evidence: `server.js`)
- HTTP API → Login logs: records attempts (evidence: `server.js`)
- HTTP API → Document generation: handles generation (evidence: `server.js`)
- Document generation → Template host: fetches templates (evidence: `server.js`)
- Document generation → Signer records: reads signer data (evidence: `server.js`)
- Document generation → ZIP documents: builds ZIP (evidence: `server.js`)
- ZIP documents → Document requests: returns archive (evidence: `server.js`)
