This post demonstrates all newly enabled Hugo features and add-ons available in this project. Each section includes working examples you can use as reference when creating content.


Render Hooks #

Markdown links to external URLs automatically open in a new tab with rel="noopener noreferrer" for security.

Internal links work normally: Back to Documentation

Heading Anchors #

Every heading on this page includes a clickable # anchor link. Hover over any heading to see it. These anchors allow deep-linking to specific sections of a post.


Mermaid.js Diagrams #

Mermaid diagrams are rendered from fenced code blocks with the mermaid language identifier. The theme automatically detects dark/light mode.

Flowchart #

flowchart TD
    A[Start] --> B{Is it working?}
    B -->|Yes| C[Great!]
    B -->|No| D[Debug]
    D --> E[Check logs]
    E --> F[Fix the issue]
    F --> B
    C --> G[Deploy]
    G --> H[Monitor]
    H --> I[End]

Sequence Diagram #

sequenceDiagram
    participant User
    participant CMS as Sveltia CMS
    participant GH as GitHub
    participant CI as GitHub Actions
    participant Site as GitHub Pages

    User->>CMS: Create new post
    CMS->>GH: Push to cms-submissions
    GH->>CI: Trigger workflow
    CI->>CI: Run process_cms.py
    CI->>CI: Run sync_completed.py
    CI->>GH: Open PR to main
    GH->>GH: Auto-merge PR
    GH->>CI: Trigger deploy workflow
    CI->>CI: Hugo build
    CI->>Site: Deploy to Pages
    Site-->>User: View published post

Class Diagram #

classDiagram
    class ContentSection {
        +String title
        +String taxonomy_key
        +String counter_file
        +Boolean has_calendar
        +listPosts()
        +archivePosts()
        +filterByTag()
    }
    class Post {
        +String title
        +DateTime date
        +String[] tags
        +Boolean archived
        +Boolean pinned
        +String summary
        +render()
    }
    class CMS {
        +submitPost()
        +editPost()
        +deletePost()
    }
    class Workflow {
        +processUploads()
        +processCMS()
        +syncCompleted()
        +deploy()
    }

    ContentSection "1" --> "*" Post : contains
    CMS --> ContentSection : manages
    Workflow --> ContentSection : processes
    Post --> CMS : edited via

State Diagram #

stateDiagram-v2
    [*] --> Draft
    Draft --> Proposed : Submit for review
    Proposed --> Approved : Approve change
    Proposed --> Cancelled : Cancel request
    Approved --> Completed : Implementation done
    Approved --> Cancelled : Cancel approved change
    Completed --> Archived : Auto-archive
    Cancelled --> Archived : Auto-archive
    Archived --> [*]

    state Archived {
        [*] --> ReadOnly
        ReadOnly --> Restored : Remove completed/cancelled tags
    }

Entity Relationship Diagram #

