Plantuml

References:
PlantUML Site
Documentation
Internet Demo Server

Example 1

KatyBobKatyKatyBobBobAuthentication RequestAuthentication ResponseAnother authentication RequestAnother authentication Response
```kroki {_type=plantuml}

@startuml
Katy -> Bob: Authentication Request
Bob --> Katy: Authentication Response

Katy -> Bob: Another authentication Request
Katy <-- Bob: Another authentication Response
@enduml
```

Example 2

ParticipantActorBoundaryControlEntityDatabaseCollectionsQueueParticipantParticipantActorActorBoundaryBoundaryControlControlEntityEntityDatabaseDatabaseCollectionsCollectionsQueueQueueTo actorTo boundaryTo controlTo entityTo databaseTo collectionsTo queue
```kroki {_type=plantuml}

@startuml
participant Participant as Foo
actor       Actor       as Foo1
boundary    Boundary    as Foo2
control     Control     as Foo3
entity      Entity      as Foo4
database    Database    as Foo5
collections Collections as Foo6
queue       Queue       as Foo7
Foo -> Foo1 : To actor 
Foo -> Foo2 : To boundary
Foo -> Foo3 : To control
Foo -> Foo4 : To entity
Foo -> Foo5 : To database
Foo -> Foo6 : To collections
Foo -> Foo7: To queue
@enduml
```

Example 3

User«Human»Main Database«Application»«One Shot»Start«Main»Use the application
```kroki {_type=plantuml}

@startuml
User << Human >>
:Main Database: as MySql << Application >>
(Start) << One Shot >>
(Use the application) as (Use) << Main >>

User -> (Start)
User --> (Use)

MySql --> (Use)

@enduml
```

Example 4

Readynext(o)Receivingnak(i)ack(o)ack(i)next(o)on several linesi := i + 1ack(o)err(i)nak(o)foobari > 5finish
```kroki {_type=plantuml}

@startuml
:Ready;
:next(o); <<procedure>>
:Receiving;
split
 :nak(i); <<input>>
 :ack(o); <<output>>
split again
 :ack(i); <<input>>
 :next(o)
 on several lines; <<procedure>>
 :i := i + 1; <<task>>
 :ack(o); <<output>>
split again
 :err(i); <<input>>
 :nak(o); <<output>>
split again
 :foo; <<save>>
split again
 :bar; <<load>>
split again
 :i > 5; <<continuous>>
stop
end split
:finish;
@enduml
```

Example 5

LondonWashingtonBerlinNewYorkCapitalCityUKUSAGermany
```kroki {_type=plantuml}

@startuml
object London
object Washington
object Berlin
object NewYork

map CapitalCity {
 UK *-> London
 USA *--> Washington
 Germany *---> Berlin
}

NewYork --> CapitalCity::USA
@enduml
```

Example 6

dmz210.x.x.x/24internal172.x.x.x/24Restarted nightly210.x.x.1210.x.x.20172.x.x.1210.x.x.2172.x.x.2172.x.x.101172.x.x.110172.x.x.100user1web01web02db02ptr01db01
```kroki {_type=plantuml}

@startuml

nwdiag {
  group nightly {
    color = "#FFAAAA";
    description = "<&clock> Restarted nightly <&clock>";
    web02;
    db01;
  }
  network dmz {
      address = "210.x.x.x/24"

      user [description = "<&person*4.5>\n user1"];
      // set multiple addresses (using comma)
      web01 [address = "210.x.x.1, 210.x.x.20",  description = "<&cog*4>\nweb01"]
      web02 [address = "210.x.x.2",  description = "<&cog*4>\nweb02"];

  }
  network internal {
      address = "172.x.x.x/24";

      web01 [address = "172.x.x.1"];
      web02 [address = "172.x.x.2"];
      db01 [address = "172.x.x.100",  description = "<&spreadsheet*4>\n db01"];
      db02 [address = "172.x.x.101",  description = "<&spreadsheet*4>\n db02"];
      ptr  [address = "172.x.x.110",  description = "<&print*4>\n ptr01"];
  }
}
@enduml
```

Example 7

