diagram-renderer


Namediagram-renderer JSON
Version 2025.8.3.1111 PyPI version JSON
download
home_pageNone
SummaryA comprehensive diagram rendering service supporting Mermaid, PlantUML, and Graphviz diagrams with interactive zoom/pan controls and PNG export
upload_time2025-08-04 09:54:40
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseNone
keywords diagram mermaid plantuml graphviz visualization renderer
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Diagram Renderer

A comprehensive diagram rendering service supporting Mermaid, PlantUML, and Graphviz diagrams with an interactive web interface:

- **Streamlit Dashboard** - Interactive web interface for diagram rendering

## Features

- Automatic diagram type detection (Mermaid, PlantUML, Graphviz)
- **Self-contained rendering** - All JavaScript libraries hosted locally
- Static Mermaid.js assets (version controlled, 2.8MB)
- VizJS for Graphviz/DOT rendering (locally hosted, 1.9MB)
- PlantUML to DOT conversion and rendering
- Multiple themes for Mermaid diagrams
- Interactive Streamlit dashboard, FastAPI web app, and MCP server
- **No external CDN dependencies** - Works offline
- **AI Assistant Integration** - MCP server for Claude Desktop and other AI tools

## Installation

Install from PyPI:

```bash
# Using uv (recommended)
uv add diagram-renderer

# Using pip
pip install diagram-renderer
```

For development setup:
```bash
git clone https://github.com/djvolz/diagram-renderer.git
cd diagram-renderer
uv install
```

## Usage

### Examples

The `examples/` directory contains four demonstration applications:

**Streamlit Dashboard** - Interactive web interface:
```bash
uv sync --extra dashboard
# Run directly
uv run --extra dashboard python -m streamlit run examples/dashboard.py
# Or use the convenience script
uv run --extra dashboard ./examples/run-dashboard.py
```

**FastAPI Web App** - REST API and web interface:
```bash
uv sync --extra webapp
uv run --extra webapp python examples/cli.py webapp
# or directly: uv run --extra webapp python examples/webapp.py
```

**MCP Server** - AI assistant integration via Model Context Protocol:
```bash
uv sync --extra mcp
uv run --extra mcp python examples/cli.py mcp
# or directly: uv run --extra mcp python examples/mcp_server.py
```

**Command Line Interface** - Batch processing and automation:
```bash
# Render diagram from file
uv run python examples/cli.py render diagram.mmd

# Quick inline rendering
uv run python examples/cli.py quick "graph TD; A-->B"

# Serve a diagram with HTTP server
uv run python examples/cli.py serve diagram.mmd

# Show examples and help
uv run python examples/cli.py examples
uv run python examples/cli.py --help
```

## Supported Diagram Types

### Mermaid
- Flowcharts, Sequence diagrams, Class diagrams
- State diagrams, ER diagrams, User journey
- Gantt charts, Pie charts, and more

### PlantUML
- UML diagrams (Class, Sequence, Use Case, Activity)
- Network diagrams, Mind maps
- Gantt charts, Work breakdown structure

### Graphviz
- DOT language diagrams
- Directed and undirected graphs
- Network diagrams, organizational charts

## Configuration

### Mermaid Themes
- `default` - Default theme
- `base` - Base theme
- `dark` - Dark theme
- `forest` - Forest theme
- `neutral` - Neutral theme

## Development

The main components are:

- `diagram_renderer/` - Core diagram rendering logic and renderers
- `st_diagram.py` - Streamlit diagram component wrapper
- `examples/cli.py` - Command-line interface and app launcher
- `examples/dashboard.py` - Streamlit web interface
- `examples/webapp.py` - FastAPI REST API and web interface
- `examples/mcp_server.py` - MCP server for AI assistant integration
- `diagram_renderer/renderers/static/js/` - **Local JavaScript libraries**
  - `mermaid.min.js` (2.8MB) - Mermaid diagram rendering
  - `viz-full.js` (1.9MB) - Graphviz/DOT rendering
  - `viz-lite.js` (11KB) - Lightweight VizJS alternative

## Demo

**Input:**
```mermaid
flowchart LR
    A[diagram-renderer] --> B{Auto-detect}
    B -->|Mermaid| C[Mermaid.js]
    B -->|PlantUML| D[PlantUML → DOT]
    B -->|Graphviz| E[VizJS]
    C --> F[Interactive HTML]
    D --> F
    E --> F
    F --> G[📱 Responsive]
    F --> H[🖼 PNG Export]
    F --> I[🔍 Zoom/Pan]
```

**Output:** The generated HTML includes:
- 🔍 **Interactive zoom and pan controls**
- 📱 **Responsive design** 
- 🖼 **PNG export functionality**
- 🎨 **Automatic diagram type detection**
- 🔒 **Self-contained** - All JS libraries included locally (no CDN dependencies)
- ⚡ **Two output modes** - Lightweight external JS (14KB) or fully embedded (4.7MB)

