加入CODE CHINA

· 不限速    · 不限空间    · 不限人数    · 私仓免费

免费加入
    README.adoc

    Kroki

    Kroki provides a unified API with support for BlockDiag (BlockDiag, SeqDiag, ActDiag, NwDiag, PacketDiag, RackDiag), BPMN, Bytefield, C4 (with PlantUML), Ditaa, Erd, Excalidraw, GraphViz, Mermaid, Nomnoml, Pikchr, PlantUML, SvgBob, UMLet, Vega, Vega-Lite and WaveDrom…​ and more to come!

    Quickstart

    This section offers a basic tutorial for evaluating Kroki. More comprehensive installation instructions are in the Kroki documentation.

    Usage

    Kroki uses a simple algorithm (deflate + base64) to encode your diagram in the URL:

    GET /plantuml/svg/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000

    You can also call Kroki with POST:

    POST /
    {
      "diagram_source": "Bob -> Alice : hello",
      "diagram_type": "plantuml",
      "output_format": "svg"
    }

    In this case, you don’t need to encode your diagram.

    It’s also possible to send your diagram as plain text using the Content-Type header. The output format will be specified using the Accept header and the diagram source will be sent as the request body:

    POST /plantuml
    Accept: image/svg+xml
    Content-Type: text/plain
    
    Bob -> Alice : hello

    You can also define the output format in the URL if you don’t want to add an Accept header:

    POST /plantuml/svg
    Content-Type: text/plain
    
    Bob -> Alice : hello

    The same concept applies when sending the diagram as JSON:

    POST /plantuml/svg
    {
      "diagram_source": "Bob -> Alice : hello"
    }

    Project layout

    Kroki has a modular architecture:

    server

    A Java web server (powered by Vert.x) that acts as a gateway. Kroki server is built using Maven.

    umlet

    A tiny Java API on top of UMlet (mini) to generate diagrams.

    nomnoml

    A Node.js CLI on top of the Nomnoml diagram library.

    vega

    A Node.js CLI on top of the vega diagram library. Also supports Vega-Lite concise grammar.

    blockdiag

    A companion web server written in Python (powered by Flask and Gunicorn) that provides BlockDiag, SeqDiag, ActDiag, NwDiag, PacketDiag and RackDiag diagrams libraries.

    mermaid

    A companion web server written in JavaScript (powered by micro) that provides Mermaid diagram library.

    bpmn

    A companion web server written in JavaScript (powered by micro) that provides bpmn-js diagram library.

    bytefield

    A Node.js CLI on top of the bytefield-svg diagram library.

    wavedrom

    A Node.js CLI on top of the wavedrom diagram library.

    excalidraw

    A companion web server written in JavaScript (powered by micro) that provides Excalidraw.

    Build

    Gateway Server

    The first step is to install the local dependencies in your local repository using make:

    $ make installLocalDependencies

    Then you can build the project using Maven:

    $ make buildServer

    Docker Images

    To build all the Docker images, use the following command:

    $ sudo make buildDockerImages
    sudo might not be needed depending on your distribution and docker configuration.

    Run

    Once the Docker images are built, you can run Kroki using docker:

    $ docker run -d -p 8000:8000 yuzutech/kroki

    Companion Containers

    If you want to use BlockDiag, ActDiag, NwDiag, SeqDiag, PacketDiag, RackDiag or Mermaid, then you will also need to start companion containers.

    You can use docker-compose to run multiple containers:

    docker-compose.yml
    version: "3"
    services:
      core:
        image: yuzutech/kroki
        environment:
          - KROKI_BLOCKDIAG_HOST=blockdiag
          - KROKI_MERMAID_HOST=mermaid
          - KROKI_BPMN_HOST=bpmn
          - KROKI_EXCALIDRAW_HOST=excalidraw
        ports:
          - "8000:8000"
      blockdiag:
        image: yuzutech/kroki-blockdiag
        ports:
          - "8001:8001"
      mermaid:
        image: yuzutech/kroki-mermaid
        ports:
          - "8002:8002"
      bpmn:
        image: yuzutech/kroki-bpmn
        ports:
          - "8003:8003"
      excalidraw:
        image: yuzutech/kroki-excalidraw
        ports:
          - "8004:8004"
    $ docker-compose up -d

    项目简介

    Creates diagrams from textual descriptions!

    🚀 Github 镜像仓库 🚀

    源项目地址

    https://github.com/yuzutech/kroki

    发行版本 24

    v0.13.0

    全部发行版

    贡献者 14

    全部贡献者

    开发语言

    • Java 58.3 %
    • Python 17.9 %
    • CSS 10.7 %
    • JavaScript 6.3 %
    • Dockerfile 2.8 %