dmz210.x.x.x/24internal172.x.x.x/24210.x.x.1210.x.x.20172.x.x.1210.x.x.2172.x.x.2web01web02db01db02
```kroki {_type=plantuml}

@startuml
nwdiag {
  network dmz {
      address = "210.x.x.x/24"

      // set multiple addresses (using comma)
      web01 [address = "210.x.x.1, 210.x.x.20"];
      web02 [address = "210.x.x.2"];
  }
  network internal {
      address = "172.x.x.x/24";

      web01 [address = "172.x.x.1"];
      web02 [address = "172.x.x.2"];
      db01;
      db02;
  }
}
@enduml
```

Example 8

lu65.0.0.x/24tc192.168.254.x/24internal172.x.x.x/2465.0.0.1/24210.x.x.1210.x.x.20172.x.x.1210.x.x.2172.x.x.2atriumweb01web02db01db02
```kroki {_type=plantuml}

@startuml
nwdiag {

   group {
    color = "#FFAAAA";

    web01;
    web02;
    db01;
    db02;
  }
  network lu {
      address = "65.0.0.x/24"
      
      atrium [address = "65.0.0.1/24"]
  }
  network tc {
      address = "192.168.254.x/24"

      // set multiple addresses (using comma)
      atrium [address = "210.x.x.1, 210.x.x.20"];
      web02 [address = "210.x.x.2"];
  }
  network internal {
      address = "172.x.x.x/24";

      atrium [address = "172.x.x.1"];
      web02 [address = "172.x.x.2"];
      db01;
      db02;
  }
}
@enduml
```

Example 9

NetworkNetwork2Network3ActorAgentArtifactBoundaryCardCloudCollectionsComponentControlDatabaseEntityFileFolderFrameHexagonInterfaceLabelNodePackagePersonQueueStackRectangleStorageUsecase
```kroki {_type=plantuml}

@startuml
nwdiag {
  network Network {
    Actor       [shape = actor]       
    Agent       [shape = agent]       
    Artifact    [shape = artifact]    
    Boundary    [shape = boundary]    
    Card        [shape = card]        
    Cloud       [shape = cloud]       
    Collections [shape = collections] 
    Component   [shape = component]   
  }
  network Network2 {
    Control     [shape = control]     
    Database    [shape = database]    
    Entity      [shape = entity]      
    File        [shape = file]        
    Folder      [shape = folder]      
    Frame       [shape = frame]       
    Hexagon     [shape = hexagon]     
    Interface   [shape = interface]   
  }
    network Network3 {
    Label       [shape = label]       
    Node        [shape = node]        
    Package     [shape = package]     
    Person      [shape = person]      
    Queue       [shape = queue]       
    Stack       [shape = stack]       
    Rectangle   [shape = rectangle]   
    Storage     [shape = storage]     
    Usecase     [shape = usecase]     
  }
}
@enduml
```

Example 10 - Gantt

2020202120222023Prototype designTesting2020202120222023
```kroki {_type=plantuml}

@startgantt
projectscale yearly zoom 2
Project starts the 1st of october 2020
[Prototype design] as [TASK1] requires 700 days
[TASK1] is colored in Lavender/LightBlue
[Testing] requires 200 days
[TASK1]->[Testing]

2021-01-18 to 2021-03-22 are colored in salmon 
@endgantt
```

Example 11 - Gantt

MoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTu910111213141516171819202122232425262728293012345678April 2018May 2018Prototype designTest prototypeMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTu910111213141516171819202122232425262728293012345678April 2018May 2018
```kroki {_type=plantuml}

@startgantt
project starts the 2018/04/09
saturday are closed
sunday are closed
2018/05/01 is closed
2018/04/17 to 2018/04/19 is closed
[Prototype design] requires 14 days
[Test prototype] requires 4 days
[Test prototype] starts at [Prototype design]'s end
[Prototype design] is colored in Fuchsia/FireBrick
[Test prototype] is colored in GreenYellow/Green
@endgantt
```

Example 12 - Gantt

123456789101112131415161718192021222324252627282930Task1Task2Phase TwoTask3Task4Review 01123456789101112131415161718192021222324252627282930
```kroki {_type=plantuml}

@startgantt
[Task1] requires 10 days
then [Task2] requires 4 days
-- Phase Two --
[Task3] starts 5 days after [Task2]'s end and requires 5 days
then [Task4] requires 6 days

[Review 01] happens on 2 days after [Task2]'s end

Separator just at [Task1]'s end
Separator just 2 days before [Task3]'s start

@endgantt
```