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
        }
    }
    element platform
}

model {
    platform Platform {
        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
        }
    }
}
