# shuiny/carta-solar architecture

> Architecture diagram of the GitHub repository shuiny/carta-solar, 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/shuiny/carta-solar
- Repository: https://github.com/shuiny/carta-solar

## Overview

Carta solar is a browser-based bioclimatic design tool. The main user workflow is to open the web app and use its solar, climate, site, or building-analysis capabilities; users can also search weather stations for EPW data. The README identifies these capabilities and supporting data files, but the app implementation in index.html was not sampled, so internal runtime calls between features are not inferred. The station-generation script and its external inputs are visible in the excerpt; other runtime links are based on README statements.

Main entry points: [`index.html`](https://github.com/shuiny/carta-solar/blob/main/index.html) (Design app), [`actualizar_estaciones.py`](https://github.com/shuiny/carta-solar/blob/main/actualizar_estaciones.py) (Station generator), [`onebuilding.json`](https://github.com/shuiny/carta-solar/blob/main/onebuilding.json) (OneBuilding stations), [`energyplus.json`](https://github.com/shuiny/carta-solar/blob/main/energyplus.json) (EnergyPlus stations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Browser design tool"]
  node_webapp["Design app<br/>[index.html]"]
  node_solar["Solar chart<br/>[index.html]"]
  node_climate["EPW analysis<br/>[index.html]"]
  node_comfort["Comfort analysis<br/>[index.html]"]
end

subgraph group_weather["Weather data"]
  node_stationsearch["Station search<br/>[index.html]"]
  node_onebuilding[("OneBuilding stations<br/>[onebuilding.json]")]
  node_energyplus[("EnergyPlus stations<br/>[energyplus.json]")]
  node_generator["Station generator"]
  node_cache[("Header cache<br/>[cabeceras.json]")]
end

subgraph group_analysis["Site and building analysis"]
  node_site["3D site analysis<br/>[index.html]"]
  node_siteviewer["Site viewer<br/>[visor-sitio.bin]"]
  node_ifc["IFC ventilation<br/>[index.html]"]
  node_modelviewer["3D model viewer<br/>[visor-3d.bin]"]
  node_diagrams["Operation diagrams<br/>[index.html]"]
end

node_user(("Designer"))
node_onebuilding_source["OneBuilding weather source"]
node_energyplus_source["EnergyPlus weather source"]

node_user -->|"opens"| node_webapp
node_webapp -->|"offers"| node_solar
node_webapp -->|"offers"| node_climate
node_webapp -->|"offers"| node_comfort
node_webapp -->|"offers"| node_stationsearch
node_stationsearch -->|"uses station data"| node_onebuilding
node_stationsearch -->|"uses station data"| node_energyplus
node_generator -->|"fetches KML and EPW"| node_onebuilding_source
node_generator -->|"fetches GeoJSON"| node_energyplus_source
node_generator -->|"writes stations"| node_onebuilding
node_generator -->|"writes stations"| node_energyplus
node_generator -->|"reads and writes"| node_cache
node_webapp -->|"offers"| node_site
node_site -->|"loads on opening"| node_siteviewer
node_webapp -->|"offers"| node_ifc
node_ifc -->|"loads on opening"| node_modelviewer
node_webapp -->|"offers"| node_diagrams

click node_webapp "https://github.com/shuiny/carta-solar/blob/main/index.html"
click node_solar "https://github.com/shuiny/carta-solar/blob/main/index.html"
click node_climate "https://github.com/shuiny/carta-solar/blob/main/index.html"
click node_comfort "https://github.com/shuiny/carta-solar/blob/main/index.html"
click node_stationsearch "https://github.com/shuiny/carta-solar/blob/main/index.html"
click node_onebuilding "https://github.com/shuiny/carta-solar/blob/main/onebuilding.json"
click node_energyplus "https://github.com/shuiny/carta-solar/blob/main/energyplus.json"
click node_generator "https://github.com/shuiny/carta-solar/blob/main/actualizar_estaciones.py"
click node_cache "https://github.com/shuiny/carta-solar/blob/main/cabeceras.json"
click node_site "https://github.com/shuiny/carta-solar/blob/main/index.html"
click node_siteviewer "https://github.com/shuiny/carta-solar/blob/main/visor-sitio.bin"
click node_ifc "https://github.com/shuiny/carta-solar/blob/main/index.html"
click node_modelviewer "https://github.com/shuiny/carta-solar/blob/main/visor-3d.bin"
click node_diagrams "https://github.com/shuiny/carta-solar/blob/main/index.html"

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_webapp,node_solar,node_climate,node_comfort toneBlue
class node_stationsearch,node_onebuilding,node_energyplus,node_generator,node_cache toneAmber
class node_site,node_siteviewer,node_ifc,node_modelviewer,node_diagrams toneMint
class node_user,node_onebuilding_source,node_energyplus_source toneIndigo
```

## Components

### Browser design tool

- [Design app](https://github.com/shuiny/carta-solar/blob/main/index.html): `index.html`
- [Solar chart](https://github.com/shuiny/carta-solar/blob/main/index.html): `index.html`
- [EPW analysis](https://github.com/shuiny/carta-solar/blob/main/index.html): `index.html`
- [Comfort analysis](https://github.com/shuiny/carta-solar/blob/main/index.html): `index.html`

### Weather data

- [Station search](https://github.com/shuiny/carta-solar/blob/main/index.html): `index.html`
- [OneBuilding stations](https://github.com/shuiny/carta-solar/blob/main/onebuilding.json): `onebuilding.json`
- [EnergyPlus stations](https://github.com/shuiny/carta-solar/blob/main/energyplus.json): `energyplus.json`
- [Station generator](https://github.com/shuiny/carta-solar/blob/main/actualizar_estaciones.py): `actualizar_estaciones.py`
- [Header cache](https://github.com/shuiny/carta-solar/blob/main/cabeceras.json): `cabeceras.json`

### Site and building analysis

- [3D site analysis](https://github.com/shuiny/carta-solar/blob/main/index.html): `index.html`
- [Site viewer](https://github.com/shuiny/carta-solar/blob/main/visor-sitio.bin): `visor-sitio.bin`
- [IFC ventilation](https://github.com/shuiny/carta-solar/blob/main/index.html): `index.html`
- [3D model viewer](https://github.com/shuiny/carta-solar/blob/main/visor-3d.bin): `visor-3d.bin`
- [Operation diagrams](https://github.com/shuiny/carta-solar/blob/main/index.html): `index.html`

### Other components

- **Designer**
- **OneBuilding weather source**
- **EnergyPlus weather source**

## Connections

- Designer → Design app: opens (evidence: `README.md`)
- Design app → Solar chart: offers (evidence: `README.md`)
- Design app → EPW analysis: offers (evidence: `README.md`)
- Design app → Comfort analysis: offers (evidence: `README.md`)
- Design app → Station search: offers (evidence: `README.md`)
- Station search → OneBuilding stations: uses station data (evidence: `README.md`)
- Station search → EnergyPlus stations: uses station data (evidence: `README.md`)
- Station generator → OneBuilding weather source: fetches KML and EPW (evidence: `actualizar_estaciones.py`)
- Station generator → EnergyPlus weather source: fetches GeoJSON (evidence: `actualizar_estaciones.py`)
- Station generator → OneBuilding stations: writes stations (evidence: `actualizar_estaciones.py`)
- Station generator → EnergyPlus stations: writes stations (evidence: `actualizar_estaciones.py`)
- Station generator → Header cache: reads and writes (evidence: `actualizar_estaciones.py`)
- Design app → 3D site analysis: offers (evidence: `README.md`)
- 3D site analysis → Site viewer: loads on opening (evidence: `README.md`)
- Design app → IFC ventilation: offers (evidence: `README.md`)
- IFC ventilation → 3D model viewer: loads on opening (evidence: `README.md`)
- Design app → Operation diagrams: offers (evidence: `README.md`)
