digraph room_layers { bgcolor="#0a0a0a" rankdir=TB fontname="Helvetica" node [fontname="Helvetica" fontsize=10 style=filled color="#333" fontcolor="#e5e5e5" shape=record] edge [fontname="Helvetica" fontsize=9 fontcolor="#a3a3a3" color="#666"] label="Room Layers — init wizard" labelloc=t fontsize=14 fontcolor="#d4a574" l0 [label="{Layer 0 | Config + Data | config.json · data/*.json}" fillcolor="#1a1a1a" color="#d4a574"] l1 [label="{Layer 1 | Docker | soleprint/docker-compose.yml · .env}" fillcolor="#1a1a1a"] l2 [label="{Layer 2 | Managed App | docker-compose.yml · Dockerfiles · .env}" fillcolor="#1a1a1a"] l3 [label="{Layer 3 | Link | link/main.py · adapters/ · Dockerfile}" fillcolor="#1a1a1a"] l4 [label="{Layer 4 | Scripts | ctrl/start.sh · stop.sh · status.sh · logs.sh}" fillcolor="#1a1a1a"] l5 [label="{Layer 5 | Systems | tester/environments.json · tests/}" fillcolor="#1a1a1a"] l6 [label="{Layer 6 | Nginx | nginx/local.conf · docker-compose.nginx.yml}" fillcolor="#1a1a1a"] l0 -> l1 [label="required"] l1 -> l2 [label="if managed"] l2 -> l3 [label="optional"] l1 -> l4 [label="optional"] l4 -> l5 [label="optional"] l5 -> l6 [label="if frontend"] // Annotations note_req [label="every room" fillcolor="#0a0a0a" fontcolor="#d4a574" color="#0a0a0a" shape=plaintext fontsize=9] note_req -> l0 [style=invis] }