# bryan-1001/volthub architecture

> Architecture diagram of the GitHub repository bryan-1001/volthub, 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/bryan-1001/volthub
- Repository: https://github.com/bryan-1001/volthub

## Overview

VoltHub is a Next.js marketing and lead-generation site for EV charging and energy products, with product discovery, solar/EV solution guidance, ROI calculators, quote/contact requests, and AI customer support. A typical visitor explores products or solutions, evaluates fit and cost, then can request a quote or contact support. The graph captures those product areas and the evidenced data/API paths; several page-to-page transitions and unsampled feature implementations are not established by the excerpts, so those links are omitted.

Main entry points: [`src/app/products/ProductsClient.tsx`](https://github.com/bryan-1001/volthub/blob/main/src/app/products/ProductsClient.tsx) (Product Browser), [`src/app/products/components/ProductGrid.tsx`](https://github.com/bryan-1001/volthub/blob/main/src/app/products/components/ProductGrid.tsx) (Product Grid), [`src/app/tools/roi-calculator/components/SolarStorageCalculator.tsx`](https://github.com/bryan-1001/volthub/blob/main/src/app/tools/roi-calculator/components/SolarStorageCalculator.tsx) (Solar ROI), [`src/app/api/chat/route.ts`](https://github.com/bryan-1001/volthub/blob/main/src/app/api/chat/route.ts) (Chat API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Visitor Experience"]
  node_product_ui["Product Browser<br/>[ProductsClient.tsx]"]
  node_home["Home Showcase<br/>[homeData.ts]"]
  node_insights["Energy Insights<br/>[insights-data.ts]"]
  node_contact_ui["Contact Form<br/>[ContactForm.tsx]"]
  node_chat_widget["Chat Support<br/>[ChatSupport.tsx]"]
end

subgraph group_catalog["Products and Solutions"]
  node_product_grid["Product Grid<br/>[ProductGrid.tsx]"]
  node_product_data[("Product Catalog<br/>[productData.ts]")]
  node_product_detail["Product Details<br/>[page.tsx]"]
  node_solutions["Solar Guidance"]
  node_solar_service["Solar Installation"]
  node_ev_service["EV Charging"]
end

subgraph group_tools["Calculators"]
  node_solar_calc["Solar ROI"]
  node_ev_calc["EV ROI"]
  node_roi_formulas["ROI Formulas<br/>[formulas.ts]"]
  node_roi_catalogs["ROI Catalogs<br/>[catalogs.ts]"]
end

subgraph group_services["APIs and Support"]
  node_quote_api["Quote API<br/>[route.ts]"]
  node_solar_quote_api["Solar Quote API<br/>[route.ts]"]
  node_contact_api["Contact API<br/>[route.ts]"]
  node_email["Email Templates<br/>[email.ts]"]
  node_chat_api["Chat API<br/>[route.ts]"]
  node_knowledge["RAG Knowledge<br/>[knowledgeBase.ts]"]
end

node_visitor(("Site Visitor"))
node_ollama{{"Ollama Service"}}

node_visitor -->|"browses"| node_product_ui
node_product_ui -->|"renders"| node_product_grid
node_product_ui -->|"reads"| node_product_data
node_product_grid -->|"reads"| node_product_data
node_product_grid -.->|"links to"| node_product_detail
node_visitor -.->|"calculates ROI"| node_solar_calc
node_solar_calc -->|"calculates with"| node_roi_formulas
node_solar_calc -->|"selects from"| node_roi_catalogs
node_ev_calc -.->|"calculates with"| node_roi_formulas
node_visitor -.->|"submits inquiry"| node_contact_ui
node_contact_api -->|"uses templates"| node_email
node_quote_api -->|"uses templates"| node_email
node_solar_quote_api -->|"uses templates"| node_email
node_visitor -->|"asks questions"| node_chat_widget
node_chat_widget -.->|"sends messages"| node_chat_api
node_chat_api -->|"retrieves context"| node_knowledge
node_chat_api -->|"requests inference"| node_ollama

click node_product_ui "https://github.com/bryan-1001/volthub/blob/main/src/app/products/ProductsClient.tsx"
click node_product_grid "https://github.com/bryan-1001/volthub/blob/main/src/app/products/components/ProductGrid.tsx"
click node_product_data "https://github.com/bryan-1001/volthub/blob/main/src/app/products/components/productData.ts"
click node_product_detail "https://github.com/bryan-1001/volthub/blob/main/src/app/products/%5Bid%5D/page.tsx"
click node_home "https://github.com/bryan-1001/volthub/blob/main/src/app/(home)/components/homeData.ts"
click node_solutions "https://github.com/bryan-1001/volthub/tree/main/src/app/solutions"
click node_solar_service "https://github.com/bryan-1001/volthub/tree/main/src/app/services/solar-installation"
click node_ev_service "https://github.com/bryan-1001/volthub/tree/main/src/app/services/ev-charging"
click node_insights "https://github.com/bryan-1001/volthub/blob/main/src/app/insights/components/insights-data.ts"
click node_solar_calc "https://github.com/bryan-1001/volthub/blob/main/src/app/tools/roi-calculator/components/SolarStorageCalculator.tsx"
click node_ev_calc "https://github.com/bryan-1001/volthub/blob/main/src/app/tools/ev-charger-roi-calculator/components/EvFranchiseCalculator.tsx"
click node_roi_formulas "https://github.com/bryan-1001/volthub/blob/main/src/lib/roi/formulas.ts"
click node_roi_catalogs "https://github.com/bryan-1001/volthub/blob/main/src/lib/roi/catalogs.ts"
click node_contact_ui "https://github.com/bryan-1001/volthub/blob/main/src/app/contact/components/ContactForm.tsx"
click node_quote_api "https://github.com/bryan-1001/volthub/blob/main/src/app/api/quote/route.ts"
click node_solar_quote_api "https://github.com/bryan-1001/volthub/blob/main/src/app/api/solar-quote/route.ts"
click node_contact_api "https://github.com/bryan-1001/volthub/blob/main/src/app/api/contact/route.ts"
click node_email "https://github.com/bryan-1001/volthub/blob/main/src/lib/email.ts"
click node_chat_widget "https://github.com/bryan-1001/volthub/blob/main/src/components/common/ChatSupport.tsx"
click node_chat_api "https://github.com/bryan-1001/volthub/blob/main/src/app/api/chat/route.ts"
click node_knowledge "https://github.com/bryan-1001/volthub/blob/main/src/lib/rag/knowledgeBase.ts"

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_product_ui,node_home,node_insights,node_contact_ui,node_chat_widget toneBlue
class node_product_grid,node_product_data,node_product_detail,node_solutions,node_solar_service,node_ev_service toneAmber
class node_solar_calc,node_ev_calc,node_roi_formulas,node_roi_catalogs toneMint
class node_quote_api,node_solar_quote_api,node_contact_api,node_email,node_chat_api,node_knowledge toneRose
class node_visitor,node_ollama toneIndigo
```

## Components

### Visitor Experience

- [Product Browser](https://github.com/bryan-1001/volthub/blob/main/src/app/products/ProductsClient.tsx): `src/app/products/ProductsClient.tsx`
- [Home Showcase](https://github.com/bryan-1001/volthub/blob/main/src/app/(home)/components/homeData.ts): `src/app/(home)/components/homeData.ts`
- [Energy Insights](https://github.com/bryan-1001/volthub/blob/main/src/app/insights/components/insights-data.ts): `src/app/insights/components/insights-data.ts`
- [Contact Form](https://github.com/bryan-1001/volthub/blob/main/src/app/contact/components/ContactForm.tsx): `src/app/contact/components/ContactForm.tsx`
- [Chat Support](https://github.com/bryan-1001/volthub/blob/main/src/components/common/ChatSupport.tsx): `src/components/common/ChatSupport.tsx`

### Products and Solutions

- [Product Grid](https://github.com/bryan-1001/volthub/blob/main/src/app/products/components/ProductGrid.tsx): `src/app/products/components/ProductGrid.tsx`
- [Product Catalog](https://github.com/bryan-1001/volthub/blob/main/src/app/products/components/productData.ts): `src/app/products/components/productData.ts`
- [Product Details](https://github.com/bryan-1001/volthub/blob/main/src/app/products/%5Bid%5D/page.tsx): `src/app/products/[id]/page.tsx`
- [Solar Guidance](https://github.com/bryan-1001/volthub/tree/main/src/app/solutions): `src/app/solutions`
- [Solar Installation](https://github.com/bryan-1001/volthub/tree/main/src/app/services/solar-installation): `src/app/services/solar-installation`
- [EV Charging](https://github.com/bryan-1001/volthub/tree/main/src/app/services/ev-charging): `src/app/services/ev-charging`

### Calculators

- [Solar ROI](https://github.com/bryan-1001/volthub/blob/main/src/app/tools/roi-calculator/components/SolarStorageCalculator.tsx): `src/app/tools/roi-calculator/components/SolarStorageCalculator.tsx`
- [EV ROI](https://github.com/bryan-1001/volthub/blob/main/src/app/tools/ev-charger-roi-calculator/components/EvFranchiseCalculator.tsx): `src/app/tools/ev-charger-roi-calculator/components/EvFranchiseCalculator.tsx`
- [ROI Formulas](https://github.com/bryan-1001/volthub/blob/main/src/lib/roi/formulas.ts): `src/lib/roi/formulas.ts`
- [ROI Catalogs](https://github.com/bryan-1001/volthub/blob/main/src/lib/roi/catalogs.ts): `src/lib/roi/catalogs.ts`

### APIs and Support

- [Quote API](https://github.com/bryan-1001/volthub/blob/main/src/app/api/quote/route.ts): `src/app/api/quote/route.ts`
- [Solar Quote API](https://github.com/bryan-1001/volthub/blob/main/src/app/api/solar-quote/route.ts): `src/app/api/solar-quote/route.ts`
- [Contact API](https://github.com/bryan-1001/volthub/blob/main/src/app/api/contact/route.ts): `src/app/api/contact/route.ts`
- [Email Templates](https://github.com/bryan-1001/volthub/blob/main/src/lib/email.ts): `src/lib/email.ts`
- [Chat API](https://github.com/bryan-1001/volthub/blob/main/src/app/api/chat/route.ts): `src/app/api/chat/route.ts`
- [RAG Knowledge](https://github.com/bryan-1001/volthub/blob/main/src/lib/rag/knowledgeBase.ts): `src/lib/rag/knowledgeBase.ts`

### Other components

- **Site Visitor**
- **Ollama Service**

## Connections

- Site Visitor → Product Browser: browses (evidence: `src/app/products/ProductsClient.tsx`)
- Product Browser → Product Grid: renders (evidence: `src/app/products/ProductsClient.tsx`)
- Product Browser → Product Catalog: reads (evidence: `src/app/products/ProductsClient.tsx`)
- Product Grid → Product Catalog: reads (evidence: `src/app/products/components/ProductGrid.tsx`)
- Product Grid → Product Details: links to
- Site Visitor → Solar ROI: calculates ROI
- Solar ROI → ROI Formulas: calculates with (evidence: `src/app/tools/roi-calculator/components/SolarStorageCalculator.tsx`)
- Solar ROI → ROI Catalogs: selects from (evidence: `src/app/tools/roi-calculator/components/SolarStorageCalculator.tsx`)
- EV ROI → ROI Formulas: calculates with
- Site Visitor → Contact Form: submits inquiry
- Contact API → Email Templates: uses templates (evidence: `src/app/api/contact/route.ts`)
- Quote API → Email Templates: uses templates (evidence: `src/app/api/quote/route.ts`)
- Solar Quote API → Email Templates: uses templates (evidence: `src/app/api/solar-quote/route.ts`)
- Site Visitor → Chat Support: asks questions (evidence: `README.md`)
- Chat Support → Chat API: sends messages
- Chat API → RAG Knowledge: retrieves context (evidence: `src/app/api/chat/route.ts`)
- Chat API → Ollama Service: requests inference (evidence: `src/app/api/chat/route.ts`)
