# yudisain/gravisain-blocks architecture

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

## Overview

Gravisain Blocks is a WordPress Gutenberg page-building plugin. The main workflow is an editor configuring responsive blocks, then WordPress rendering those blocks on the site. Its block collection spans layout, content, forms, interactive elements, and integrations; reusable editor controls provide responsive styling. The plugin also registers patterns and includes separate maintenance and login-security features. The README documents the product-level workflow and external services; source excerpts show selected block-editor behavior and plugin initialization, but not every runtime connection.

Main entry points: [`src/blocks`](https://github.com/yudisain/gravisain-blocks/tree/main/src/blocks) (Responsive Blocks), [`classes/Plugin.php`](https://github.com/yudisain/gravisain-blocks/blob/main/classes/Plugin.php) (Plugin Bootstrap), [`src/blocks/advanced-heading`](https://github.com/yudisain/gravisain-blocks/tree/main/src/blocks/advanced-heading) (Content Blocks), [`classes/BlockRegistry.php`](https://github.com/yudisain/gravisain-blocks/blob/main/classes/BlockRegistry.php) (Block Registry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_core["Plugin Core"]
  node_plugin["Plugin Bootstrap<br/>[Plugin.php]"]
  node_registry["Block Registry<br/>[BlockRegistry.php]"]
  node_patterns["Block Patterns"]
  node_font_loader["Site Font Loader"]
end

subgraph group_blocks["Block Editor"]
  node_block_catalog["Responsive Blocks"]
  node_layout_blocks["Layout Blocks"]
  node_content_blocks["Content Blocks"]
  node_interactive_blocks["Interactive Blocks"]
  node_forms_blocks["Forms and Data"]
  node_hero_block["Hero Section<br/>[edit.jsx]"]
  node_ad_block["Advertisement Block<br/>[render.php]"]
end

subgraph group_controls["Editor Controls"]
  node_editor_controls["Responsive Controls"]
  node_custom_css["Custom CSS Parser<br/>[parseCustomCSS.js]"]
  node_font_hook["Editor Font Loader<br/>[useGoogleFont.js]"]
end

subgraph group_site["Site Operations"]
  node_maintenance["Maintenance Mode<br/>[Maintenance.php]"]
  node_login_security["Login Security<br/>[LoginSecurity.php]"]
end

subgraph group_integrations["External Integrations"]
  node_google_fonts["Google Fonts"]
  node_google_maps["Google Maps Embed"]
  node_adsense["Google AdSense"]
  node_turnstile["Cloudflare Turnstile"]
end

node_editor_user(("Site Editor"))
node_wp_editor["Gutenberg Editor"]
node_visitor(("Site Visitor"))
node_rendered_site["Rendered Site"]

node_editor_user -->|"edits pages"| node_wp_editor
node_wp_editor -->|"configures blocks"| node_block_catalog
node_plugin -->|"registers"| node_registry
node_plugin -->|"registers"| node_font_loader
node_plugin -->|"initializes"| node_maintenance
node_plugin -.->|"initializes"| node_login_security
node_plugin -->|"initializes"| node_patterns
node_registry -.->|"registers blocks"| node_block_catalog
node_wp_editor -->|"sets responsive options"| node_editor_controls
node_block_catalog -->|"includes layouts"| node_layout_blocks
node_block_catalog -->|"includes content"| node_content_blocks
node_block_catalog -->|"includes interactions"| node_interactive_blocks
node_block_catalog -->|"includes forms"| node_forms_blocks
node_block_catalog -->|"includes hero"| node_hero_block
node_block_catalog -->|"includes ads"| node_ad_block
node_content_blocks -->|"parses styles"| node_custom_css
node_hero_block -->|"parses styles"| node_custom_css
node_content_blocks -->|"loads editor fonts"| node_font_hook
node_font_hook -->|"requests fonts"| node_google_fonts
node_font_loader -->|"loads fonts"| node_google_fonts
node_block_catalog -->|"embeds maps"| node_google_maps
node_ad_block -.->|"renders ad unit"| node_adsense
node_login_security -->|"verifies tokens"| node_turnstile
node_visitor -->|"views pages"| node_rendered_site
node_block_catalog -->|"renders blocks"| node_rendered_site
node_maintenance -.->|"intercepts requests"| node_rendered_site

click node_plugin "https://github.com/yudisain/gravisain-blocks/blob/main/classes/Plugin.php"
click node_registry "https://github.com/yudisain/gravisain-blocks/blob/main/classes/BlockRegistry.php"
click node_patterns "https://github.com/yudisain/gravisain-blocks/blob/main/classes/PatternRegistry.php"
click node_block_catalog "https://github.com/yudisain/gravisain-blocks/tree/main/src/blocks"
click node_layout_blocks "https://github.com/yudisain/gravisain-blocks/tree/main/src/blocks/row-layout"
click node_content_blocks "https://github.com/yudisain/gravisain-blocks/tree/main/src/blocks/advanced-heading"
click node_interactive_blocks "https://github.com/yudisain/gravisain-blocks/tree/main/src/blocks/faq-accordion"
click node_forms_blocks "https://github.com/yudisain/gravisain-blocks/tree/main/src/blocks/form"
click node_hero_block "https://github.com/yudisain/gravisain-blocks/blob/main/src/blocks/hero/edit.jsx"
click node_ad_block "https://github.com/yudisain/gravisain-blocks/blob/main/src/blocks/ad/render.php"
click node_editor_controls "https://github.com/yudisain/gravisain-blocks/tree/main/src/controls"
click node_custom_css "https://github.com/yudisain/gravisain-blocks/blob/main/src/controls/parseCustomCSS.js"
click node_font_hook "https://github.com/yudisain/gravisain-blocks/blob/main/src/controls/useGoogleFont.js"
click node_font_loader "https://github.com/yudisain/gravisain-blocks/blob/main/classes/GoogleFontsLoader.php"
click node_maintenance "https://github.com/yudisain/gravisain-blocks/blob/main/classes/Maintenance.php"
click node_login_security "https://github.com/yudisain/gravisain-blocks/blob/main/classes/LoginSecurity.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_plugin,node_registry,node_patterns,node_font_loader toneBlue
class node_block_catalog,node_layout_blocks,node_content_blocks,node_interactive_blocks,node_forms_blocks,node_hero_block,node_ad_block toneAmber
class node_editor_controls,node_custom_css,node_font_hook toneMint
class node_maintenance,node_login_security toneRose
class node_google_fonts,node_google_maps,node_adsense,node_turnstile,node_editor_user,node_wp_editor,node_visitor,node_rendered_site toneIndigo
```

## Components

### Plugin Core

- [Plugin Bootstrap](https://github.com/yudisain/gravisain-blocks/blob/main/classes/Plugin.php): `classes/Plugin.php`
- [Block Registry](https://github.com/yudisain/gravisain-blocks/blob/main/classes/BlockRegistry.php): `classes/BlockRegistry.php`
- [Block Patterns](https://github.com/yudisain/gravisain-blocks/blob/main/classes/PatternRegistry.php): `classes/PatternRegistry.php`
- [Site Font Loader](https://github.com/yudisain/gravisain-blocks/blob/main/classes/GoogleFontsLoader.php): `classes/GoogleFontsLoader.php`

### Block Editor

- [Responsive Blocks](https://github.com/yudisain/gravisain-blocks/tree/main/src/blocks): `src/blocks`
- [Layout Blocks](https://github.com/yudisain/gravisain-blocks/tree/main/src/blocks/row-layout): `src/blocks/row-layout`
- [Content Blocks](https://github.com/yudisain/gravisain-blocks/tree/main/src/blocks/advanced-heading): `src/blocks/advanced-heading`
- [Interactive Blocks](https://github.com/yudisain/gravisain-blocks/tree/main/src/blocks/faq-accordion): `src/blocks/faq-accordion`
- [Forms and Data](https://github.com/yudisain/gravisain-blocks/tree/main/src/blocks/form): `src/blocks/form`
- [Hero Section](https://github.com/yudisain/gravisain-blocks/blob/main/src/blocks/hero/edit.jsx): `src/blocks/hero/edit.jsx`
- [Advertisement Block](https://github.com/yudisain/gravisain-blocks/blob/main/src/blocks/ad/render.php): `src/blocks/ad/render.php`

### Editor Controls

- [Responsive Controls](https://github.com/yudisain/gravisain-blocks/tree/main/src/controls): `src/controls`
- [Custom CSS Parser](https://github.com/yudisain/gravisain-blocks/blob/main/src/controls/parseCustomCSS.js): `src/controls/parseCustomCSS.js`
- [Editor Font Loader](https://github.com/yudisain/gravisain-blocks/blob/main/src/controls/useGoogleFont.js): `src/controls/useGoogleFont.js`

### Site Operations

- [Maintenance Mode](https://github.com/yudisain/gravisain-blocks/blob/main/classes/Maintenance.php): `classes/Maintenance.php`
- [Login Security](https://github.com/yudisain/gravisain-blocks/blob/main/classes/LoginSecurity.php): `classes/LoginSecurity.php`

### External Integrations

- **Google Fonts**
- **Google Maps Embed**
- **Google AdSense**
- **Cloudflare Turnstile**

### Other components

- **Site Editor**
- **Gutenberg Editor**
- **Site Visitor**
- **Rendered Site**

## Connections

- Site Editor → Gutenberg Editor: edits pages
- Gutenberg Editor → Responsive Blocks: configures blocks
- Plugin Bootstrap → Block Registry: registers (evidence: `classes/Plugin.php`)
- Plugin Bootstrap → Site Font Loader: registers (evidence: `classes/Plugin.php`)
- Plugin Bootstrap → Maintenance Mode: initializes (evidence: `classes/Plugin.php`)
- Plugin Bootstrap → Login Security: initializes (evidence: `classes/Plugin.php`)
- Plugin Bootstrap → Block Patterns: initializes (evidence: `classes/Plugin.php`)
- Block Registry → Responsive Blocks: registers blocks
- Gutenberg Editor → Responsive Controls: sets responsive options
- Responsive Blocks → Layout Blocks: includes layouts (evidence: `src/blocks/row-layout/deprecated.js`)
- Responsive Blocks → Content Blocks: includes content (evidence: `src/blocks/advanced-heading/edit.js`)
- Responsive Blocks → Interactive Blocks: includes interactions
- Responsive Blocks → Forms and Data: includes forms
- Responsive Blocks → Hero Section: includes hero (evidence: `src/blocks/hero/edit.jsx`)
- Responsive Blocks → Advertisement Block: includes ads
- Content Blocks → Custom CSS Parser: parses styles (evidence: `src/blocks/advanced-heading/edit.js`)
- Hero Section → Custom CSS Parser: parses styles (evidence: `src/blocks/hero/edit.jsx`)
- Content Blocks → Editor Font Loader: loads editor fonts (evidence: `src/blocks/advanced-heading/edit.js`)
- Editor Font Loader → Google Fonts: requests fonts
- Site Font Loader → Google Fonts: loads fonts
- Responsive Blocks → Google Maps Embed: embeds maps
- Advertisement Block → Google AdSense: renders ad unit
- Login Security → Cloudflare Turnstile: verifies tokens
- Site Visitor → Rendered Site: views pages
- Responsive Blocks → Rendered Site: renders blocks
- Maintenance Mode → Rendered Site: intercepts requests
