digraph ComponentDependencies { rankdir=TB; node [shape=box, style=rounded]; // Infrastructure Layer (Base Services) subgraph cluster_infra { label="Infrastructure Layer"; style=dashed; ChainFire [fillcolor="#e1f5ff", style="filled,rounded"]; FlareDB [fillcolor="#e1f5ff", style="filled,rounded"]; } // Platform Layer subgraph cluster_platform { label="Platform Layer"; style=dashed; IAM [fillcolor="#fff4e1", style="filled,rounded"]; Deployer [fillcolor="#fff4e1", style="filled,rounded"]; } // Application Layer subgraph cluster_app { label="Application Layer"; style=dashed; PlasmaVMC [fillcolor="#e8f5e9", style="filled,rounded"]; PrismNET [fillcolor="#e8f5e9", style="filled,rounded"]; FlashDNS [fillcolor="#e8f5e9", style="filled,rounded"]; FiberLB [fillcolor="#e8f5e9", style="filled,rounded"]; APIGateway [fillcolor="#e8f5e9", style="filled,rounded"]; LightningStor [fillcolor="#e8f5e9", style="filled,rounded"]; NightLight [fillcolor="#e8f5e9", style="filled,rounded"]; CreditService [fillcolor="#e8f5e9", style="filled,rounded"]; K8sHost [fillcolor="#e8f5e9", style="filled,rounded"]; } // Deployment Layer subgraph cluster_deploy { label="Deployment Layer"; style=dashed; NixOSModules [fillcolor="#f3e5f5", style="filled,rounded"]; NetbootImages [fillcolor="#f3e5f5", style="filled,rounded"]; BootstrapISO [fillcolor="#f3e5f5", style="filled,rounded"]; FirstBootAutomation [fillcolor="#f3e5f5", style="filled,rounded"]; NixNOS [fillcolor="#f3e5f5", style="filled,rounded"]; } // Infrastructure dependencies FlareDB -> ChainFire [label="requires", color=blue]; // Platform dependencies IAM -> FlareDB [label="uses", color=blue]; IAM -> ChainFire [label="uses", color=blue, style=dashed]; Deployer -> ChainFire [label="storage", color=blue]; // Application dependencies on Infrastructure PlasmaVMC -> ChainFire [label="uses", color=blue, style=dashed]; PlasmaVMC -> FlareDB [label="uses", color=blue, style=dashed]; PrismNET -> ChainFire [label="uses", color=blue, style=dashed]; FlashDNS -> ChainFire [label="uses", color=blue, style=dashed]; FlashDNS -> FlareDB [label="uses", color=blue, style=dashed]; FiberLB -> ChainFire [label="uses", color=blue, style=dashed]; FiberLB -> FlareDB [label="uses", color=blue, style=dashed]; LightningStor -> ChainFire [label="uses", color=blue, style=dashed]; LightningStor -> FlareDB [label="uses", color=blue, style=dashed]; CreditService -> ChainFire [label="uses", color=blue]; K8sHost -> FlareDB [label="uses", color=blue]; K8sHost -> ChainFire [label="uses", color=blue, style=dashed]; // Application dependencies on Platform PlasmaVMC -> IAM [label="auth", color=orange]; PlasmaVMC -> CreditService [label="billing", color=orange, style=dashed]; PlasmaVMC -> PrismNET [label="networking", color=orange]; K8sHost -> IAM [label="auth", color=orange]; K8sHost -> CreditService [label="billing", color=orange, style=dashed]; K8sHost -> PrismNET [label="CNI", color=orange]; K8sHost -> FiberLB [label="ingress", color=orange, style=dashed]; K8sHost -> FlashDNS [label="DNS", color=orange, style=dashed]; APIGateway -> FiberLB [label="fronted by", color=orange, style=dashed]; APIGateway -> IAM [label="auth", color=orange, style=dashed]; APIGateway -> CreditService [label="billing", color=orange, style=dashed]; // Deployment dependencies NixOSModules -> ChainFire [label="module", color=purple, style=dotted]; NixOSModules -> FlareDB [label="module", color=purple, style=dotted]; NixOSModules -> IAM [label="module", color=purple, style=dotted]; NixOSModules -> PlasmaVMC [label="module", color=purple, style=dotted]; NixOSModules -> PrismNET [label="module", color=purple, style=dotted]; NixOSModules -> FlashDNS [label="module", color=purple, style=dotted]; NixOSModules -> FiberLB [label="module", color=purple, style=dotted]; NixOSModules -> APIGateway [label="module", color=purple, style=dotted]; NixOSModules -> LightningStor [label="module", color=purple, style=dotted]; NixOSModules -> NightLight [label="module", color=purple, style=dotted]; NixOSModules -> CreditService [label="module", color=purple, style=dotted]; NixOSModules -> K8sHost [label="module", color=purple, style=dotted]; NetbootImages -> NixOSModules [label="uses", color=purple]; BootstrapISO -> NixOSModules [label="uses", color=purple]; BootstrapISO -> Deployer [label="phone-home", color=purple]; FirstBootAutomation -> ChainFire [label="cluster-join", color=purple]; FirstBootAutomation -> FlareDB [label="cluster-join", color=purple]; FirstBootAutomation -> IAM [label="initial-setup", color=purple]; FirstBootAutomation -> NixOSModules [label="uses", color=purple]; NixNOS -> NixOSModules [label="generates", color=purple]; NixNOS -> FirstBootAutomation [label="config", color=purple]; // Systemd dependencies (runtime) FlareDB -> ChainFire [label="systemd:after", color=red, style=dashed]; IAM -> FlareDB [label="systemd:after", color=red, style=dashed]; PlasmaVMC -> ChainFire [label="systemd:requires", color=red, style=dashed]; PlasmaVMC -> FlareDB [label="systemd:requires", color=red, style=dashed]; PlasmaVMC -> IAM [label="systemd:requires", color=red, style=dashed]; CreditService -> ChainFire [label="systemd:wants", color=red, style=dashed]; K8sHost -> IAM [label="systemd:requires", color=red, style=dashed]; K8sHost -> FlareDB [label="systemd:requires", color=red, style=dashed]; K8sHost -> PrismNET [label="systemd:requires", color=red, style=dashed]; // Legend subgraph cluster_legend { label="Legend"; style=invis; L1 [label="Runtime Dependency", color=blue, style=invis]; L2 [label="Service Integration", color=orange, style=invis]; L3 [label="Deployment/Config", color=purple, style=invis]; L4 [label="Systemd Order", color=red, style=invis]; } }