# shirinadan/watts_happening architecture

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

- Interactive diagram: https://gitdiagram.com/shirinadan/watts_happening
- Repository: https://github.com/shirinadan/watts_happening

## Overview

Watts Happening is a browser-only dashboard for screening candidate coordination pairings between Dominion Energy South Carolina and Georgia Power projects. A user searches or selects a pairing, then reviews its project details, date and reference-area comparisons, score, map, and ranked list. The local opportunity module builds candidate records from static project data and delegates date, distance, and ranking calculations to the metrics library. The map uses public-area references rather than utility asset coordinates. The Python cost-impact estimator is a separate prototype; sampled code does not show it wired into the dashboard.

Main entry points: [`frontend/src/App.jsx`](https://github.com/shirinadan/watts_happening/blob/main/frontend/src/App.jsx) (Dashboard UI), [`frontend/src/main.jsx`](https://github.com/shirinadan/watts_happening/blob/main/frontend/src/main.jsx) (React Entry), [`frontend/src/components/OpportunityMap.jsx`](https://github.com/shirinadan/watts_happening/blob/main/frontend/src/components/OpportunityMap.jsx) (Opportunity Map), [`frontend/src/data/opportunities.js`](https://github.com/shirinadan/watts_happening/blob/main/frontend/src/data/opportunities.js) (Project Pairings)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_dashboard["Dashboard"]
  node_entry["React Entry<br/>[main.jsx]"]
  node_app["Dashboard UI<br/>[App.jsx]"]
  node_map["Opportunity Map<br/>[OpportunityMap.jsx]"]
end

subgraph group_screening["Pairing Screening"]
  node_opportunities["Project Pairings<br/>[opportunities.js]"]
  node_metrics["Date And Distance Metrics"]
end

subgraph group_prototype["Impact Prototype"]
  node_estimator["Cost Impact Estimator"]
end

node_user(("Dashboard User"))
node_tiles["OpenStreetMap Tiles"]

node_user -->|"opens dashboard"| node_entry
node_entry -->|"renders"| node_app
node_app -->|"reads pairings"| node_opportunities
node_opportunities -->|"calculates and ranks"| node_metrics
node_app -->|"renders map"| node_map
node_map -->|"loads tiles"| node_tiles

click node_entry "https://github.com/shirinadan/watts_happening/blob/main/frontend/src/main.jsx"
click node_app "https://github.com/shirinadan/watts_happening/blob/main/frontend/src/App.jsx"
click node_map "https://github.com/shirinadan/watts_happening/blob/main/frontend/src/components/OpportunityMap.jsx"
click node_opportunities "https://github.com/shirinadan/watts_happening/blob/main/frontend/src/data/opportunities.js"
click node_metrics "https://github.com/shirinadan/watts_happening/blob/main/frontend/src/lib/opportunityMetrics.js"
click node_estimator "https://github.com/shirinadan/watts_happening/blob/main/src/impact_estimator.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_app,node_map,node_user toneBlue
class node_opportunities,node_metrics toneAmber
class node_estimator toneMint
class node_tiles toneIndigo
```

## Components

### Dashboard

- [React Entry](https://github.com/shirinadan/watts_happening/blob/main/frontend/src/main.jsx): `frontend/src/main.jsx`
- [Dashboard UI](https://github.com/shirinadan/watts_happening/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Opportunity Map](https://github.com/shirinadan/watts_happening/blob/main/frontend/src/components/OpportunityMap.jsx): `frontend/src/components/OpportunityMap.jsx`

### Pairing Screening

- [Project Pairings](https://github.com/shirinadan/watts_happening/blob/main/frontend/src/data/opportunities.js): `frontend/src/data/opportunities.js`
- [Date And Distance Metrics](https://github.com/shirinadan/watts_happening/blob/main/frontend/src/lib/opportunityMetrics.js): `frontend/src/lib/opportunityMetrics.js`

### Impact Prototype

- [Cost Impact Estimator](https://github.com/shirinadan/watts_happening/blob/main/src/impact_estimator.py): `src/impact_estimator.py`

### Other components

- **Dashboard User**
- **OpenStreetMap Tiles**

## Connections

- Dashboard User → React Entry: opens dashboard
- React Entry → Dashboard UI: renders
- Dashboard UI → Project Pairings: reads pairings
- Project Pairings → Date And Distance Metrics: calculates and ranks
- Dashboard UI → Opportunity Map: renders map
- Opportunity Map → OpenStreetMap Tiles: loads tiles
