Skip to content

[FEATURE] Improve diagram workflow (Mermaid-first with automated rendering) #41

@oehrlis

Description

@oehrlis

Feature Description

Introduce a simplified and automated diagram workflow for OraDBA documentation that treats Mermaid as the default structural source and Excalidraw as an optional curated layer, with automated rendering, export, and drift detection.

The goal is to reduce manual effort, improve consistency, and keep diagrams aligned with actual script functionality while preserving high-quality visuals where needed.

Problem Statement

The current diagram workflow has several pain points:

  • Mermaid diagrams must be manually copied into Excalidraw
  • Three formats are maintained in parallel (.md, .excalidraw, .png)
  • PNG/SVG export from Excalidraw is manual
  • No automated way to detect outdated images
  • Visual consistency relies on manual discipline
  • High effort even for diagrams that do not need custom visuals

Current workflow:

AI / Manual Mermaid → Manual copy → Excalidraw edits → Manual PNG export

This works but does not scale and creates unnecessary maintenance overhead.

Proposed Solution

Adopt a Mermaid-first workflow with automated rendering and optional curated Excalidraw diagrams, based on a two-tier source-of-truth model:

Source of Truth Model

  • Default diagrams: Mermaid (structural / functional accuracy)
  • Curated diagrams: Excalidraw (visual storytelling, presentations)

Target Workflow

AI / Manual Mermaid
        ↓
Mermaid normalization (style, cleanup)
        ↓
Auto-render Mermaid → SVG (default)
        ↓
Optional: Manual Excalidraw for curated diagrams
        ↓
Auto-export SVG / PNG

Key elements

  • Mermaid diagrams are auto-rendered to SVG and used directly in MkDocs and Pandoc
  • Excalidraw is used only where visual customization adds value
  • Excalidraw exports are automated (no manual PNG export)
  • Drift detection ensures diagrams are regenerated when sources change
  • Consistent visual style via shared palette, components, and Mermaid class definitions

This avoids a fragile Mermaid→Excalidraw converter while still achieving automation and consistency.

Alternative Solutions

  • Full Mermaid → Excalidraw converter
    Rejected: high complexity, fragile, low ROI, difficult to maintain

  • Excalidraw-only source of truth
    Rejected: diagrams drift from real script functionality and increase manual effort

  • Keep current workflow
    Rejected: does not scale and remains error-prone

Environment

All environments

Usage Frequency

Weekly

Impact Level

High - Critical for my workflow

Usage Examples

# Rebuild all diagrams
make diagrams

# Check for outdated diagrams
make diagrams-check


Typical usage:

* Update Mermaid diagrams (manually or via AI)
* Run diagram build
* MkDocs + Pandoc consume generated SVG/PNG automatically

Benefits

  • Significantly reduced manual work
  • Diagrams stay aligned with script functionality
  • Reproducible and automatable exports
  • Consistent visual style across documentation
  • Clear separation between “structural” and “curated” diagrams
  • Lower maintenance cost over time

Additional Context

  • Mermaid diagrams already exist in a single authoring Markdown file
  • Excalidraw is used for customized visuals and branding
  • Documentation is generated via MkDocs (GitHub Pages) and Pandoc (PDF)
  • This feature focuses on workflow improvement, not visual redesign
  • Proposed implementation effort: ~4–6 days, incremental and low risk

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentation📚 Improvements or additions to documentation (README, comments, examples).enhancement✨ Accepted improvement or new feature request.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions