# dflores296/power-node-web architecture

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

- Interactive diagram: https://gitdiagram.com/dflores296/power-node-web
- Repository: https://github.com/dflores296/power-node-web
- Video tour (about a minute): https://gitdiagram.com/dflores296/power-node-web/video

## Overview

Power Node Web es una aplicación Blazor WebAssembly para calcular cuadros de carga de tableros conforme a la NOM-001-SEDE-2012 y generar entregables verificables. El flujo principal va de la captura del tablero y sus circuitos al cálculo de derivados y alimentador, la selección y verificación de conductores y canalizaciones, y la presentación del cuadro y la memoria. La documentación también describe balanceo, verificaciones de tableros, archivos de proyecto y diagramas. Las relaciones se limitan a las explícitas en los fragmentos y la descripción del arranque; no se inspeccionaron las implementaciones completas de los subsistemas no muestreados.

Main entry points: [`src/PowerNode.Web.Modelo/CuadroDeCarga.cs`](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web.Modelo/CuadroDeCarga.cs) (Cálculo del cuadro), [`src/PowerNode.Web/Servicios/ProyectoActual.cs`](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web/Servicios/ProyectoActual.cs) (Proyecto actual), [`src/PowerNode.Web/Program.cs`](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web/Program.cs) (Arranque web), [`src/PowerNode.Web.Modelo/MotorNom.cs`](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web.Modelo/MotorNom.cs) (Motor NOM)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Aplicación web"]
  node_host["Arranque web<br/>[Program.cs]"]
  node_current["Proyecto actual<br/>[ProyectoActual.cs]"]
  node_motor["Motor NOM<br/>[MotorNom.cs]"]
end

subgraph group_domain["Modelo eléctrico"]
  node_project["Proyecto<br/>[Proyecto.cs]"]
  node_board["Tablero<br/>[Tablero.cs]"]
  node_circuit["Circuito derivado"]
  node_load["Carga y aparatos<br/>[CuadroDeCarga.cs]"]
end

subgraph group_calc["Cálculo eléctrico"]
  node_calcboard["Cálculo del cuadro<br/>[CuadroDeCarga.cs]"]
  node_branch["Derivados"]
  node_feeder["Alimentador"]
  node_conductors["Selección conductor"]
  node_conduit["Canalizaciones"]
  node_balance["Balance de fases<br/>[BalanceoDeFases.cs]"]
  node_derivcheck["Reglas derivación"]
end

subgraph group_norm["Datos normativos"]
  node_nomtables[("Tablas NOM<br/>[FuenteTablas.cs]")]
  node_tablejson["Lectores JSON"]
end

subgraph group_deliver["Entregables"]
  node_result["Cuadro y resultados<br/>[CuadroDeCarga.cs]"]
  node_memory["Memoria de cálculo"]
  node_archive["Archivo de tablero"]
  node_diagram["Diagrama unifilar<br/>[AcomodoUnifilar.cs]"]
end

node_user(("Proyectista"))

node_user -->|"captura tablero"| node_current
node_host -->|"carga una vez"| node_motor
node_host -->|"registra servicio"| node_current
node_current -->|"mantiene proyecto"| node_project
node_project -->|"modela tablero"| node_board
node_board -->|"contiene circuitos"| node_circuit
node_current -->|"actualiza cálculo"| node_calcboard
node_calcboard -->|"calcula derivados"| node_branch
node_calcboard -->|"calcula alimentador"| node_feeder
node_calcboard -->|"dimensiona conductores"| node_conductors
node_calcboard -->|"dimensiona canalizaciones"| node_conduit
node_calcboard -->|"propone balanceo"| node_balance
node_calcboard -->|"verifica derivaciones"| node_derivcheck
node_motor -->|"lee tablas"| node_nomtables
node_tablejson -->|"interpreta tablas"| node_nomtables
node_calcboard -->|"produce resultados"| node_result
node_result -->|"genera memoria"| node_memory
node_result -->|"guarda o abre"| node_archive
node_calcboard -.->|"acomoda topología"| node_diagram
node_user -->|"consulta"| node_result

