# albertshiney/websitegenerator architecture

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

- Interactive diagram: https://gitdiagram.com/albertshiney/websitegenerator
- Repository: https://github.com/albertshiney/websitegenerator

## Overview

This repository includes an electrician-business website template. Its principal user workflow is browsing routed pages and service information, then reaching contact details or a quote form. The graph also preserves pricing, inspiration, company, and content-driven service pages. Evidence is strongest for the routing and shared page components; unsampled form behavior and the separate dashboard and tools are not connected because their runtime relationships are not shown.

Main entry points: [`templates/electrician/src/pages/ContentPage.jsx`](https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/pages/ContentPage.jsx) (Content page), [`templates/electrician/src/App.jsx`](https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/App.jsx) (Route application), [`templates/electrician/src/pages/HomePage.jsx`](https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/pages/HomePage.jsx) (Home page), [`templates/electrician/src/pages/ServicesPage.jsx`](https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/pages/ServicesPage.jsx) (Services page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_routing["Routing and content"]
  node_app["Route application<br/>[App.jsx]"]
  node_contentdata["Service page content"]
end

subgraph group_pages["Business pages"]
  node_home["Home page<br/>[HomePage.jsx]"]
  node_services["Services page<br/>[ServicesPage.jsx]"]
  node_contentpage["Content page<br/>[ContentPage.jsx]"]
  node_otherpages["Other site pages"]
end

subgraph group_components["Page components"]
  node_hero["Page hero<br/>[PageHero.jsx]"]
  node_contact["Contact section<br/>[ContactSection.jsx]"]
  node_quote["Quote form<br/>[QuoteForm.jsx]"]
  node_servicesgrid["Services grid<br/>[ServicesGrid.jsx]"]
  node_reviews["Reviews section<br/>[Reviews.jsx]"]
  node_gallery["Project gallery<br/>[Gallery.jsx]"]
end

subgraph group_shared["Shared configuration"]
  node_siteconfig["Site navigation and data<br/>[site.js]"]
  node_business["Business settings<br/>[business.js]"]
  node_seo["Route metadata<br/>[useSEO.js]"]
  node_markdown["Inline markdown<br/>[md.jsx]"]
end

node_visitor(("Site visitor"))

node_visitor -->|"opens site"| node_app
node_app -->|"routes to"| node_home
node_app -->|"routes to"| node_services
node_app -->|"routes to"| node_otherpages
node_app -->|"loads routes"| node_contentdata
node_app -->|"renders content"| node_contentpage
node_home -->|"renders"| node_contact
node_home -->|"renders"| node_quote
node_home -->|"renders"| node_servicesgrid
node_home -->|"renders"| node_reviews
node_services -->|"renders"| node_servicesgrid
node_services -->|"renders"| node_reviews
node_services -->|"renders"| node_contact
node_services -->|"reads services"| node_siteconfig
node_contentpage -->|"renders"| node_hero
node_contentpage -->|"renders"| node_contact
node_contentpage -->|"renders"| node_reviews
node_contentpage -->|"renders"| node_gallery
node_contentpage -->|"uses renderer"| node_markdown
node_hero -->|"renders"| node_quote
node_hero -->|"renders text"| node_markdown
node_contact -->|"renders"| node_quote
node_contact -->|"reads contact data"| node_siteconfig
node_home -->|"sets metadata"| node_seo
node_contentpage -->|"sets metadata"| node_seo
node_seo -->|"reads site identity"| node_siteconfig
node_siteconfig -->|"uses business data"| node_business

click node_app "https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/App.jsx"
click node_contentdata "https://github.com/albertshiney/websitegenerator/tree/main/templates/electrician/src/content"
click node_home "https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/pages/HomePage.jsx"
click node_services "https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/pages/ServicesPage.jsx"
click node_contentpage "https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/pages/ContentPage.jsx"
click node_otherpages "https://github.com/albertshiney/websitegenerator/tree/main/templates/electrician/src/pages"
click node_hero "https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/components/PageHero.jsx"
click node_contact "https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/components/ContactSection.jsx"
click node_quote "https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/components/QuoteForm.jsx"
click node_servicesgrid "https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/components/ServicesGrid.jsx"
click node_reviews "https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/components/Reviews.jsx"
click node_gallery "https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/components/Gallery.jsx"
click node_siteconfig "https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/site.js"
click node_business "https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/business.js"
click node_seo "https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/lib/useSEO.js"
click node_markdown "https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/lib/md.jsx"

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_app,node_contentdata toneBlue
class node_home,node_services,node_contentpage,node_otherpages toneAmber
class node_hero,node_contact,node_quote,node_servicesgrid,node_reviews,node_gallery toneMint
class node_siteconfig,node_business,node_seo,node_markdown toneRose
class node_visitor toneIndigo
```

## Components

### Routing and content

- [Route application](https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/App.jsx): `templates/electrician/src/App.jsx`
- [Service page content](https://github.com/albertshiney/websitegenerator/tree/main/templates/electrician/src/content): `templates/electrician/src/content`

### Business pages

- [Home page](https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/pages/HomePage.jsx): `templates/electrician/src/pages/HomePage.jsx`
- [Services page](https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/pages/ServicesPage.jsx): `templates/electrician/src/pages/ServicesPage.jsx`
- [Content page](https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/pages/ContentPage.jsx): `templates/electrician/src/pages/ContentPage.jsx`
- [Other site pages](https://github.com/albertshiney/websitegenerator/tree/main/templates/electrician/src/pages): `templates/electrician/src/pages`

### Page components

- [Page hero](https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/components/PageHero.jsx): `templates/electrician/src/components/PageHero.jsx`
- [Contact section](https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/components/ContactSection.jsx): `templates/electrician/src/components/ContactSection.jsx`
- [Quote form](https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/components/QuoteForm.jsx): `templates/electrician/src/components/QuoteForm.jsx`
- [Services grid](https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/components/ServicesGrid.jsx): `templates/electrician/src/components/ServicesGrid.jsx`
- [Reviews section](https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/components/Reviews.jsx): `templates/electrician/src/components/Reviews.jsx`
- [Project gallery](https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/components/Gallery.jsx): `templates/electrician/src/components/Gallery.jsx`

### Shared configuration

- [Site navigation and data](https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/site.js): `templates/electrician/src/site.js`
- [Business settings](https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/business.js): `templates/electrician/src/business.js`
- [Route metadata](https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/lib/useSEO.js): `templates/electrician/src/lib/useSEO.js`
- [Inline markdown](https://github.com/albertshiney/websitegenerator/blob/main/templates/electrician/src/lib/md.jsx): `templates/electrician/src/lib/md.jsx`

### Other components

- **Site visitor**

## Connections

- Site visitor → Route application: opens site (evidence: `templates/electrician/src/App.jsx`)
- Route application → Home page: routes to (evidence: `templates/electrician/src/App.jsx`)
- Route application → Services page: routes to (evidence: `templates/electrician/src/App.jsx`)
- Route application → Other site pages: routes to (evidence: `templates/electrician/src/App.jsx`)
- Route application → Service page content: loads routes (evidence: `templates/electrician/src/App.jsx`)
- Route application → Content page: renders content (evidence: `templates/electrician/src/App.jsx`)
- Home page → Contact section: renders (evidence: `templates/electrician/src/pages/HomePage.jsx`)
- Home page → Quote form: renders (evidence: `templates/electrician/src/pages/HomePage.jsx`)
- Home page → Services grid: renders (evidence: `templates/electrician/src/pages/HomePage.jsx`)
- Home page → Reviews section: renders (evidence: `templates/electrician/src/pages/HomePage.jsx`)
- Services page → Services grid: renders (evidence: `templates/electrician/src/pages/ServicesPage.jsx`)
- Services page → Reviews section: renders (evidence: `templates/electrician/src/pages/ServicesPage.jsx`)
- Services page → Contact section: renders (evidence: `templates/electrician/src/pages/ServicesPage.jsx`)
- Services page → Site navigation and data: reads services (evidence: `templates/electrician/src/pages/ServicesPage.jsx`)
- Content page → Page hero: renders (evidence: `templates/electrician/src/pages/ContentPage.jsx`)
- Content page → Contact section: renders (evidence: `templates/electrician/src/pages/ContentPage.jsx`)
- Content page → Reviews section: renders (evidence: `templates/electrician/src/pages/ContentPage.jsx`)
- Content page → Project gallery: renders (evidence: `templates/electrician/src/pages/ContentPage.jsx`)
- Content page → Inline markdown: uses renderer (evidence: `templates/electrician/src/pages/ContentPage.jsx`)
- Page hero → Quote form: renders (evidence: `templates/electrician/src/components/PageHero.jsx`)
- Page hero → Inline markdown: renders text (evidence: `templates/electrician/src/components/PageHero.jsx`)
- Contact section → Quote form: renders (evidence: `templates/electrician/src/components/ContactSection.jsx`)
- Contact section → Site navigation and data: reads contact data (evidence: `templates/electrician/src/components/ContactSection.jsx`)
- Home page → Route metadata: sets metadata (evidence: `templates/electrician/src/pages/HomePage.jsx`)
- Content page → Route metadata: sets metadata (evidence: `templates/electrician/src/pages/ContentPage.jsx`)
- Route metadata → Site navigation and data: reads site identity (evidence: `templates/electrician/src/lib/useSEO.js`)
- Site navigation and data → Business settings: uses business data (evidence: `templates/electrician/src/site.js`)
