specification {
    tag plane
    tag genericPlatformComponent
    element plane {
        notation "Plane"
        style {
            color gray
        }
    }
    element system {
    style {
      opacity 20%
      color secondary
    }
  }
  element container {
    style {
      opacity 20%
      color secondary
    }
  }
  element component {
    style {
      opacity 20%
      color secondary
    }
  }
}

model {
    plane DeliveryAndControlPlane {
        #plane
        system IDE {
            #genericPlatformComponent
            -> CIPipeline
        }
        system Portal {
            #genericPlatformComponent
            ->ApplicationSourceCode
        }
        system VersionControl {
            #genericPlatformComponent
            style {
                icon https://upload.wikimedia.org/wikipedia/commons/0/0f/Forgejo-wordmark.svg
            }
            component PlatformSourceCode {
                #genericPlatformComponent
                title 'Platform Source Code'
                component IAC {
                    -> Orchestrator
                }
                component Automations
            }
            component ApplicationSourceCode {
                #genericPlatformComponent
                title 'Application Source Code'
                component Score
                component Workload
                -> CIPipeline
            }
        }
    }
    plane IntegrationAndDeliveryPlane {
        #plane
        system CIPipeline {
            -> Registry
        }
        system Registry {
            -> Orchestrator
        }
        system Orchestrator {
            #genericPlatformComponent
            style {
                color red
            }
            -> CDPipeline
            -> SecretsAndIdentityManagement
        }
        system CDPipeline {
            -> RessourcePlane
        }
    }
    plane MonitoringAndLoggingPlane {
        #plane
        system Observability
    }
    plane SecurityPlane {
        #plane
        style {
            
        }
        system SecretsAndIdentityManagement {
            #genericPlatformComponent
        }
    }
    plane RessourcePlane {
        #plane
        system Compute 
        system Data
        system Networking
        system Services
    }
}

views {
    /**
     * @likec4-generated(v1)
     * iKRoYXNo2Sg4YzM0OTBhYzE2MGZhNjIwNWI5YzNmNjY5ZGE3YzZiMTRiMWMzM2I4qmF1dG9MYXlvdXSiVEKhePiheQCld2lkdGjNCBCmaGVpZ2h0zQeRpW5vZGVz3gAUt0RlbGl2ZXJ5QW5kQ29udHJvbFBsYW5lgqFilP3NAfLNCAvNAkehY8O7SW50ZWdyYXRpb25B
     * bmREZWxpdmVyeVBsYW5lgqFilPjNBEjNBnLNARqhY8O5TW9uaXRvcmluZ0FuZExvZ2dpbmdQbGFuZYKhYpT9zQVuzQGAzQEJoWPDrVNlY3VyaXR5UGxhbmWCoWKU+s0GiM0Bgs0BCaFjw65SZXNzb3VyY2VQbGFuZYKhYpTNBnTNBEfNAZLNA0ChY8O7RGVsaXZlcnlB
     * bmRDb250cm9sUGxhbmUuSURFgqFilCXNAijNAUDMtKFjwr5EZWxpdmVyeUFuZENvbnRyb2xQbGFuZS5Qb3J0YWyCoWKUzQG9zQIpzQFAzLShY8LZJkRlbGl2ZXJ5QW5kQ29udHJvbFBsYW5lLlZlcnNpb25Db250cm9sgqFilM0Blc0C+c0GS80BGKFjw9koSW50ZWdy
     * YXRpb25BbmREZWxpdmVyeVBsYW5lLk9yY2hlc3RyYXRvcoKhYpTNA2jNBIbNAUDMtKFjwtkmSW50ZWdyYXRpb25BbmREZWxpdmVyeVBsYW5lLkNJUGlwZWxpbmWCoWKUIM0EhM0BQMy0oWPC2SRJbnRlZ3JhdGlvbkFuZERlbGl2ZXJ5UGxhbmUuUmVnaXN0cnmCoWKU
     * zQHEzQSDzQFAzLShY8LZJkludGVncmF0aW9uQW5kRGVsaXZlcnlQbGFuZS5DRFBpcGVsaW5lgqFilM0FAs0Efs0BQMy0oWPC2SdNb25pdG9yaW5nQW5kTG9nZ2luZ1BsYW5lLk9ic2VydmFiaWxpdHmCoWKUHc0Fo80BQMy0oWPC2SpTZWN1cml0eVBsYW5lLlNlY3Jl
     * dHNBbmRJZGVudGl0eU1hbmFnZW1lbnSCoWKUGs0Gvc0BQsy0oWPCtlJlc3NvdXJjZVBsYW5lLkNvbXB1dGWCoWKUzQaczQR8zQFAzLShY8KzUmVzc291cmNlUGxhbmUuRGF0YYKhYpTNBp3NBTbNAUDMtKFjwrlSZXNzb3VyY2VQbGFuZS5OZXR3b3JraW5ngqFilM0G
     * ns0Gq80BQMy0oWPCt1Jlc3NvdXJjZVBsYW5lLlNlcnZpY2VzgqFilM0Gnc0F8c0BQMy0oWPC2TlEZWxpdmVyeUFuZENvbnRyb2xQbGFuZS5WZXJzaW9uQ29udHJvbC5QbGF0Zm9ybVNvdXJjZUNvZGWCoWKUzQZ3zQMvzQFAzLShY8LZPERlbGl2ZXJ5QW5kQ29udHJv
     * bFBsYW5lLlZlcnNpb25Db250cm9sLkFwcGxpY2F0aW9uU291cmNlQ29kZYKhYpTNAb7NAzXNAUDMtKFjwqVlZGdlc4A=
     */
    view planes {
        title "Platform"
        description "Platform Reference Architecture High Level Planes (by Humanitec)"
        include element.tag==#plane, element.tag==#genericPlatformComponent
        include DeliveryAndControlPlane.*, VersionControl.*, IntegrationAndDeliveryPlane.*, MonitoringAndLoggingPlane.*, RessourcePlane.*

        exclude -> ApplicationSourceCode, -> DeliveryAndControlPlane, -> IntegrationAndDeliveryPlane.*, -> SecurityPlane, -> RessourcePlane
    }

}