# codepaiva/projeto-convertdebit architecture

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

- Interactive diagram: https://gitdiagram.com/codepaiva/projeto-convertdebit
- Repository: https://github.com/codepaiva/projeto-convertdebit

## Overview

ConvertDebit is a Tkinter desktop tool for selecting an Excel spreadsheet, validating and previewing its date/value/debit-or-credit rows, then writing them to a timestamped text file under a date-based data directory. The graph follows the UI callbacks into the services; the README documents the overall conversion purpose. The tree view is part of the form, and no separate behavior is evident in src/views/tree.py.

Main entry points: [`src/views/form.py`](https://github.com/codepaiva/projeto-convertdebit/blob/main/src/views/form.py) (Selection form), [`src/services/convert_file.py`](https://github.com/codepaiva/projeto-convertdebit/blob/main/src/services/convert_file.py) (Text converter), [`src/main.py`](https://github.com/codepaiva/projeto-convertdebit/blob/main/src/main.py) (App entry), [`src/views/app.py`](https://github.com/codepaiva/projeto-convertdebit/blob/main/src/views/app.py) (Tk window)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop UI"]
  node_entry["App entry<br/>[main.py]"]
  node_window["Tk window<br/>[app.py]"]
  node_form["Selection form<br/>[form.py]"]
  node_preview["Row preview<br/>[form.py]"]
end

subgraph group_services["Conversion services"]
  node_picker["Excel picker<br/>[search_file.py]"]
  node_loader["Excel validation<br/>[load_file.py]"]
  node_converter["Text converter<br/>[convert_file.py]"]
  node_directories["Output directories<br/>[create_dir.py]"]
end

node_user(("User"))
node_spreadsheet["Excel workbook"]
node_output["Converted text file"]
node_filesystem[("Local filesystem")]

node_user -->|"launches"| node_entry
node_entry -->|"creates"| node_window
node_window -->|"creates and displays"| node_form
node_user -->|"selects or converts"| node_form
node_form -->|"requests selection"| node_picker
node_picker -->|"selects path"| node_spreadsheet
node_form -->|"loads and validates"| node_loader
node_loader -->|"reads workbook"| node_spreadsheet
node_form -->|"populates rows"| node_preview
node_user -->|"views rows"| node_preview
node_form -->|"requests conversion"| node_converter
node_converter -->|"creates dated path"| node_directories
node_directories -->|"creates directories"| node_filesystem
node_converter -->|"writes formatted rows"| node_output
node_output -.->|"stored locally"| node_filesystem

click node_entry "https://github.com/codepaiva/projeto-convertdebit/blob/main/src/main.py"
click node_window "https://github.com/codepaiva/projeto-convertdebit/blob/main/src/views/app.py"
click node_form "https://github.com/codepaiva/projeto-convertdebit/blob/main/src/views/form.py"
click node_preview "https://github.com/codepaiva/projeto-convertdebit/blob/main/src/views/form.py"
click node_picker "https://github.com/codepaiva/projeto-convertdebit/blob/main/src/services/search_file.py"
click node_loader "https://github.com/codepaiva/projeto-convertdebit/blob/main/src/services/load_file.py"
click node_converter "https://github.com/codepaiva/projeto-convertdebit/blob/main/src/services/convert_file.py"
click node_directories "https://github.com/codepaiva/projeto-convertdebit/blob/main/src/services/create_dir.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_entry,node_window,node_form,node_preview,node_user toneBlue
class node_picker,node_loader,node_converter,node_directories,node_filesystem toneAmber
class node_spreadsheet,node_output toneIndigo
```

## Components

### Desktop UI

- [App entry](https://github.com/codepaiva/projeto-convertdebit/blob/main/src/main.py): `src/main.py`
- [Tk window](https://github.com/codepaiva/projeto-convertdebit/blob/main/src/views/app.py): `src/views/app.py`
- [Selection form](https://github.com/codepaiva/projeto-convertdebit/blob/main/src/views/form.py): `src/views/form.py`
- [Row preview](https://github.com/codepaiva/projeto-convertdebit/blob/main/src/views/form.py): `src/views/form.py`

### Conversion services

- [Excel picker](https://github.com/codepaiva/projeto-convertdebit/blob/main/src/services/search_file.py): `src/services/search_file.py`
- [Excel validation](https://github.com/codepaiva/projeto-convertdebit/blob/main/src/services/load_file.py): `src/services/load_file.py`
- [Text converter](https://github.com/codepaiva/projeto-convertdebit/blob/main/src/services/convert_file.py): `src/services/convert_file.py`
- [Output directories](https://github.com/codepaiva/projeto-convertdebit/blob/main/src/services/create_dir.py): `src/services/create_dir.py`

### Other components

- **User**
- **Excel workbook**
- **Converted text file**
- **Local filesystem**

## Connections

- User → App entry: launches (evidence: `README.md`)
- App entry → Tk window: creates (evidence: `src/main.py`)
- Tk window → Selection form: creates and displays (evidence: `src/views/app.py`)
- User → Selection form: selects or converts (evidence: `README.md`)
- Selection form → Excel picker: requests selection (evidence: `src/views/form.py`)
- Excel picker → Excel workbook: selects path (evidence: `src/services/search_file.py`)
- Selection form → Excel validation: loads and validates (evidence: `src/views/form.py`)
- Excel validation → Excel workbook: reads workbook (evidence: `src/services/load_file.py`)
- Selection form → Row preview: populates rows (evidence: `src/views/form.py`)
- User → Row preview: views rows (evidence: `README.md`)
- Selection form → Text converter: requests conversion (evidence: `src/views/form.py`)
- Text converter → Output directories: creates dated path (evidence: `src/services/convert_file.py`)
- Output directories → Local filesystem: creates directories (evidence: `src/services/create_dir.py`)
- Text converter → Converted text file: writes formatted rows (evidence: `src/services/convert_file.py`)
- Converted text file → Local filesystem: stored locally
