# sibelsamait/gestion-de-proyectos---project-manager architecture

> Architecture diagram of the GitHub repository sibelsamait/gestion-de-proyectos---project-manager, 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/sibelsamait/gestion-de-proyectos---project-manager
- Repository: https://github.com/sibelsamait/gestion-de-proyectos---project-manager

## Overview

Gestión de proyectos es una aplicación Flask para gestionar proyectos, actividades, recursos e hitos, y seguir sus costos, indicadores y cambios. El flujo principal lleva al usuario desde el acceso y la selección de un proyecto autorizado hasta su actualización y consulta en tableros o informes PDF. La fábrica registra los blueprints; estos coordinan servicios de dominio y modelos SQLAlchemy. El README documenta además conversión de moneda y privacidad. Algunas relaciones de servicios y rutas se basan en el índice de referencias, no en una inspección completa de esos módulos.

Main entry points: [`app/__init__.py`](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/__init__.py) (Aplicación Flask), [`app/models`](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/tree/main/app/models) (Modelos persistentes), [`app/services/project_state.py`](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/project_state.py) (Estado del proyecto), [`app/services/currency.py`](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/currency.py) (Moneda y tasas)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Acceso y proyectos"]
  node_auth["Autenticación y roles<br/>[__init__.py]"]
  node_projects["Acceso a proyectos<br/>[__init__.py]"]
end

subgraph group_delivery["Trabajo del proyecto"]
  node_work["Tareas y recursos<br/>[__init__.py]"]
  node_projectstate["Estado del proyecto<br/>[project_state.py]"]
  node_costs["Cálculo de costos<br/>[costs.py]"]
  node_scheduler["Planificación<br/>[scheduler.py]"]
end

subgraph group_oversight["Control e informes"]
  node_management["Gestión de cambios y KPI<br/>[__init__.py]"]
  node_changes["Aplicación de cambios<br/>[change_service.py]"]
  node_kpi["Motor de indicadores<br/>[kpi_engine.py]"]
  node_dashboards["Tableros<br/>[__init__.py]"]
  node_dashboardservice["Agregación de métricas<br/>[dashboard.py]"]
  node_reports["Informes PDF<br/>[__init__.py]"]
  node_pdf["Generación PDF<br/>[pdf_report.py]"]
end

subgraph group_platform["Plataforma y datos"]
  node_app["Aplicación Flask<br/>[__init__.py]"]
  node_currency["Moneda y tasas<br/>[currency.py]"]
  node_currencyroutes["Preferencia de moneda<br/>[__init__.py]"]
  node_privacy["Privacidad de cuenta<br/>[__init__.py]"]
  node_audit["Auditoría<br/>[audit.py]"]
  node_models[("Modelos persistentes")]
end

node_user(("Usuario"))
node_ratesprovider{{"Proveedor de tasas"}}
node_database[("PostgreSQL / Neon")]

node_user -->|"inicia sesión"| node_auth
node_user -->|"selecciona proyecto"| node_projects
node_app -->|"registra blueprint"| node_auth
node_app -->|"registra blueprint"| node_projects
node_app -->|"registra blueprint"| node_work
node_app -->|"registra blueprint"| node_management
node_app -->|"registra blueprint"| node_dashboards
node_app -->|"registra blueprint"| node_reports
node_app -->|"registra blueprint"| node_currencyroutes
node_app -->|"registra blueprint"| node_privacy
node_projects -->|"consulta proyecto"| node_models
node_work -->|"solicita recálculo"| node_projectstate
node_projectstate -->|"calcula costos"| node_costs
node_projectstate -->|"evalúa indicadores"| node_kpi
node_projectstate -->|"usa planificación"| node_scheduler
node_work -->|"registra actividad"| node_audit
node_management -->|"aplica cambios"| node_changes
node_management -->|"valida indicadores"| node_kpi
node_changes -->|"recalcula estado"| node_projectstate
node_dashboards -->|"obtiene métricas"| node_dashboardservice
node_reports -->|"genera informe"| node_pdf
node_dashboardservice -->|"usa cálculos"| node_costs
node_dashboardservice -->|"convierte valores"| node_currency
node_pdf -->|"reutiliza métricas"| node_dashboardservice
node_pdf -->|"formatea moneda"| node_currency
node_currencyroutes -->|"gestiona tasas"| node_currency
node_currency -->|"consulta tasas"| node_ratesprovider
node_currency -->|"persiste tasas"| node_models
node_privacy -->|"audita privacidad"| node_audit
node_privacy -->|"anonimiza autoría"| node_models
node_auth -->|"registra eventos"| node_audit
node_auth -->|"consulta identidad"| node_models
node_work -->|"lee y actualiza"| node_models
node_management -->|"lee y actualiza"| node_models
node_models -->|"persiste entidades"| node_database