click node_host "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web/Program.cs"
click node_current "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web/Servicios/ProyectoActual.cs"
click node_motor "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web.Modelo/MotorNom.cs"
click node_project "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Domain/Proyectos/Proyecto.cs"
click node_board "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Domain/Proyectos/Tablero.cs"
click node_circuit "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Domain/Proyectos/CircuitoDerivado.cs"
click node_load "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web.Modelo/CuadroDeCarga.cs"
click node_calcboard "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web.Modelo/CuadroDeCarga.cs"
click node_branch "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Calculo/Casos/CalculadoraCircuitoDerivadoNoMotor.cs"
click node_feeder "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Calculo/Casos/CalculadoraAlimentador.cs"
click node_conductors "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Calculo/Casos/SeleccionConductor.cs"
click node_conduit "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Calculo/Canalizaciones/CalculadoraOcupacion.cs"
click node_balance "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Calculo/Tableros/BalanceoDeFases.cs"
click node_derivcheck "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Calculo/Derivaciones/VerificadorDerivacion.cs"
click node_nomtables "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Normativa/FuenteTablas.cs"
click node_tablejson "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Normativa/TablasDeCanalizacionJson.cs"
click node_result "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web.Modelo/CuadroDeCarga.cs"
click node_memory "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web.Modelo/Memoria/MemoriaDeCalculo.cs"
click node_archive "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web.Modelo/Archivo/ArchivoDelCuadro.cs"
click node_diagram "https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Calculo/Diagramas/AcomodoUnifilar.cs"

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_host,node_current,node_motor toneBlue
class node_project,node_board,node_circuit,node_load toneAmber
class node_calcboard,node_branch,node_feeder,node_conductors,node_conduit,node_balance,node_derivcheck toneMint
class node_nomtables,node_tablejson toneRose
class node_result,node_memory,node_archive,node_diagram,node_user toneIndigo
```

## Components

### Aplicación web

- [Arranque web](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web/Program.cs): `src/PowerNode.Web/Program.cs`
- [Proyecto actual](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web/Servicios/ProyectoActual.cs): `src/PowerNode.Web/Servicios/ProyectoActual.cs`
- [Motor NOM](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web.Modelo/MotorNom.cs): `src/PowerNode.Web.Modelo/MotorNom.cs`

### Modelo eléctrico

- [Proyecto](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Domain/Proyectos/Proyecto.cs): `src/PowerNode.DesignSuite.Domain/Proyectos/Proyecto.cs`
- [Tablero](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Domain/Proyectos/Tablero.cs): `src/PowerNode.DesignSuite.Domain/Proyectos/Tablero.cs`
- [Circuito derivado](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Domain/Proyectos/CircuitoDerivado.cs): `src/PowerNode.DesignSuite.Domain/Proyectos/CircuitoDerivado.cs`
- [Carga y aparatos](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web.Modelo/CuadroDeCarga.cs): `src/PowerNode.Web.Modelo/CuadroDeCarga.cs`

### Cálculo eléctrico

- [Cálculo del cuadro](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web.Modelo/CuadroDeCarga.cs): `src/PowerNode.Web.Modelo/CuadroDeCarga.cs`
- [Derivados](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Calculo/Casos/CalculadoraCircuitoDerivadoNoMotor.cs): `src/PowerNode.DesignSuite.Calculo/Casos/CalculadoraCircuitoDerivadoNoMotor.cs`
- [Alimentador](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Calculo/Casos/CalculadoraAlimentador.cs): `src/PowerNode.DesignSuite.Calculo/Casos/CalculadoraAlimentador.cs`
- [Selección conductor](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Calculo/Casos/SeleccionConductor.cs): `src/PowerNode.DesignSuite.Calculo/Casos/SeleccionConductor.cs`
- [Canalizaciones](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Calculo/Canalizaciones/CalculadoraOcupacion.cs): `src/PowerNode.DesignSuite.Calculo/Canalizaciones/CalculadoraOcupacion.cs`
- [Balance de fases](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Calculo/Tableros/BalanceoDeFases.cs): `src/PowerNode.DesignSuite.Calculo/Tableros/BalanceoDeFases.cs`
- [Reglas derivación](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Calculo/Derivaciones/VerificadorDerivacion.cs): `src/PowerNode.DesignSuite.Calculo/Derivaciones/VerificadorDerivacion.cs`

### Datos normativos

- [Tablas NOM](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Normativa/FuenteTablas.cs): `src/PowerNode.DesignSuite.Normativa/FuenteTablas.cs`
- [Lectores JSON](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Normativa/TablasDeCanalizacionJson.cs): `src/PowerNode.DesignSuite.Normativa/TablasDeCanalizacionJson.cs`

### Entregables

- [Cuadro y resultados](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web.Modelo/CuadroDeCarga.cs): `src/PowerNode.Web.Modelo/CuadroDeCarga.cs`
- [Memoria de cálculo](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web.Modelo/Memoria/MemoriaDeCalculo.cs): `src/PowerNode.Web.Modelo/Memoria/MemoriaDeCalculo.cs`
- [Archivo de tablero](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.Web.Modelo/Archivo/ArchivoDelCuadro.cs): `src/PowerNode.Web.Modelo/Archivo/ArchivoDelCuadro.cs`
- [Diagrama unifilar](https://github.com/dflores296/power-node-web/blob/main/src/PowerNode.DesignSuite.Calculo/Diagramas/AcomodoUnifilar.cs): `src/PowerNode.DesignSuite.Calculo/Diagramas/AcomodoUnifilar.cs`

### Other components

- **Proyectista**

## Connections

- Proyectista → Proyecto actual: captura tablero
- Arranque web → Motor NOM: carga una vez
- Arranque web → Proyecto actual: registra servicio
- Proyecto actual → Proyecto: mantiene proyecto
- Proyecto → Tablero: modela tablero
- Tablero → Circuito derivado: contiene circuitos
- Proyecto actual → Cálculo del cuadro: actualiza cálculo
- Cálculo del cuadro → Derivados: calcula derivados
- Cálculo del cuadro → Alimentador: calcula alimentador
- Cálculo del cuadro → Selección conductor: dimensiona conductores
- Cálculo del cuadro → Canalizaciones: dimensiona canalizaciones
- Cálculo del cuadro → Balance de fases: propone balanceo
- Cálculo del cuadro → Reglas derivación: verifica derivaciones
- Motor NOM → Tablas NOM: lee tablas
- Lectores JSON → Tablas NOM: interpreta tablas
- Cálculo del cuadro → Cuadro y resultados: produce resultados
- Cuadro y resultados → Memoria de cálculo: genera memoria
- Cuadro y resultados → Archivo de tablero: guarda o abre
- Cálculo del cuadro → Diagrama unifilar: acomoda topología
- Proyectista → Cuadro y resultados: consulta
