@startuml C4-Container

' !include style.puml
' !include common.puml
!include https://raw.githubusercontent.com/N0N4M3pl/plantuml-C4/master/src/style.puml
!include https://raw.githubusercontent.com/N0N4M3pl/plantuml-C4/master/src/common.puml

' ----------------------------------------------------
' Document
' ----------------------------------------------------

!definelong Header_Container(text)
left header Container View
title text
!enddefinelong

' ----------------------------------------------------
' Container
' ----------------------------------------------------

!define System_Boundary(alias, label, link="") rectangle "==label" <<system boundary>> as alias link
skinparam rectangle<<system boundary>> {
    StereotypeFontColor COLOR_FONT_DARK
    FontColor COLOR_FONT_DARK
    BackgroundColor COLOR_BOUNDARY_SYSTEM_BG
    BorderColor COLOR_BOUNDARY_SYSTEM_BD
    BorderStyle dashed
    BorderThickness 1
    Shadowing false
}

!define System_Package(alias, label) package "==label" <<system package>> as alias
skinparam package<<system package>> {
    StereotypeFontColor COLOR_FONT_DARK
    FontColor COLOR_FONT_DARK
    BackgroundColor COLOR_BOUNDARY_SYSTEM_BG
    BorderColor COLOR_BOUNDARY_SYSTEM_BD
    Shadowing false
}

!define Container(alias, label, description=" ", technology="", link="") rectangle "==label\n //description//\n ""technology"" " <<container>> as alias link
skinparam rectangle<<container>> {
    StereotypeFontColor COLOR_FONT_DARK
    FontColor COLOR_FONT_DARK
    BackgroundColor COLOR_CONTAINER_BG
    BorderColor COLOR_CONTAINER_BD
    Shadowing false
}

!define Container_Script(alias, label, description=" ", technology="", link="") rectangle "==label\n //description//\n ""technology"" " <<script container>> as alias link
skinparam rectangle<<script container>> {
    StereotypeFontColor COLOR_FONT_DARK
    FontColor COLOR_FONT_DARK
    BackgroundColor COLOR_YELLOW_2
    BorderColor COLOR_CONTAINER_BD
    Shadowing false
}

!define Container_MicroService(alias, label, description=" ", technology="", link="") rectangle "==label\n //description//\n ""technology"" " <<microservice container>> as alias link
skinparam rectangle<<microservice container>> {
    StereotypeFontColor COLOR_FONT_DARK
    FontColor COLOR_FONT_DARK
    BackgroundColor COLOR_ORANGE_2
    BorderColor COLOR_CONTAINER_BD
    Shadowing false
}

!define Container_Service(alias, label, description=" ", technology="", link="") rectangle "==label\n //description//\n ""technology"" " <<service container>> as alias link
skinparam rectangle<<service container>> {
    StereotypeFontColor COLOR_FONT_DARK
    FontColor COLOR_FONT_DARK
    BackgroundColor COLOR_RED_2
    BorderColor COLOR_CONTAINER_BD
    Shadowing false
}

!define Container_PubSub(alias, label, description=" ", technology="", link="") queue "==label\n //description//\n ""technology"" " <<pubsub container>> as alias link
skinparam queue<<pubsub container>> {
    StereotypeFontColor COLOR_FONT_DARK
    FontColor COLOR_FONT_DARK
    BackgroundColor COLOR_BLUE_1
    BorderColor COLOR_CONTAINER_BD
    Shadowing false
}

!define Container_Database(alias, label, description=" ", technology="", link="") database "==label\n //description//\n ""technology"" " <<database container>> as alias link
skinparam database<<database container>> {
    StereotypeFontColor COLOR_FONT_DARK
    FontColor COLOR_FONT_DARK
    BackgroundColor COLOR_BLUE_1
    BorderColor COLOR_CONTAINER_BD
    Shadowing false
}

!define Container_Storage(alias, label, description=" ", technology="", link="") stack "==label\n //description//\n ""technology"" " <<storage container>> as alias link
skinparam stack<<storage container>> {
    StereotypeFontColor COLOR_FONT_DARK
    FontColor COLOR_FONT_DARK
    BackgroundColor COLOR_BLUE_1
    BorderColor COLOR_CONTAINER_BD
    Shadowing false
}

!define Container_Config(alias, label, description=" ", technology="", link="") file "==label\n //description//\n ""technology"" " <<config container>> as alias link
skinparam file<<config container>> {
    StereotypeFontColor COLOR_FONT_DARK
    FontColor COLOR_FONT_DARK
    BackgroundColor COLOR_BLUE_1
    BorderColor COLOR_CONTAINER_BD
    Shadowing false
}

!define Application_WebServer(alias, label, description=" ", technology="", link="") rectangle "==label\n //description//\n ""technology"" " <<webserver application>> as alias link
skinparam rectangle<<webserver application>> {
    StereotypeFontColor COLOR_FONT_DARK
    FontColor COLOR_FONT_DARK
    BackgroundColor COLOR_TURQUOISE_2
    BorderColor COLOR_CONTAINER_BD
    Shadowing false
}

!define Application_Web(alias, label, description=" ", technology="", link="") rectangle "==label\n //description//\n ""technology"" " <<web application>> as alias link
skinparam rectangle<<web application>> {
    StereotypeFontColor COLOR_FONT_DARK
    FontColor COLOR_FONT_DARK
    BackgroundColor COLOR_GREEN_2
    BorderColor COLOR_CONTAINER_BD
    Shadowing false
}

!define Application_Desktop(alias, label, description=" ", technology="", link="") rectangle "==label\n //description//\n ""technology"" " <<desktop application>> as alias link
skinparam rectangle<<desktop application>> {
    StereotypeFontColor COLOR_FONT_DARK
    FontColor COLOR_FONT_DARK
    BackgroundColor COLOR_GREEN_2
    BorderColor COLOR_CONTAINER_BD
    Shadowing false
}

!define Application_Mobile(alias, label, description=" ", technology="", link="") rectangle "==label\n //description//\n ""technology"" " <<mobile application>> as alias link
skinparam rectangle<<mobile application>> {
    StereotypeFontColor COLOR_FONT_DARK
    FontColor COLOR_FONT_DARK
    BackgroundColor COLOR_GREEN_2
    BorderColor COLOR_CONTAINER_BD
    Shadowing false
}

' ----------------------------------------------------
' ----------------------------------------------------

@enduml
