# erickramirezau/cassandra-website architecture

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

- Interactive diagram: https://gitdiagram.com/erickramirezau/cassandra-website
- Repository: https://github.com/erickramirezau/cassandra-website

## Overview

This repository supports building and presenting the Apache Cassandra website: Antora combines site content, a UI bundle, and versioned Cassandra documentation into rendered HTML, which visitors use through the site UI. The tree and README establish that build flow, but most of the Antora configuration and content sources are not included here. The sampled Go tool is a deprecated, separate generator for native-protocol specification pages.

Main entry points: [`site-content`](https://github.com/erickramirezau/cassandra-website/tree/trunk/site-content) (Site content), [`site-content/bin/site_yaml_generator.py`](https://github.com/erickramirezau/cassandra-website/blob/trunk/site-content/bin/site_yaml_generator.py) (Site YAML generator), [`cqlprotodoc/main.go`](https://github.com/erickramirezau/cassandra-website/blob/trunk/cqlprotodoc/main.go) (Protocol HTML generator), [`site-ui/src/js`](https://github.com/erickramirezau/cassandra-website/tree/trunk/site-ui/src/js) (Browser interactions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_site["Site generation"]
  node_sitecontent["Site content"]
  node_yamlgen["Site YAML generator"]
  node_html["Rendered website"]
end

subgraph group_ui["Website experience"]
  node_uibundle["UI bundle"]
  node_browserui["Browser interactions"]
  node_helpers["Template helpers"]
  node_tabs["AsciiDoc tabs<br/>[tabs-block.js]"]
end

subgraph group_legacy["Protocol docs"]
  node_cqlmain["Protocol HTML generator<br/>[main.go]"]
  node_specparser["Specification parser<br/>[spec.go]"]
  node_protocolhtml["Protocol HTML pages"]
end

node_authors(("Content authors"))
node_releaseinfo["Release download page"]
node_antora["Antora"]
node_cassdocs["Cassandra versioned docs"]
node_visitor(("Website visitor"))
node_specfiles["Protocol spec files"]

node_authors -->|"edit content"| node_sitecontent
node_sitecontent -->|"provide settings"| node_yamlgen
node_yamlgen -->|"fetch versions"| node_releaseinfo
node_yamlgen -->|"write site YAML"| node_sitecontent
node_sitecontent -->|"provide content"| node_antora
node_uibundle -->|"style with"| node_antora
node_cassdocs -->|"provide versions"| node_antora
node_antora -->|"render pages"| node_html
node_html -->|"serve website"| node_visitor
node_visitor -->|"use controls"| node_browserui
node_browserui -.->|"use page helpers"| node_helpers
node_sitecontent -->|"extend AsciiDoc"| node_tabs
node_specfiles -->|"read versions"| node_cqlmain
node_cqlmain -->|"parse specifications"| node_specparser
node_cqlmain -->|"render pages"| node_protocolhtml

click node_sitecontent "https://github.com/erickramirezau/cassandra-website/tree/trunk/site-content"
click node_yamlgen "https://github.com/erickramirezau/cassandra-website/blob/trunk/site-content/bin/site_yaml_generator.py"
click node_uibundle "https://github.com/erickramirezau/cassandra-website/tree/trunk/site-ui"
click node_browserui "https://github.com/erickramirezau/cassandra-website/tree/trunk/site-ui/src/js"
click node_helpers "https://github.com/erickramirezau/cassandra-website/tree/trunk/site-ui/src/helpers"
click node_tabs "https://github.com/erickramirezau/cassandra-website/blob/trunk/site-content/lib/tabs-block.js"
click node_cqlmain "https://github.com/erickramirezau/cassandra-website/blob/trunk/cqlprotodoc/main.go"
click node_specparser "https://github.com/erickramirezau/cassandra-website/blob/trunk/cqlprotodoc/spec/spec.go"

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_sitecontent,node_yamlgen,node_html toneBlue
class node_uibundle,node_browserui,node_helpers,node_tabs toneAmber
class node_cqlmain,node_specparser,node_protocolhtml toneMint
class node_authors,node_releaseinfo,node_antora,node_cassdocs,node_visitor,node_specfiles toneIndigo
```

## Components

### Site generation

- [Site content](https://github.com/erickramirezau/cassandra-website/tree/trunk/site-content): `site-content`
- [Site YAML generator](https://github.com/erickramirezau/cassandra-website/blob/trunk/site-content/bin/site_yaml_generator.py): `site-content/bin/site_yaml_generator.py`
- **Rendered website**

### Website experience

- [UI bundle](https://github.com/erickramirezau/cassandra-website/tree/trunk/site-ui): `site-ui`
- [Browser interactions](https://github.com/erickramirezau/cassandra-website/tree/trunk/site-ui/src/js): `site-ui/src/js`
- [Template helpers](https://github.com/erickramirezau/cassandra-website/tree/trunk/site-ui/src/helpers): `site-ui/src/helpers`
- [AsciiDoc tabs](https://github.com/erickramirezau/cassandra-website/blob/trunk/site-content/lib/tabs-block.js): `site-content/lib/tabs-block.js`

### Protocol docs

- [Protocol HTML generator](https://github.com/erickramirezau/cassandra-website/blob/trunk/cqlprotodoc/main.go): `cqlprotodoc/main.go`
- [Specification parser](https://github.com/erickramirezau/cassandra-website/blob/trunk/cqlprotodoc/spec/spec.go): `cqlprotodoc/spec/spec.go`
- **Protocol HTML pages**

### Other components

- **Content authors**
- **Release download page**
- **Antora**
- **Cassandra versioned docs**
- **Website visitor**
- **Protocol spec files**

## Connections

- Content authors → Site content: edit content
- Site content → Site YAML generator: provide settings
- Site YAML generator → Release download page: fetch versions
- Site YAML generator → Site content: write site YAML
- Site content → Antora: provide content
- UI bundle → Antora: style with
- Cassandra versioned docs → Antora: provide versions
- Antora → Rendered website: render pages
- Rendered website → Website visitor: serve website
- Website visitor → Browser interactions: use controls
- Browser interactions → Template helpers: use page helpers
- Site content → AsciiDoc tabs: extend AsciiDoc
- Protocol spec files → Protocol HTML generator: read versions
- Protocol HTML generator → Specification parser: parse specifications
- Protocol HTML generator → Protocol HTML pages: render pages
