# riverflow96/uml-generator architecture

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

- Interactive diagram: https://gitdiagram.com/riverflow96/uml-generator
- Repository: https://github.com/riverflow96/uml-generator

## Overview

UML Class Diagram Generator analiza archivos Python y Java sin ejecutar el proyecto y produce una representación visual de sus clases y relaciones. El flujo principal va desde la carpeta elegida por el usuario hasta archivos PNG y, opcionalmente, Excalidraw; también contempla opciones de exclusión y visibilidad. Las etapas se agrupan según las responsabilidades visibles en el único archivo fuente. El README documenta las salidas y el análisis; los extractos no muestran la implementación completa del punto de entrada ni todas las conexiones internas.

Main entry points: [`uml_excalidraw.py`](https://github.com/riverflow96/uml-generator/blob/main/uml_excalidraw.py) (Analizador Python/Java)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_analysis["Análisis de código"]
  node_generator["Generador CLI<br/>[uml_excalidraw.py]"]
  node_analyzer["Analizador Python/Java<br/>[uml_excalidraw.py]"]
  node_class_model["Modelo de clases<br/>[uml_excalidraw.py]"]
  node_relations["Relaciones UML<br/>[uml_excalidraw.py]"]
end

subgraph group_diagram["Construcción UML"]
  node_builder["Constructor Excalidraw<br/>[uml_excalidraw.py]"]
  node_scene["Escena del diagrama<br/>[uml_excalidraw.py]"]
end

subgraph group_outputs["Render y exportación"]
  node_svg["Renderizador SVG<br/>[uml_excalidraw.py]"]
  node_png["Diagrama PNG"]
  node_excalidraw["Diagrama Excalidraw"]
end

node_user(("Usuario"))
node_project["Proyecto fuente"]
node_cairosvg["CairoSVG"]

node_user -->|"ejecuta"| node_generator
node_user -->|"selecciona"| node_project
node_generator -->|"analiza"| node_analyzer
node_project -->|"aporta archivos"| node_analyzer
node_analyzer -->|"extrae clases"| node_class_model
node_analyzer -->|"infiere relaciones"| node_relations
node_builder -->|"lee clases"| node_class_model
node_builder -->|"lee relaciones"| node_relations
node_builder -->|"construye escena"| node_scene
node_svg -->|"lee escena"| node_scene
node_svg -.->|"convierte SVG"| node_cairosvg
node_cairosvg -.->|"produce PNG"| node_png
node_scene -->|"guarda editable"| node_excalidraw

click node_generator "https://github.com/riverflow96/uml-generator/blob/main/uml_excalidraw.py"
click node_analyzer "https://github.com/riverflow96/uml-generator/blob/main/uml_excalidraw.py"
click node_class_model "https://github.com/riverflow96/uml-generator/blob/main/uml_excalidraw.py"
click node_relations "https://github.com/riverflow96/uml-generator/blob/main/uml_excalidraw.py"
click node_builder "https://github.com/riverflow96/uml-generator/blob/main/uml_excalidraw.py"
click node_scene "https://github.com/riverflow96/uml-generator/blob/main/uml_excalidraw.py"
click node_svg "https://github.com/riverflow96/uml-generator/blob/main/uml_excalidraw.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_generator,node_analyzer,node_class_model,node_relations toneBlue
class node_builder,node_scene toneAmber
class node_svg,node_png,node_excalidraw toneMint
class node_user,node_project,node_cairosvg toneIndigo
```

## Components

### Análisis de código

- [Generador CLI](https://github.com/riverflow96/uml-generator/blob/main/uml_excalidraw.py): `uml_excalidraw.py`
- [Analizador Python/Java](https://github.com/riverflow96/uml-generator/blob/main/uml_excalidraw.py): `uml_excalidraw.py`
- [Modelo de clases](https://github.com/riverflow96/uml-generator/blob/main/uml_excalidraw.py): `uml_excalidraw.py`
- [Relaciones UML](https://github.com/riverflow96/uml-generator/blob/main/uml_excalidraw.py): `uml_excalidraw.py`

### Construcción UML

- [Constructor Excalidraw](https://github.com/riverflow96/uml-generator/blob/main/uml_excalidraw.py): `uml_excalidraw.py`
- [Escena del diagrama](https://github.com/riverflow96/uml-generator/blob/main/uml_excalidraw.py): `uml_excalidraw.py`

### Render y exportación

- [Renderizador SVG](https://github.com/riverflow96/uml-generator/blob/main/uml_excalidraw.py): `uml_excalidraw.py`
- **Diagrama PNG**
- **Diagrama Excalidraw**

### Other components

- **Usuario**
- **Proyecto fuente**
- **CairoSVG**

## Connections

- Usuario → Generador CLI: ejecuta
- Usuario → Proyecto fuente: selecciona
- Generador CLI → Analizador Python/Java: analiza
- Proyecto fuente → Analizador Python/Java: aporta archivos
- Analizador Python/Java → Modelo de clases: extrae clases
- Analizador Python/Java → Relaciones UML: infiere relaciones
- Constructor Excalidraw → Modelo de clases: lee clases
- Constructor Excalidraw → Relaciones UML: lee relaciones
- Constructor Excalidraw → Escena del diagrama: construye escena
- Renderizador SVG → Escena del diagrama: lee escena
- Renderizador SVG → CairoSVG: convierte SVG
- CairoSVG → Diagrama PNG: produce PNG
- Escena del diagrama → Diagrama Excalidraw: guarda editable
