1 line
25 KiB
XML
1 line
25 KiB
XML
<svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 1507.38px; background-color: transparent;" viewBox="0 0 1507.375 496.36444091796875" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:Inter,Arial,sans-serif;font-size:16px;fill:#000000;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#666;stroke:#666;}#my-svg .marker.cross{stroke:#666;}#my-svg svg{font-family:Inter,Arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:Inter,Arial,sans-serif;color:#000000;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#000000;color:#000000;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#eee;stroke:#999;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#666!important;stroke-width:0;stroke:#666;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#666;stroke-width:1px;}#my-svg .flowchart-link{stroke:#666;fill:none;}#my-svg .edgeLabel{background-color:white;text-align:center;}#my-svg .edgeLabel p{background-color:white;}#my-svg .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#my-svg .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#my-svg .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:Inter,Arial,sans-serif;font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:white;text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:white;padding:2px;}#my-svg .icon-shape .label rect,#my-svg .image-shape .label rect{opacity:0.5;background-color:white;fill:white;}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg .node .neo-node{stroke:#999;}#my-svg [data-look="neo"].node rect,#my-svg [data-look="neo"].cluster rect,#my-svg [data-look="neo"].node polygon{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node path{stroke:url(#my-svg-gradient);stroke-width:1px;}#my-svg [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node .neo-line path{stroke:#999;filter:none;}#my-svg [data-look="neo"].node circle{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node circle .state-start{fill:#000000;}#my-svg [data-look="neo"].icon-shape .icon{fill:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].icon-shape .icon-neo path{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg :root{--mermaid-font-family:Inter,Arial,sans-serif;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"/></marker><marker id="my-svg_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"/><g class="edgePaths"><path d="M192.75,356.364L196.917,356.364C201.083,356.364,209.417,356.364,217.083,356.364C224.75,356.364,231.75,356.364,235.25,356.364L238.75,356.364" id="my-svg-L_Browser_Frontend_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Browser_Frontend_0" data-points="W3sieCI6MTkyLjc1LCJ5IjozNTYuMzY0NDI1NjU5MTc5N30seyJ4IjoyMTcuNzUsInkiOjM1Ni4zNjQ0MjU2NTkxNzk3fSx7IngiOjI0Mi43NSwieSI6MzU2LjM2NDQyNTY1OTE3OTd9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M366.046,317.364L377.28,306.531C388.515,295.698,410.984,274.031,425.719,263.198C440.453,252.364,447.453,252.364,450.953,252.364L454.453,252.364" id="my-svg-L_Frontend_Proxy_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Frontend_Proxy_0" data-points="W3sieCI6MzY2LjA0NTg5ODQzNzUsInkiOjMxNy4zNjQ0MjU2NTkxNzk3fSx7IngiOjQzMy40NTMxMjUsInkiOjI1Mi4zNjQ0MjU2NTkxNzk3fSx7IngiOjQ1OC40NTMxMjUsInkiOjI1Mi4zNjQ0MjU2NTkxNzk3fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M645.641,252.364L653.737,252.364C661.833,252.364,678.026,252.364,693.552,252.364C709.078,252.364,723.938,252.364,731.367,252.364L738.797,252.364" id="my-svg-L_Proxy_Backend_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Proxy_Backend_0" data-points="W3sieCI6NjQ1LjY0MDYyNSwieSI6MjUyLjM2NDQyNTY1OTE3OTd9LHsieCI6Njk0LjIxODc1LCJ5IjoyNTIuMzY0NDI1NjU5MTc5N30seyJ4Ijo3NDIuNzk2ODc1LCJ5IjoyNTIuMzY0NDI1NjU5MTc5N31d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M894.37,213.364L920.034,185.198C945.697,157.031,997.024,100.698,1040.42,72.531C1083.815,44.364,1119.279,44.364,1137.01,44.364L1154.742,44.364" id="my-svg-L_Backend_Prisma_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Backend_Prisma_0" data-points="W3sieCI6ODk0LjM3MDExNzE4NzUsInkiOjIxMy4zNjQ0MjU2NTkxNzk3fSx7IngiOjEwNDguMzUxNTYyNSwieSI6NDQuMzY0NDI1NjU5MTc5Njl9LHsieCI6MTE1OC43NDIxODc1LCJ5Ijo0NC4zNjQ0MjU2NTkxNzk2OX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1310.305,44.364L1320.624,44.364C1330.943,44.364,1351.581,44.364,1365.4,44.364C1379.219,44.364,1386.219,44.364,1389.719,44.364L1393.219,44.364" id="my-svg-L_Prisma_Db_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Prisma_Db_0" data-points="W3sieCI6MTMxMC4zMDQ2ODc1LCJ5Ijo0NC4zNjQ0MjU2NTkxNzk2OX0seyJ4IjoxMzcyLjIxODc1LCJ5Ijo0NC4zNjQ0MjU2NTkxNzk2OX0seyJ4IjoxMzk3LjIxODc1LCJ5Ijo0NC4zNjQ0MjU2NTkxNzk2OX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M929.904,213.364L949.646,202.531C969.387,191.698,1008.869,170.031,1051.032,159.198C1093.195,148.364,1138.039,148.364,1160.461,148.364L1182.883,148.364" id="my-svg-L_Backend_Vault_0" class=" edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Backend_Vault_0" data-points="W3sieCI6OTI5LjkwNDI5Njg3NSwieSI6MjEzLjM2NDQyNTY1OTE3OTd9LHsieCI6MTA0OC4zNTE1NjI1LCJ5IjoxNDguMzY0NDI1NjU5MTc5N30seyJ4IjoxMTg2Ljg4MjgxMjUsInkiOjE0OC4zNjQ0MjU2NTkxNzk3fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M974.875,252.364L987.121,252.364C999.367,252.364,1023.859,252.364,1059.763,252.364C1095.667,252.364,1142.982,252.364,1166.639,252.364L1190.297,252.364" id="my-svg-L_Backend_OneC_0" class=" edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Backend_OneC_0" data-points="W3sieCI6OTc0Ljg3NSwieSI6MjUyLjM2NDQyNTY1OTE3OTd9LHsieCI6MTA0OC4zNTE1NjI1LCJ5IjoyNTIuMzY0NDI1NjU5MTc5N30seyJ4IjoxMTk0LjI5Njg3NSwieSI6MjUyLjM2NDQyNTY1OTE3OTd9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M929.904,291.364L949.646,302.198C969.387,313.031,1008.869,334.698,1040.19,345.531C1071.51,356.364,1094.669,356.364,1106.249,356.364L1117.828,356.364" id="my-svg-L_Backend_Bots_0" class=" edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Backend_Bots_0" data-points="W3sieCI6OTI5LjkwNDI5Njg3NSwieSI6MjkxLjM2NDQyNTY1OTE3OTd9LHsieCI6MTA0OC4zNTE1NjI1LCJ5IjozNTYuMzY0NDI1NjU5MTc5N30seyJ4IjoxMTIxLjgyODEyNSwieSI6MzU2LjM2NDQyNTY1OTE3OTd9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M360.653,395.364L372.787,408.864C384.92,422.364,409.187,449.364,441.085,462.864C472.984,476.364,512.516,476.364,555.977,476.364C599.438,476.364,646.828,476.364,697.96,476.364C749.091,476.364,803.964,476.364,862.986,476.364C922.008,476.364,985.18,476.364,1037.312,474.599C1089.445,472.833,1130.538,469.301,1151.085,467.535L1171.632,465.769" id="my-svg-L_Frontend_Dokploy_0" class=" edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Frontend_Dokploy_0" data-points="W3sieCI6MzYwLjY1MzMyMDMxMjUsInkiOjM5NS4zNjQ0MjU2NTkxNzk3fSx7IngiOjQzMy40NTMxMjUsInkiOjQ3Ni4zNjQ0MjU2NTkxNzk3fSx7IngiOjU1Mi4wNDY4NzUsInkiOjQ3Ni4zNjQ0MjU2NTkxNzk3fSx7IngiOjY5NC4yMTg3NSwieSI6NDc2LjM2NDQyNTY1OTE3OTd9LHsieCI6ODU4LjgzNTkzNzUsInkiOjQ3Ni4zNjQ0MjU2NTkxNzk3fSx7IngiOjEwNDguMzUxNTYyNSwieSI6NDc2LjM2NDQyNTY1OTE3OTd9LHsieCI6MTE3NS42MTcxODc1LCJ5Ijo0NjUuNDI2OTUxODg2NjI0MDd9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M900.359,291.364L925.024,314.531C949.69,337.698,999.021,384.031,1044.239,410.51C1089.457,436.988,1130.563,443.612,1151.115,446.924L1171.668,450.236" id="my-svg-L_Backend_Dokploy_0" class=" edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Backend_Dokploy_0" data-points="W3sieCI6OTAwLjM1OTAyMzg3NjQwNDUsInkiOjI5MS4zNjQ0MjU2NTkxNzk3fSx7IngiOjEwNDguMzUxNTYyNSwieSI6NDMwLjM2NDQyNTY1OTE3OTd9LHsieCI6MTE3NS42MTcxODc1LCJ5Ijo0NTAuODcyMTg4OTgyNzIxNDd9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_Browser_Frontend_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Frontend_Proxy_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Proxy_Backend_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Backend_Prisma_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Prisma_Db_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(1048.3515625, 148.3644256591797)"><g class="label" data-id="L_Backend_Vault_0" transform="translate(-48.4765625, -12)"><foreignObject width="96.953125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "><p>bootstrap env</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(1048.3515625, 252.3644256591797)"><g class="label" data-id="L_Backend_OneC_0" transform="translate(-46.6875, -12)"><foreignObject width="93.375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "><p>sync / events</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(1048.3515625, 356.3644256591797)"><g class="label" data-id="L_Backend_Bots_0" transform="translate(-42.25, -12)"><foreignObject width="84.5" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "><p>notifications</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(694.21875, 476.3644256591797)"><g class="label" data-id="L_Frontend_Dokploy_0" transform="translate(-23.578125, -12)"><foreignObject width="47.15625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "><p>deploy</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(1021.33592, 404.99035)"><g class="label" data-id="L_Backend_Dokploy_0" transform="translate(-23.578125, -12)"><foreignObject width="47.15625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "><p>deploy</p></span></div></foreignObject></g></g></g><g class="nodes"><g class="node default " id="my-svg-flowchart-Browser-0" data-look="classic" transform="translate(100.375, 356.3644256591797)"><rect class="basic label-container" style="" x="-92.375" y="-27" width="184.75" height="54"/><g class="label" style="" transform="translate(-62.375, -12)"><rect/><foreignObject width="124.75" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>Браузер клиента</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-Frontend-1" data-look="classic" transform="translate(325.6015625, 356.3644256591797)"><rect class="basic label-container" style="" x="-82.8515625" y="-39" width="165.703125" height="78"/><g class="label" style="" transform="translate(-52.8515625, -24)"><rect/><foreignObject width="105.703125" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>web-frontend<br />Nuxt 4 + Vue 3</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-Proxy-2" data-look="classic" transform="translate(552.046875, 252.3644256591797)"><rect class="basic label-container" style="" x="-93.59375" y="-27" width="187.1875" height="54"/><g class="label" style="" transform="translate(-63.59375, -12)"><rect/><foreignObject width="127.1875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>/api/graphql proxy</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-Backend-3" data-look="classic" transform="translate(858.8359375, 252.3644256591797)"><rect class="basic label-container" style="" x="-116.0390625" y="-39" width="232.078125" height="78"/><g class="label" style="" transform="translate(-86.0390625, -24)"><rect/><foreignObject width="172.078125" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>apollo-backend<br />Apollo Server + Express</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-Prisma-4" data-look="classic" transform="translate(1234.5234375, 44.36442565917969)"><rect class="basic label-container" style="" x="-75.78125" y="-27" width="151.5625" height="54"/><g class="label" style="" transform="translate(-45.78125, -12)"><rect/><foreignObject width="91.5625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>Prisma ORM</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-Db-5" data-look="classic" transform="translate(1448.296875, 44.36442565917969)"><path d="M0,11.242949511624708 a51.078125,11.242949511624708 0,0,0 102.15625,0 a51.078125,11.242949511624708 0,0,0 -102.15625,0 l0,50.24294951162471 a51.078125,11.242949511624708 0,0,0 102.15625,0 l0,-50.24294951162471" class="basic label-container outer-path" style="" label-offset-y="11.242949511624708" transform="translate(-51.078125, -36.36442426743706)"/><g class="label" style="" transform="translate(-43.578125, -2)"><rect/><foreignObject width="87.15625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>PostgreSQL</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-Vault-6" data-look="classic" transform="translate(1234.5234375, 148.3644256591797)"><rect class="basic label-container" style="" x="-47.640625" y="-27" width="95.28125" height="54"/><g class="label" style="" transform="translate(-17.640625, -12)"><rect/><foreignObject width="35.28125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>Vault</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-OneC-7" data-look="classic" transform="translate(1234.5234375, 252.3644256591797)"><rect class="basic label-container" style="" x="-40.2265625" y="-27" width="80.453125" height="54"/><g class="label" style="" transform="translate(-10.2265625, -12)"><rect/><foreignObject width="20.453125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>1С</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-Bots-8" data-look="classic" transform="translate(1234.5234375, 356.3644256591797)"><rect class="basic label-container" style="" x="-112.6953125" y="-27" width="225.390625" height="54"/><g class="label" style="" transform="translate(-82.6953125, -12)"><rect/><foreignObject width="165.390625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>Telegram / MAX / email</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-Dokploy-9" data-look="classic" transform="translate(1234.5234375, 460.3644256591797)"><rect class="basic label-container" style="" x="-58.90625" y="-27" width="117.8125" height="54"/><g class="label" style="" transform="translate(-28.90625, -12)"><rect/><foreignObject width="57.8125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>Dokploy</p></span></div></foreignObject></g></g></g></g></g><defs><filter id="my-svg-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><defs><filter id="my-svg-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><linearGradient id="my-svg-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="hsl(0, 0%, 83.3333333333%)" stop-opacity="1"/><stop offset="100%" stop-color="hsl(0, 0%, 88.9215686275%)" stop-opacity="1"/></linearGradient></svg> |