# albertsolomon/project_ot architecture

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

- Interactive diagram: https://gitdiagram.com/albertsolomon/project_ot
- Repository: https://github.com/albertsolomon/project_ot

## Overview

Project Overtime records overtime details in month-specific JSON and edits an Excel workbook. The visible user workflow prompts for a month and sheet, checks the worksheet’s job description, inserts a row, and saves a month-named workbook. A separate synchronization routine reads JSON records and attempts worksheet updates. Settings select the month; rules and job-title helpers are also present. The README provides no further capability detail, and the template and output directories are not in the tree; the graph shows only relationships visible in the sampled source.

Main entry points: [`src/run.py`](https://github.com/albertsolomon/project_ot/blob/main/src/run.py) (Prompt and export), [`src/lang.py`](https://github.com/albertsolomon/project_ot/blob/main/src/lang.py) (Record and data helpers), [`src/syncronize.py`](https://github.com/albertsolomon/project_ot/blob/main/src/syncronize.py) (JSON synchronization), [`src/ot.py`](https://github.com/albertsolomon/project_ot/blob/main/src/ot.py) (Worksheet operations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_recording["Overtime records"]
  node_record_helpers["Record and data helpers<br/>[lang.py]"]
  node_monthly_data[("Monthly JSON records<br/>[july.json]")]
end

subgraph group_workbooks["Workbook handling"]
  node_runner["Prompt and export<br/>[run.py]"]
  node_synchronizer["JSON synchronization<br/>[syncronize.py]"]
  node_worksheet_ops["Worksheet operations<br/>[ot.py]"]
end

subgraph group_configuration["Configuration"]
  node_month_settings["Month settings<br/>[settings.json]"]
  node_overtime_rules["Overtime rules<br/>[rules.json]"]
end

node_user(("Operator"))
node_template["Excel template"]
node_export["Exported workbook"]

node_user -->|"enters details"| node_runner
node_runner -->|"imports helpers"| node_record_helpers
node_runner -->|"checks and inserts"| node_worksheet_ops
node_runner -->|"loads template"| node_template
node_runner -->|"saves workbook"| node_export
node_synchronizer -->|"reads records"| node_record_helpers
node_synchronizer -->|"checks and inserts"| node_worksheet_ops
node_synchronizer -->|"loads template"| node_template
node_record_helpers -->|"writes records"| node_monthly_data
node_record_helpers -->|"reads month"| node_month_settings
node_record_helpers -->|"reads and updates"| node_overtime_rules

click node_runner "https://github.com/albertsolomon/project_ot/blob/main/src/run.py"
click node_synchronizer "https://github.com/albertsolomon/project_ot/blob/main/src/syncronize.py"
click node_worksheet_ops "https://github.com/albertsolomon/project_ot/blob/main/src/ot.py"
click node_record_helpers "https://github.com/albertsolomon/project_ot/blob/main/src/lang.py"
click node_monthly_data "https://github.com/albertsolomon/project_ot/blob/main/data/july.json"
click node_month_settings "https://github.com/albertsolomon/project_ot/blob/main/utils/settings.json"
click node_overtime_rules "https://github.com/albertsolomon/project_ot/blob/main/utils/rules.json"

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_record_helpers,node_monthly_data toneBlue
class node_runner,node_synchronizer,node_worksheet_ops toneAmber
class node_month_settings,node_overtime_rules toneMint
class node_user,node_template,node_export toneIndigo
```

## Components

### Overtime records

- [Record and data helpers](https://github.com/albertsolomon/project_ot/blob/main/src/lang.py): `src/lang.py`
- [Monthly JSON records](https://github.com/albertsolomon/project_ot/blob/main/data/july.json): `data/july.json`

### Workbook handling

- [Prompt and export](https://github.com/albertsolomon/project_ot/blob/main/src/run.py): `src/run.py`
- [JSON synchronization](https://github.com/albertsolomon/project_ot/blob/main/src/syncronize.py): `src/syncronize.py`
- [Worksheet operations](https://github.com/albertsolomon/project_ot/blob/main/src/ot.py): `src/ot.py`

### Configuration

- [Month settings](https://github.com/albertsolomon/project_ot/blob/main/utils/settings.json): `utils/settings.json`
- [Overtime rules](https://github.com/albertsolomon/project_ot/blob/main/utils/rules.json): `utils/rules.json`

### Other components

- **Operator**
- **Excel template**
- **Exported workbook**

## Connections

- Operator → Prompt and export: enters details (evidence: `src/run.py`)
- Prompt and export → Record and data helpers: imports helpers (evidence: `src/run.py`)
- Prompt and export → Worksheet operations: checks and inserts (evidence: `src/run.py`)
- Prompt and export → Excel template: loads template (evidence: `src/run.py`)
- Prompt and export → Exported workbook: saves workbook (evidence: `src/run.py`)
- JSON synchronization → Record and data helpers: reads records (evidence: `src/syncronize.py`)
- JSON synchronization → Worksheet operations: checks and inserts (evidence: `src/syncronize.py`)
- JSON synchronization → Excel template: loads template (evidence: `src/syncronize.py`)
- Record and data helpers → Monthly JSON records: writes records (evidence: `src/lang.py`)
- Record and data helpers → Month settings: reads month (evidence: `src/lang.py`)
- Record and data helpers → Overtime rules: reads and updates (evidence: `src/lang.py`)