Try it yourself:
```bash
uv run python examples/cli.py quick "graph TD; A-->B-->C"
```

## Examples

### Mermaid Flowchart
```mermaid
flowchart TD
    A[Start] --> B{Decision}
    B -->|Yes| C[Process A]
    B -->|No| D[Process B]
    C --> E[End]
    D --> E
```

### PlantUML Class Diagram
```plantuml
@startuml
class Animal {
  +String name
  +int age
  +makeSound()
}
class Dog {
  +String breed
  +bark()
}
Animal <|-- Dog
@enduml
```

### Graphviz DOT Diagram
```dot
digraph G {
    A -> B;
    B -> C;
    C -> A;
}
```

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "diagram-renderer",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "Danny Volz <volz.developer+diagram-renderer@gmail.com>",
    "keywords": "diagram, mermaid, plantuml, graphviz, visualization, renderer",
    "author": null,
    "author_email": "Danny Volz <volz.developer+diagram-renderer@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/25/c5/cc862c5ea88f1c27b65d4f168cb5bd7f3417e9f8fd2000451271d6fab6d8/diagram_renderer-2025.8.3.1111.tar.gz",
    "platform": null,
    "description": "# Diagram Renderer\n\nA comprehensive diagram rendering service supporting Mermaid, PlantUML, and Graphviz diagrams with an interactive web interface:\n\n- **Streamlit Dashboard** - Interactive web interface for diagram rendering\n\n## Features\n\n- Automatic diagram type detection (Mermaid, PlantUML, Graphviz)\n- **Self-contained rendering** - All JavaScript libraries hosted locally\n- Static Mermaid.js assets (version controlled, 2.8MB)\n- VizJS for Graphviz/DOT rendering (locally hosted, 1.9MB)\n- PlantUML to DOT conversion and rendering\n- Multiple themes for Mermaid diagrams\n- Interactive Streamlit dashboard, FastAPI web app, and MCP server\n- **No external CDN dependencies** - Works offline\n- **AI Assistant Integration** - MCP server for Claude Desktop and other AI tools\n\n## Installation\n\nInstall from PyPI:\n\n```bash\n# Using uv (recommended)\nuv add diagram-renderer\n\n# Using pip\npip install diagram-renderer\n```\n\nFor development setup:\n```bash\ngit clone https://github.com/djvolz/diagram-renderer.git\ncd diagram-renderer\nuv install\n```\n\n## Usage\n\n### Examples\n\nThe `examples/` directory contains four demonstration applications:\n\n**Streamlit Dashboard** - Interactive web interface:\n```bash\nuv sync --extra dashboard\n# Run directly\nuv run --extra dashboard python -m streamlit run examples/dashboard.py\n# Or use the convenience script\nuv run --extra dashboard ./examples/run-dashboard.py\n```\n\n**FastAPI Web App** - REST API and web interface:\n```bash\nuv sync --extra webapp\nuv run --extra webapp python examples/cli.py webapp\n# or directly: uv run --extra webapp python examples/webapp.py\n```\n\n**MCP Server** - AI assistant integration via Model Context Protocol:\n```bash\nuv sync --extra mcp\nuv run --extra mcp python examples/cli.py mcp\n# or directly: uv run --extra mcp python examples/mcp_server.py\n```\n\n**Command Line Interface** - Batch processing and automation:\n```bash\n# Render diagram from file\nuv run python examples/cli.py render diagram.mmd\n\n# Quick inline rendering\nuv run python examples/cli.py quick \"graph TD; A-->B\"\n\n# Serve a diagram with HTTP server\nuv run python examples/cli.py serve diagram.mmd\n\n# Show examples and help\nuv run python examples/cli.py examples\nuv run python examples/cli.py --help\n```\n\n## Supported Diagram Types\n\n### Mermaid\n- Flowcharts, Sequence diagrams, Class diagrams\n- State diagrams, ER diagrams, User journey\n- Gantt charts, Pie charts, and more\n\n### PlantUML\n- UML diagrams (Class, Sequence, Use Case, Activity)\n- Network diagrams, Mind maps\n- Gantt charts, Work breakdown structure\n\n### Graphviz\n- DOT language diagrams\n- Directed and undirected graphs\n- Network diagrams, organizational charts\n\n## Configuration\n\n### Mermaid Themes\n- `default` - Default theme\n- `base` - Base theme\n- `dark` - Dark theme\n- `forest` - Forest theme\n- `neutral` - Neutral theme\n\n## Development\n\nThe main components are:\n\n- `diagram_renderer/` - Core diagram rendering logic and renderers\n- `st_diagram.py` - Streamlit diagram component wrapper\n- `examples/cli.py` - Command-line interface and app launcher\n- `examples/dashboard.py` - Streamlit web interface\n- `examples/webapp.py` - FastAPI REST API and web interface\n- `examples/mcp_server.py` - MCP server for AI assistant integration\n- `diagram_renderer/renderers/static/js/` - **Local JavaScript libraries**\n  - `mermaid.min.js` (2.8MB) - Mermaid diagram rendering\n  - `viz-full.js` (1.9MB) - Graphviz/DOT rendering\n  - `viz-lite.js` (11KB) - Lightweight VizJS alternative\n\n## Demo\n\n**Input:**\n```mermaid\nflowchart LR\n    A[diagram-renderer] --> B{Auto-detect}\n    B -->|Mermaid| C[Mermaid.js]\n    B -->|PlantUML| D[PlantUML \u2192 DOT]\n    B -->|Graphviz| E[VizJS]\n    C --> F[Interactive HTML]\n    D --> F\n    E --> F\n    F --> G[\ud83d\udcf1 Responsive]\n    F --> H[\ud83d\uddbc PNG Export]\n    F --> I[\ud83d\udd0d Zoom/Pan]\n```\n\n**Output:** The generated HTML includes:\n- \ud83d\udd0d **Interactive zoom and pan controls**\n- \ud83d\udcf1 **Responsive design** \n- \ud83d\uddbc **PNG export functionality**\n- \ud83c\udfa8 **Automatic diagram type detection**\n- \ud83d\udd12 **Self-contained** - All JS libraries included locally (no CDN dependencies)\n- \u26a1 **Two output modes** - Lightweight external JS (14KB) or fully embedded (4.7MB)\n\nTry it yourself:\n```bash\nuv run python examples/cli.py quick \"graph TD; A-->B-->C\"\n```\n\n## Examples\n\n### Mermaid Flowchart\n```mermaid\nflowchart TD\n    A[Start] --> B{Decision}\n    B -->|Yes| C[Process A]\n    B -->|No| D[Process B]\n    C --> E[End]\n    D --> E\n```\n\n### PlantUML Class Diagram\n```plantuml\n@startuml\nclass Animal {\n  +String name\n  +int age\n  +makeSound()\n}\nclass Dog {\n  +String breed\n  +bark()\n}\nAnimal <|-- Dog\n@enduml\n```\n\n### Graphviz DOT Diagram\n```dot\ndigraph G {\n    A -> B;\n    B -> C;\n    C -> A;\n}\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A comprehensive diagram rendering service supporting Mermaid, PlantUML, and Graphviz diagrams with interactive zoom/pan controls and PNG export",
    "version": "2025.8.3.1111",
    "project_urls": {
        "Bug Tracker": "https://github.com/djvolz/diagram-renderer/issues",
        "Changelog": "https://github.com/djvolz/diagram-renderer/blob/main/CHANGELOG.md",
        "Documentation": "https://github.com/djvolz/diagram-renderer#readme",
        "Homepage": "https://github.com/djvolz/diagram-renderer",
        "Repository": "https://github.com/djvolz/diagram-renderer.git"
    },
    "split_keywords": [
        "diagram",
        " mermaid",
        " plantuml",
        " graphviz",
        " visualization",
        " renderer"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fd22445db6737a47260449733a7e727b5ac6d6b9b7244b082de0d9899d4c2893",
                "md5": "75ff09c69bd29e68177bfa0ccd16bdc4",
                "sha256": "13a8613203310aff4606a304d8e9aa52a97563a01a04e2cdee63443cf5106a7b"
            },
            "downloads": -1,
            "filename": "diagram_renderer-2025.8.3.1111-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "75ff09c69bd29e68177bfa0ccd16bdc4",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 1456840,
            "upload_time": "2025-08-04T09:54:38",
            "upload_time_iso_8601": "2025-08-04T09:54:38.172755Z",
            "url": "https://files.pythonhosted.org/packages/fd/22/445db6737a47260449733a7e727b5ac6d6b9b7244b082de0d9899d4c2893/diagram_renderer-2025.8.3.1111-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "25c5cc862c5ea88f1c27b65d4f168cb5bd7f3417e9f8fd2000451271d6fab6d8",
                "md5": "110ed4a03ccfab154139513ae3b44017",
                "sha256": "b5969274dc702363e4f41a889216bbfee00c0d5de3851bc6df3846d60a2983f6"
            },
            "downloads": -1,
            "filename": "diagram_renderer-2025.8.3.1111.tar.gz",
            "has_sig": false,
            "md5_digest": "110ed4a03ccfab154139513ae3b44017",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 1438997,
            "upload_time": "2025-08-04T09:54:40",
            "upload_time_iso_8601": "2025-08-04T09:54:40.991348Z",
            "url": "https://files.pythonhosted.org/packages/25/c5/cc862c5ea88f1c27b65d4f168cb5bd7f3417e9f8fd2000451271d6fab6d8/diagram_renderer-2025.8.3.1111.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-04 09:54:40",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "djvolz",
    "github_project": "diagram-renderer",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "diagram-renderer"
}
        
Elapsed time: 1.86630s