click node_app "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/__init__.py"
click node_auth "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/blueprints/auth/__init__.py"
click node_projects "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/blueprints/projects/__init__.py"
click node_work "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/blueprints/work/__init__.py"
click node_projectstate "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/project_state.py"
click node_costs "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/costs.py"
click node_scheduler "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/scheduler.py"
click node_management "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/blueprints/management/__init__.py"
click node_changes "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/change_service.py"
click node_kpi "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/kpi_engine.py"
click node_dashboards "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/blueprints/dashboards/__init__.py"
click node_dashboardservice "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/dashboard.py"
click node_reports "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/blueprints/reports/__init__.py"
click node_pdf "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/pdf_report.py"
click node_currency "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/currency.py"
click node_currencyroutes "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/blueprints/currency/__init__.py"
click node_privacy "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/blueprints/privacy/__init__.py"
click node_audit "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/audit.py"
click node_models "https://github.com/sibelsamait/gestion-de-proyectos---project-manager/tree/main/app/models"

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_auth,node_projects toneBlue
class node_work,node_projectstate,node_costs,node_scheduler,node_database toneAmber
class node_management,node_changes,node_kpi,node_dashboards,node_dashboardservice,node_reports,node_pdf toneMint
class node_app,node_currency,node_currencyroutes,node_privacy,node_audit,node_models toneRose
class node_user,node_ratesprovider toneIndigo
```

## Components

### Acceso y proyectos

- [Autenticación y roles](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/blueprints/auth/__init__.py): `app/blueprints/auth/__init__.py`
- [Acceso a proyectos](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/blueprints/projects/__init__.py): `app/blueprints/projects/__init__.py`

### Trabajo del proyecto

- [Tareas y recursos](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/blueprints/work/__init__.py): `app/blueprints/work/__init__.py`
- [Estado del proyecto](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/project_state.py): `app/services/project_state.py`
- [Cálculo de costos](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/costs.py): `app/services/costs.py`
- [Planificación](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/scheduler.py): `app/services/scheduler.py`

### Control e informes

- [Gestión de cambios y KPI](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/blueprints/management/__init__.py): `app/blueprints/management/__init__.py`
- [Aplicación de cambios](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/change_service.py): `app/services/change_service.py`
- [Motor de indicadores](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/kpi_engine.py): `app/services/kpi_engine.py`
- [Tableros](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/blueprints/dashboards/__init__.py): `app/blueprints/dashboards/__init__.py`
- [Agregación de métricas](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/dashboard.py): `app/services/dashboard.py`
- [Informes PDF](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/blueprints/reports/__init__.py): `app/blueprints/reports/__init__.py`
- [Generación PDF](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/pdf_report.py): `app/services/pdf_report.py`

### Plataforma y datos

- [Aplicación Flask](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/__init__.py): `app/__init__.py`
- [Moneda y tasas](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/currency.py): `app/services/currency.py`
- [Preferencia de moneda](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/blueprints/currency/__init__.py): `app/blueprints/currency/__init__.py`
- [Privacidad de cuenta](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/blueprints/privacy/__init__.py): `app/blueprints/privacy/__init__.py`
- [Auditoría](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/blob/main/app/services/audit.py): `app/services/audit.py`
- [Modelos persistentes](https://github.com/sibelsamait/gestion-de-proyectos---project-manager/tree/main/app/models): `app/models`

### Other components

- **Usuario**
- **Proveedor de tasas**
- **PostgreSQL / Neon**

## Connections

- Usuario → Autenticación y roles: inicia sesión (evidence: `README.md`)
- Usuario → Acceso a proyectos: selecciona proyecto (evidence: `README.md`)
- Aplicación Flask → Autenticación y roles: registra blueprint (evidence: `app/__init__.py`)
- Aplicación Flask → Acceso a proyectos: registra blueprint (evidence: `app/__init__.py`)
- Aplicación Flask → Tareas y recursos: registra blueprint (evidence: `app/__init__.py`)
- Aplicación Flask → Gestión de cambios y KPI: registra blueprint (evidence: `app/__init__.py`)
- Aplicación Flask → Tableros: registra blueprint (evidence: `app/__init__.py`)
- Aplicación Flask → Informes PDF: registra blueprint (evidence: `app/__init__.py`)
- Aplicación Flask → Preferencia de moneda: registra blueprint (evidence: `app/__init__.py`)
- Aplicación Flask → Privacidad de cuenta: registra blueprint (evidence: `app/__init__.py`)
- Acceso a proyectos → Modelos persistentes: consulta proyecto (evidence: `app/blueprints/projects/__init__.py`)
- Tareas y recursos → Estado del proyecto: solicita recálculo (evidence: `app/blueprints/work/__init__.py`)
- Estado del proyecto → Cálculo de costos: calcula costos (evidence: `app/services/project_state.py`)
- Estado del proyecto → Motor de indicadores: evalúa indicadores (evidence: `app/services/project_state.py`)
- Estado del proyecto → Planificación: usa planificación (evidence: `app/services/project_state.py`)
- Tareas y recursos → Auditoría: registra actividad (evidence: `app/blueprints/work/__init__.py`)
- Gestión de cambios y KPI → Aplicación de cambios: aplica cambios (evidence: `app/blueprints/management/__init__.py`)
- Gestión de cambios y KPI → Motor de indicadores: valida indicadores (evidence: `app/blueprints/management/__init__.py`)
- Aplicación de cambios → Estado del proyecto: recalcula estado (evidence: `app/services/change_service.py`)
- Tableros → Agregación de métricas: obtiene métricas (evidence: `app/blueprints/dashboards/__init__.py`)
- Informes PDF → Generación PDF: genera informe (evidence: `app/blueprints/reports/__init__.py`)
- Agregación de métricas → Cálculo de costos: usa cálculos (evidence: `app/services/dashboard.py`)
- Agregación de métricas → Moneda y tasas: convierte valores (evidence: `app/services/dashboard.py`)
- Generación PDF → Agregación de métricas: reutiliza métricas (evidence: `app/services/pdf_report.py`)
- Generación PDF → Moneda y tasas: formatea moneda (evidence: `app/services/pdf_report.py`)
- Preferencia de moneda → Moneda y tasas: gestiona tasas (evidence: `app/blueprints/currency/__init__.py`)
- Moneda y tasas → Proveedor de tasas: consulta tasas (evidence: `README.md`)
- Moneda y tasas → Modelos persistentes: persiste tasas (evidence: `app/services/currency.py`)
- Privacidad de cuenta → Auditoría: audita privacidad (evidence: `app/blueprints/privacy/__init__.py`)
- Privacidad de cuenta → Modelos persistentes: anonimiza autoría
- Autenticación y roles → Auditoría: registra eventos (evidence: `app/blueprints/auth/__init__.py`)
- Autenticación y roles → Modelos persistentes: consulta identidad (evidence: `app/blueprints/auth/__init__.py`)
- Tareas y recursos → Modelos persistentes: lee y actualiza (evidence: `app/blueprints/work/__init__.py`)
- Gestión de cambios y KPI → Modelos persistentes: lee y actualiza (evidence: `app/blueprints/management/__init__.py`)
- Modelos persistentes → PostgreSQL / Neon: persiste entidades (evidence: `README.md`)
