# yudisain/gravisain architecture

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

## Overview

Gravisain is a hybrid WordPress theme and design system. An administrator configures global design, header/footer rows, and page-specific layout in the Customizer or editor; the theme uses those settings to generate styles and render accessible site pages, with WooCommerce layouts when available. The graph groups startup, configuration, rendering, and integrations. Some subsystems are represented by their exact tree paths but were not sampled; those links are included only where the README or excerpted service registration documents them.

Main entry points: [`classes/Core/ServiceProvider.php`](https://github.com/yudisain/gravisain/blob/main/classes/Core/ServiceProvider.php) (Service registration), [`templates/index.php`](https://github.com/yudisain/gravisain/blob/main/templates/index.php) (Page templates), [`classes/Components/PageHeader.php`](https://github.com/yudisain/gravisain/blob/main/classes/Components/PageHeader.php) (Page hero), [`classes/CSS/DynamicCSS.php`](https://github.com/yudisain/gravisain/blob/main/classes/CSS/DynamicCSS.php) (Dynamic CSS)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_startup["Theme startup"]
  node_application["Application startup<br/>[Application.php]"]
  node_services["Service registration"]
end

subgraph group_configure["Design configuration"]
  node_customizer["Customizer settings<br/>[Customizer.php]"]
  node_page_settings["Page settings<br/>[PageSettings.php]"]
  node_editor_controls["Editor controls<br/>[index.js]"]
  node_header_builder["Header builder<br/>[HeaderBuilder.php]"]
  node_footer_builder["Footer builder<br/>[FooterBuilder.php]"]
end

subgraph group_render["Frontend experience"]
  node_templates["Page templates<br/>[index.php]"]
  node_header_parts["Header rendering<br/>[header.php]"]
  node_footer_parts["Footer rendering<br/>[footer.php]"]
  node_page_header["Page hero<br/>[PageHeader.php]"]
  node_breadcrumbs["Breadcrumb navigation<br/>[Breadcrumbs.php]"]
  node_menu_accessibility["Accessible navigation"]
  node_post_extras["Post sharing and related<br/>[content-single.php]"]
end

subgraph group_style["Styles and typography"]
  node_css_runtime["Dynamic CSS<br/>[DynamicCSS.php]"]
  node_css_builder["CSS construction<br/>[Builder.php]"]
  node_css_cache[("CSS file cache<br/>[CSSFileCache.php]")]
  node_header_css["Header styles<br/>[HeaderCSS.php]"]
  node_font_loader["Google Fonts loader<br/>[GoogleFonts.php]"]
  node_local_fonts["Local font hosting"]
end

subgraph group_integrate["Integrations and tools"]
  node_commerce["WooCommerce support<br/>[WooCommerce.php]"]
  node_patterns["Block patterns"]
  node_dashboard["Theme dashboard<br/>[Welcome.php]"]
  node_import_export["Settings import/export<br/>[ImportExport.php]"]
  node_demo_endpoint["Demo data endpoint"]
end

node_admin(("Site administrator"))
node_visitor(("Site visitor"))
node_wordpress["WordPress runtime"]
node_google["Google Fonts services"]

node_wordpress -.->|"starts theme"| node_application
node_application -->|"registers services"| node_services
node_services -->|"initializes"| node_customizer
node_services -->|"initializes"| node_page_settings
node_services -.->|"initializes"| node_header_builder
node_services -.->|"initializes"| node_footer_builder
node_services -->|"initializes"| node_css_runtime
node_services -->|"initializes"| node_font_loader
node_services -->|"initializes"| node_local_fonts
node_services -->|"initializes"| node_page_header
node_services -->|"initializes"| node_breadcrumbs
node_services -->|"initializes"| node_menu_accessibility
node_services -->|"initializes"| node_commerce
node_services -->|"initializes"| node_dashboard
node_services -->|"initializes"| node_import_export
node_services -->|"initializes"| node_demo_endpoint
node_admin -->|"configures design"| node_customizer
node_admin -->|"sets page layout"| node_page_settings
node_page_settings -->|"enqueues controls"| node_editor_controls
node_visitor -.->|"requests page"| node_templates
node_templates -->|"checks page title"| node_page_header
node_page_header -->|"reads title settings"| node_page_settings
node_page_header -->|"renders navigation"| node_breadcrumbs
node_templates -->|"renders post content"| node_post_extras
node_header_parts -.->|"enhances navigation"| node_menu_accessibility
node_customizer -.->|"sets design options"| node_css_runtime
node_css_runtime -->|"builds rules"| node_css_builder
node_css_runtime -->|"uses cached CSS"| node_css_cache
node_header_css -->|"adds header rules"| node_css_builder
node_header_css -->|"checks row state"| node_header_builder
node_font_loader -.->|"fetches stylesheet"| node_google
node_admin -->|"enables local fonts"| node_local_fonts
node_local_fonts -->|"downloads font files"| node_google
node_admin -.->|"opens dashboard"| node_dashboard
node_dashboard -.->|"offers settings tools"| node_import_export
node_admin -.->|"requests demo data"| node_demo_endpoint
node_templates -.->|"renders header"| node_header_parts
node_templates -.->|"renders footer"| node_footer_parts
node_visitor -.->|"shops with WooCommerce"| node_commerce
node_admin -->|"uses block patterns"| node_patterns

click node_application "https://github.com/yudisain/gravisain/blob/main/classes/Core/Application.php"
click node_services "https://github.com/yudisain/gravisain/blob/main/classes/Core/ServiceProvider.php"
click node_customizer "https://github.com/yudisain/gravisain/blob/main/classes/Customizer/Customizer.php"
click node_page_settings "https://github.com/yudisain/gravisain/blob/main/classes/Meta/PageSettings.php"
click node_editor_controls "https://github.com/yudisain/gravisain/blob/main/src/meta/index.js"
click node_header_builder "https://github.com/yudisain/gravisain/blob/main/classes/Components/HeaderBuilder.php"
click node_footer_builder "https://github.com/yudisain/gravisain/blob/main/classes/Components/FooterBuilder.php"
click node_templates "https://github.com/yudisain/gravisain/blob/main/templates/index.php"
click node_header_parts "https://github.com/yudisain/gravisain/blob/main/template-parts/header.php"
click node_footer_parts "https://github.com/yudisain/gravisain/blob/main/template-parts/footer.php"
click node_page_header "https://github.com/yudisain/gravisain/blob/main/classes/Components/PageHeader.php"
click node_breadcrumbs "https://github.com/yudisain/gravisain/blob/main/classes/Components/Breadcrumbs.php"
click node_menu_accessibility "https://github.com/yudisain/gravisain/blob/main/classes/Components/MenuEnhancements.php"
click node_post_extras "https://github.com/yudisain/gravisain/blob/main/template-parts/content/content-single.php"
click node_css_runtime "https://github.com/yudisain/gravisain/blob/main/classes/CSS/DynamicCSS.php"
click node_css_builder "https://github.com/yudisain/gravisain/blob/main/classes/CSS/Builder.php"
click node_css_cache "https://github.com/yudisain/gravisain/blob/main/classes/CSS/CSSFileCache.php"
click node_header_css "https://github.com/yudisain/gravisain/blob/main/classes/CSS/Generators/HeaderCSS.php"
click node_font_loader "https://github.com/yudisain/gravisain/blob/main/classes/CSS/GoogleFonts.php"
click node_local_fonts "https://github.com/yudisain/gravisain/blob/main/classes/CSS/LocalFontDownloader.php"
click node_commerce "https://github.com/yudisain/gravisain/blob/main/classes/Integrations/WooCommerce.php"
click node_patterns "https://github.com/yudisain/gravisain/tree/main/patterns"
click node_dashboard "https://github.com/yudisain/gravisain/blob/main/classes/Dashboard/Welcome.php"
click node_import_export "https://github.com/yudisain/gravisain/blob/main/classes/Dashboard/ImportExport.php"
click node_demo_endpoint "https://github.com/yudisain/gravisain/blob/main/classes/Rest/DemoDataEndpoint.php"

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_application,node_services toneBlue
class node_customizer,node_page_settings,node_editor_controls,node_header_builder,node_footer_builder toneAmber
class node_templates,node_header_parts,node_footer_parts,node_page_header,node_breadcrumbs,node_menu_accessibility,node_post_extras toneMint
class node_css_runtime,node_css_builder,node_css_cache,node_header_css,node_font_loader,node_local_fonts toneRose
class node_commerce,node_patterns,node_dashboard,node_import_export,node_demo_endpoint,node_admin,node_visitor,node_wordpress,node_google toneIndigo
```

## Components

### Theme startup

- [Application startup](https://github.com/yudisain/gravisain/blob/main/classes/Core/Application.php): `classes/Core/Application.php`
- [Service registration](https://github.com/yudisain/gravisain/blob/main/classes/Core/ServiceProvider.php): `classes/Core/ServiceProvider.php`

### Design configuration

- [Customizer settings](https://github.com/yudisain/gravisain/blob/main/classes/Customizer/Customizer.php): `classes/Customizer/Customizer.php`
- [Page settings](https://github.com/yudisain/gravisain/blob/main/classes/Meta/PageSettings.php): `classes/Meta/PageSettings.php`
- [Editor controls](https://github.com/yudisain/gravisain/blob/main/src/meta/index.js): `src/meta/index.js`
- [Header builder](https://github.com/yudisain/gravisain/blob/main/classes/Components/HeaderBuilder.php): `classes/Components/HeaderBuilder.php`
- [Footer builder](https://github.com/yudisain/gravisain/blob/main/classes/Components/FooterBuilder.php): `classes/Components/FooterBuilder.php`

### Frontend experience

- [Page templates](https://github.com/yudisain/gravisain/blob/main/templates/index.php): `templates/index.php`
- [Header rendering](https://github.com/yudisain/gravisain/blob/main/template-parts/header.php): `template-parts/header.php`
- [Footer rendering](https://github.com/yudisain/gravisain/blob/main/template-parts/footer.php): `template-parts/footer.php`
- [Page hero](https://github.com/yudisain/gravisain/blob/main/classes/Components/PageHeader.php): `classes/Components/PageHeader.php`
- [Breadcrumb navigation](https://github.com/yudisain/gravisain/blob/main/classes/Components/Breadcrumbs.php): `classes/Components/Breadcrumbs.php`
- [Accessible navigation](https://github.com/yudisain/gravisain/blob/main/classes/Components/MenuEnhancements.php): `classes/Components/MenuEnhancements.php`
- [Post sharing and related](https://github.com/yudisain/gravisain/blob/main/template-parts/content/content-single.php): `template-parts/content/content-single.php`

### Styles and typography

- [Dynamic CSS](https://github.com/yudisain/gravisain/blob/main/classes/CSS/DynamicCSS.php): `classes/CSS/DynamicCSS.php`
- [CSS construction](https://github.com/yudisain/gravisain/blob/main/classes/CSS/Builder.php): `classes/CSS/Builder.php`
- [CSS file cache](https://github.com/yudisain/gravisain/blob/main/classes/CSS/CSSFileCache.php): `classes/CSS/CSSFileCache.php`
- [Header styles](https://github.com/yudisain/gravisain/blob/main/classes/CSS/Generators/HeaderCSS.php): `classes/CSS/Generators/HeaderCSS.php`
- [Google Fonts loader](https://github.com/yudisain/gravisain/blob/main/classes/CSS/GoogleFonts.php): `classes/CSS/GoogleFonts.php`
- [Local font hosting](https://github.com/yudisain/gravisain/blob/main/classes/CSS/LocalFontDownloader.php): `classes/CSS/LocalFontDownloader.php`

### Integrations and tools

- [WooCommerce support](https://github.com/yudisain/gravisain/blob/main/classes/Integrations/WooCommerce.php): `classes/Integrations/WooCommerce.php`
- [Block patterns](https://github.com/yudisain/gravisain/tree/main/patterns): `patterns`
- [Theme dashboard](https://github.com/yudisain/gravisain/blob/main/classes/Dashboard/Welcome.php): `classes/Dashboard/Welcome.php`
- [Settings import/export](https://github.com/yudisain/gravisain/blob/main/classes/Dashboard/ImportExport.php): `classes/Dashboard/ImportExport.php`
- [Demo data endpoint](https://github.com/yudisain/gravisain/blob/main/classes/Rest/DemoDataEndpoint.php): `classes/Rest/DemoDataEndpoint.php`

### Other components

- **Site administrator**
- **Site visitor**
- **WordPress runtime**
- **Google Fonts services**

## Connections

- WordPress runtime → Application startup: starts theme
- Application startup → Service registration: registers services (evidence: `classes/Core/Application.php`)
- Service registration → Customizer settings: initializes (evidence: `classes/Core/ServiceProvider.php`)
- Service registration → Page settings: initializes (evidence: `classes/Core/ServiceProvider.php`)
- Service registration → Header builder: initializes
- Service registration → Footer builder: initializes
- Service registration → Dynamic CSS: initializes (evidence: `classes/Core/ServiceProvider.php`)
- Service registration → Google Fonts loader: initializes (evidence: `classes/Core/ServiceProvider.php`)
- Service registration → Local font hosting: initializes (evidence: `classes/Core/ServiceProvider.php`)
- Service registration → Page hero: initializes (evidence: `classes/Core/ServiceProvider.php`)
- Service registration → Breadcrumb navigation: initializes (evidence: `classes/Core/ServiceProvider.php`)
- Service registration → Accessible navigation: initializes (evidence: `classes/Core/ServiceProvider.php`)
- Service registration → WooCommerce support: initializes (evidence: `classes/Core/ServiceProvider.php`)
- Service registration → Theme dashboard: initializes (evidence: `classes/Core/ServiceProvider.php`)
- Service registration → Settings import/export: initializes (evidence: `classes/Core/ServiceProvider.php`)
- Service registration → Demo data endpoint: initializes (evidence: `classes/Core/ServiceProvider.php`)
- Site administrator → Customizer settings: configures design
- Site administrator → Page settings: sets page layout (evidence: `classes/Meta/PageSettings.php`)
- Page settings → Editor controls: enqueues controls (evidence: `classes/Meta/PageSettings.php`)
- Site visitor → Page templates: requests page
- Page templates → Page hero: checks page title
- Page hero → Page settings: reads title settings (evidence: `classes/Components/PageHeader.php`)
- Page hero → Breadcrumb navigation: renders navigation (evidence: `template-parts/page-header/hero.php`)
- Page templates → Post sharing and related: renders post content (evidence: `template-parts/content/content-single.php`)
- Header rendering → Accessible navigation: enhances navigation
- Customizer settings → Dynamic CSS: sets design options
- Dynamic CSS → CSS construction: builds rules (evidence: `classes/CSS/DynamicCSS.php`)
- Dynamic CSS → CSS file cache: uses cached CSS (evidence: `classes/CSS/DynamicCSS.php`)
- Header styles → CSS construction: adds header rules (evidence: `classes/CSS/Generators/HeaderCSS.php`)
- Header styles → Header builder: checks row state (evidence: `classes/CSS/Generators/HeaderCSS.php`)
- Google Fonts loader → Google Fonts services: fetches stylesheet
- Site administrator → Local font hosting: enables local fonts
- Local font hosting → Google Fonts services: downloads font files
- Site administrator → Theme dashboard: opens dashboard
- Theme dashboard → Settings import/export: offers settings tools
- Site administrator → Demo data endpoint: requests demo data
- Page templates → Header rendering: renders header
- Page templates → Footer rendering: renders footer
- Site visitor → WooCommerce support: shops with WooCommerce
- Site administrator → Block patterns: uses block patterns