erDiagram
    SECTION ||--|{ POST : contains
    POST ||--o{ TAG : "tagged with"
    POST {
        string title
        datetime date
        string summary
        boolean archived
        boolean pinned
        string section_number
    }
    TAG {
        string name
        string slug
    }
    SECTION {
        string name
        string taxonomy_key
        string counter_file
        boolean has_calendar
    }
    AUTHOR ||--o{ POST : writes
    AUTHOR {
        string name
        string email
        string title
        string department
    }
    CMS_COLLECTION ||--|{ POST : manages
    CMS_COLLECTION {
        string name
        string folder
        boolean create
        boolean delete
    }

Gantt Chart #

gantt
    title Beacon Platform Roadmap
    dateFormat YYYY-MM-DD
    axisFormat %b %Y

    section Infrastructure
        Hugo site setup              :done, infra1, 2025-01-01, 2025-02-01
        PaperMod theme integration   :done, infra2, 2025-02-01, 2025-03-01
        GitHub Pages deployment      :done, infra3, 2025-03-01, 2025-03-15

    section CMS
        Sveltia CMS configuration    :done, cms1, 2025-03-15, 2025-04-15
        Edit collections             :done, cms2, 2025-04-15, 2025-05-01
        Archive collections          :done, cms3, 2025-05-01, 2025-05-15

    section Content Sections
        Announcements & Changes      :done, sec1, 2025-05-15, 2025-06-15
        Maintenance & Status         :done, sec2, 2025-06-15, 2025-07-15
        Documentation & About        :done, sec3, 2025-07-15, 2025-08-15
        Endpoints & Playbooks        :done, sec4, 2025-08-15, 2025-09-15

    section Add-Ons
        Mermaid.js diagrams          :active, add1, 2026-04-01, 2026-04-14
        KaTeX math notation          :active, add2, 2026-04-01, 2026-04-14
        Pagefind search              :add3, 2026-04-14, 2026-04-28
        Giscus comments              :add4, 2026-04-28, 2026-05-15

Pie Chart #

pie title Content Sections by Type
    "Announcements" : 3
    "Changes" : 5
    "Documentation" : 7
    "Status" : 4
    "Maintenance" : 6
    "About" : 7
    "Endpoints" : 2
    "Playbooks" : 1

User Journey #

journey
    title CMS Author Workflow
    section Login
        Navigate to /admin/: 5: Author
        Authenticate via GitHub: 4: Author
    section Create Content
        Select collection: 5: Author
        Fill in fields: 3: Author
        Add images/attachments: 3: Author
        Write body content: 4: Author
    section Submit
        Save entry: 5: Author, CMS
        PR created automatically: 5: CMS
        PR auto-merged: 5: CI
    section Publish
        Hugo build triggered: 5: CI
        Site deployed to Pages: 5: CI
        View published post: 5: Author

Git Graph #

gitGraph
    commit id: "Initial setup"
    branch cms-submissions
    checkout cms-submissions
    commit id: "CMS: new post"
    commit id: "ci: process CMS"
    checkout main
    merge cms-submissions id: "Auto-merge PR"
    commit id: "ci: deploy"
    branch ci/process-uploads
    checkout ci/process-uploads
    commit id: "ci: process uploads"
    checkout main
    merge ci/process-uploads id: "Merge upload PR"
    commit id: "ci: deploy v2"

Mindmap #

mindmap
    root((Beacon))
        Content Sections
            Announcements
            Changes
            Documentation
            Status
            Maintenance
            About
            Endpoints
            Playbooks
        Technology
            Hugo
            PaperMod Theme
            Sveltia CMS
            GitHub Actions
            GitHub Pages
        Features
            Tag Filtering
            Calendar Views
            Archive System
            Search
            Hero Posts
        Add-Ons
            Mermaid Diagrams
            KaTeX Math
            Pagefind
            Giscus Comments
            GoAT Diagrams

Timeline #

timeline
    title Beacon Development Timeline
    2025-Q1 : Hugo site created
            : PaperMod theme integrated
            : GitHub Pages deployment
    2025-Q2 : Sveltia CMS configured
            : Announcements section
            : Changes section
    2025-Q3 : Documentation section
            : Status section
            : Maintenance section
    2025-Q4 : About section
            : Endpoints section
            : Playbooks section
    2026-Q1 : Calendar views
            : Hero post layout
            : Archive system
    2026-Q2 : Mermaid.js diagrams
            : KaTeX math notation
            : Pagefind search

Quadrant Chart #

quadrantChart
    title Feature Priority Matrix
    x-axis Low Effort --> High Effort
    y-axis Low Impact --> High Impact
    quadrant-1 Do First
    quadrant-2 Plan Carefully
    quadrant-3 Delegate
    quadrant-4 Eliminate
    Render Hooks: [0.2, 0.9]
    Related Content: [0.15, 0.7]
    QR Shortcode: [0.1, 0.4]
    Details Shortcode: [0.1, 0.5]
    GoAT Diagrams: [0.15, 0.6]
    Mermaid.js: [0.4, 0.85]
    KaTeX: [0.35, 0.6]
    Pagefind: [0.5, 0.7]
    Giscus: [0.55, 0.5]
    ICS Feeds: [0.6, 0.65]
    Plausible: [0.3, 0.45]

XY Chart #

xychart-beta
    title "Monthly Posts Published"
    x-axis [Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
    y-axis "Number of Posts" 0 --> 20
    bar [3, 5, 8, 12, 10, 7, 6, 9, 14, 11, 8, 15]
    line [3, 5, 8, 12, 10, 7, 6, 9, 14, 11, 8, 15]

Block Diagram #

block-beta
    columns 3
    space:3
    A["Sveltia CMS"]:3
    space:3
    B["cms-submissions branch"] C["GitHub Actions"] D["main branch"]
    space:3
    E["process_cms.py"] F["sync_completed.py"] G["Hugo Build"]
    space:3
    H["GitHub Pages"]:3

    A --> B
    B --> C
    C --> D
    D --> G
    C --> E
    E --> F
    F --> G
    G --> H

KaTeX Math Notation #

Math rendering requires math: true in the page front matter. Use $...$ for inline and $$...$$ for display math.

Example 1: Euler’s Identity and Fundamental Constants #

Euler’s identity \(e^{i\pi} + 1 = 0\) elegantly connects five fundamental mathematical constants. The generalized form of Euler’s formula is:

\[e^{ix} = \cos(x) + i\sin(x)\]

This leads to the remarkable identity when \(x = \pi\) :

\[e^{i\pi} = \cos(\pi) + i\sin(\pi) = -1\]

Example 2: The Quadratic Formula and Discriminant #

For any quadratic equation \(ax^2 + bx + c = 0\) where \(a \neq 0\) , the solutions are given by:

\[x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}\]

The discriminant \(\Delta = b^2 - 4ac\) determines the nature of the roots:

\[\Delta = \begin{cases} > 0 & \text{two distinct real roots} \\ = 0 & \text{one repeated real root} \\ < 0 & \text{two complex conjugate roots} \end{cases}\]

Example 3: Matrix Transformations and Linear Algebra #

A 2D rotation matrix \(R(\theta)\) that rotates a vector by angle \(\theta\) counterclockwise:

\[R(\theta) = \begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix}\]

The determinant of this rotation matrix is always:

\[\det(R) = \cos^2\theta + \sin^2\theta = 1\]

And the product of two rotations gives another rotation: \(R(\alpha) \cdot R(\beta) = R(\alpha + \beta)\) .


GoAT ASCII Diagrams #

GoAT renders ASCII art into SVG at build time — no JavaScript required. Use standard ASCII characters (+, -, |, /, \, ., ') for best results.

PDrrdieoassEctpunealldsatsyYReesaIvSdsatlaiiirnndtpp?uuttNoSehrorwor

Network Topology Diagram #

S(eHruvgeor)ABS(LaeDolrBaav)dnecrerCS(eCrDvNe)rB

Built-In Shortcodes #

QR Code #

Generate inline QR codes for any URL or text:

Details / Collapsible Sections #

Click to expand: Project Configuration Files
FilePurpose
hugo.yamlSite configuration
static/admin/config.ymlCMS collection definitions
.github/workflows/process-and-deploy.ymlBuild and deploy workflow
scripts/process_uploads.pyUpload processing
scripts/process_cms.pyCMS submission processing
scripts/sync_completed.pyAuto-archive completed posts
Click to expand: Section Taxonomy Keys
  • Announcements: announcement_tags
  • Changes: change_tags
  • Documentation: doc_tags
  • Status: status_tags
  • Maintenance: maintenance_tags
  • About: about_tags
  • Endpoints: endpoints_tags
  • Playbooks: playbook_tags

Syntax Highlighting #

Hugo’s built-in Chroma highlighter renders code blocks with syntax highlighting:

# Example: Reading a section counter
def read_counter(counter_file: str) -> int:
    with open(counter_file, "r", encoding="utf-8") as f:
        return int(f.read().strip())

def write_counter(counter_file: str, value: int) -> None:
    with open(counter_file, "w", encoding="utf-8") as f:
        f.write(f"{value:08d}")
# Example: Hugo front matter
title: "My Post"
date: 2026-04-07T12:00:00-05:00
tags:
  - infrastructure
  - documentation
archived: false

YouTube Embed (Privacy-Enhanced) #

YouTube embeds use youtube-nocookie.com via the privacy configuration:


The related content engine is configured in hugo.yaml and matches posts by section-specific tags and date. Templates can use .Site.RegularPages.Related . to render a “Related Posts” section.


Privacy Configuration #

All third-party embeds have tracking disabled:

ServiceSetting
Google AnalyticsDisabled
DisqusDisabled
InstagramDisabled
Twitter/XDisabled
VimeoDisabled
YouTubePrivacy-enhanced mode (youtube-nocookie.com)

Additional Configured Features #

ICS Calendar Feeds #

An ICS (iCalendar) output format is defined in hugo.yaml. To enable calendar feeds for a section, add ics to the section’s outputs in its _index.md:

outputs:
  - HTML
  - RSS
  - ics

Subscribers can then import the feed URL into Outlook, Google Calendar, or Apple Calendar.

Pagefind builds a static search index after Hugo generates the site. The index is created during the GitHub Actions deploy workflow. Pagefind coexists with the existing Fuse.js search.

Giscus Comments #

GitHub Discussions-based comments are pre-configured but disabled. To enable:

  1. Enable GitHub Discussions on the repository
  2. Install the Giscus app
  3. Get your repo ID and category ID from giscus.app
  4. Update hugo.yamlparams.giscus with the IDs and set enable: true

Plausible Analytics #

Privacy-friendly analytics (no cookies, GDPR-compliant) are pre-configured but disabled. To enable:

  1. Create an account at plausible.io (or self-host)
  2. Update hugo.yamlparams.plausible with your domain and set enable: true