All Projects → yuzutech → Kroki

yuzutech / Kroki

Licence: mit
Creates diagrams from textual descriptions!

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Kroki

Asciidoctor Kroki
Asciidoctor.js extension to convert diagrams to images using Kroki!
Stars: ✭ 55 (-92.89%)
Mutual labels:  hacktoberfest, plantuml, uml, graphviz
swagger2puml
Generate Class Diagrams (UML) for Given Swagger Definition
Stars: ✭ 43 (-94.44%)
Mutual labels:  graphviz, uml, plantuml
Azure Plantuml
PlantUML sprites, macros, and other includes for Azure services
Stars: ✭ 247 (-68.09%)
Mutual labels:  plantuml, uml, graphviz
C4 Plantuml
C4-PlantUML combines the benefits of PlantUML and the C4 model for providing a simple way of describing and communicate software architectures
Stars: ✭ 3,522 (+355.04%)
Mutual labels:  plantuml, uml, graphviz
Aws Plantuml
PlantUML sprites, macros, and other includes for AWS components.
Stars: ✭ 565 (-27%)
Mutual labels:  plantuml, uml, graphviz
ecto erd
A mix task for generating Entity Relationship Diagram from Ecto schemas available in your project.
Stars: ✭ 173 (-77.65%)
Mutual labels:  graphviz, uml, plantuml
PlantUml-Language-Service
PlantUml Language Service extension for Visual Studio 2017 and 2019
Stars: ✭ 24 (-96.9%)
Mutual labels:  graphviz, uml, plantuml
Excalidraw
Virtual whiteboard for sketching hand-drawn like diagrams
Stars: ✭ 25,509 (+3195.74%)
Mutual labels:  hacktoberfest, diagrams
Memento
Memento is a development-only tool that caches HTTP calls once they have been executed.
Stars: ✭ 380 (-50.9%)
Mutual labels:  api, hacktoberfest
Ola
The Open Lighting Architecture - The Travel Adaptor for the Lighting Industry
Stars: ✭ 424 (-45.22%)
Mutual labels:  api, hacktoberfest
Droplet kit
DropletKit is the official DigitalOcean API client for Ruby.
Stars: ✭ 482 (-37.73%)
Mutual labels:  api, hacktoberfest
Mle
Flexible terminal-based text editor (C)
Stars: ✭ 378 (-51.16%)
Mutual labels:  hacktoberfest, text
Villus
🏎 A tiny and fast GraphQL client for Vue.js
Stars: ✭ 378 (-51.16%)
Mutual labels:  api, hacktoberfest
Pytorch Widedeep
A flexible package to combine tabular data with text and images using Wide and Deep models in Pytorch
Stars: ✭ 416 (-46.25%)
Mutual labels:  images, text
Javacord
An easy to use multithreaded library for creating Discord bots in Java.
Stars: ✭ 368 (-52.45%)
Mutual labels:  api, hacktoberfest
Laravel Medialibrary
Associate files with Eloquent models
Stars: ✭ 4,743 (+512.79%)
Mutual labels:  hacktoberfest, images
Jdl Studio
JDL Studio is an online JHipster Domain Language visual editor
Stars: ✭ 365 (-52.84%)
Mutual labels:  hacktoberfest, uml
Goa
Design-based APIs and microservices in Go
Stars: ✭ 4,493 (+480.49%)
Mutual labels:  api, hacktoberfest
State Machine Cat
write beautiful state charts 🙀
Stars: ✭ 509 (-34.24%)
Mutual labels:  hacktoberfest, uml
Bpmn Js
A BPMN 2.0 rendering toolkit and web modeler.
Stars: ✭ 5,592 (+622.48%)
Mutual labels:  hacktoberfest, bpmn

= image:https://kroki.io/assets/logo.svg[Kroki,200,link={uri-kroki}] :uri-kroki: https://kroki.io/ :uri-kroki-docs: https://docs.kroki.io/ :uri-maven: https://maven.apache.org/

ifdef::env-github[] image:https://travis-ci.org/yuzutech/kroki.svg?branch=master[Travis build status, link=https://travis-ci.org/yuzutech/kroki] image:https://github.com/yuzutech/kroki/workflows/CI/badge.svg?branch=master[GitHub Actions build status, link=https://github.com/yuzutech/kroki/actions] image:https://badges.gitter.im/gitterHQ/gitter.svg[Gitter chat, link=https://gitter.im/kroki-project/community] endif::[]

{uri-kroki}[Kroki] provides a unified API with support for BlockDiag (BlockDiag, SeqDiag, ActDiag, NwDiag, PacketDiag, RackDiag), BPMN, Bytefield, C4 (with PlantUML), Ditaa, Erd, GraphViz, Mermaid, Nomnoml, 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 {uri-kroki-docs}[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 /

[source,json]

{ "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

[source]

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

[source]

Content-Type: text/plain

Bob -> Alice : hello

The same concept applies when sending the diagram as JSON:

POST /plantuml/svg [source,json]

{ "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 {uri-maven}[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

NOTE: 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 [source,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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].