Files
MyClub/diagrams/system-architecture.svg
T
Tomas Dvorak f3db65d350 dev day #90 🥳
2025-11-12 20:31:37 +01:00

1 line
32 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: 1417.92px; background-color: white;" viewBox="0 0 1417.921875 1152" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@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:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#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:#333;color:#333;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;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:#333333!important;stroke-width:0;stroke:#333333;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#333333;stroke-width:2.0px;}#my-svg .flowchart-link{stroke:#333333;fill:none;}#my-svg .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#my-svg .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#my-svg .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#my-svg .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#my-svg .cluster rect{fill:#ffffde;stroke:#aaaa33;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:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#my-svg .icon-shape rect,#my-svg .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#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 :root{--mermaid-font-family:"trebuchet ms",verdana,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-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-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><g class="root"><g class="clusters"><g class="cluster" id="Integrations_optional" data-look="classic"><rect style="" x="1172.734375" y="8" width="237.1875" height="644"/><g class="cluster-label" transform="translate(1217.046875, 8)"><foreignObject width="148.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>Integrations_optional</p></span></div></foreignObject></g></g><g class="cluster" id="Data" data-look="classic"><rect style="" x="1172.734375" y="672" width="237.1875" height="318"/><g class="cluster-label" transform="translate(1274.4296875, 672)"><foreignObject width="33.796875" 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>Data</p></span></div></foreignObject></g></g><g class="cluster" id="Backend" data-look="classic"><rect style="" x="322.4375" y="30" width="734.5" height="784"/><g class="cluster-label" transform="translate(658.5546875, 30)"><foreignObject width="62.265625" 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>Backend</p></span></div></foreignObject></g></g><g class="cluster" id="Frontend" data-look="classic"><rect style="" x="322.4375" y="834" width="310" height="268"/><g class="cluster-label" transform="translate(445.4140625, 834)"><foreignObject width="64.046875" 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>Frontend</p></span></div></foreignObject></g></g><g class="cluster" id="Clients" data-look="classic"><rect style="" x="8" y="812" width="264.4375" height="332"/><g class="cluster-label" transform="translate(115.765625, 812)"><foreignObject width="48.90625" 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>Clients</p></span></div></foreignObject></g></g></g><g class="edgePaths"><path d="M247.438,874L251.604,874C255.771,874,264.104,874,272.438,874C280.771,874,289.104,874,297.438,874C305.771,874,314.104,874,334.486,885.612C354.867,897.224,387.296,920.447,403.511,932.059L419.726,943.671" id="L_A_FE_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_A_FE_0" data-points="W3sieCI6MjQ3LjQzNzUsInkiOjg3NH0seyJ4IjoyNzIuNDM3NSwieSI6ODc0fSx7IngiOjI5Ny40Mzc1LCJ5Ijo4NzR9LHsieCI6MzIyLjQzNzUsInkiOjg3NH0seyJ4Ijo0MjIuOTc4MDQwNTQwNTQwNSwieSI6OTQ2fV0=" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M210.531,978L220.849,978C231.167,978,251.802,978,266.286,978C280.771,978,289.104,978,297.438,978C305.771,978,314.104,978,321.772,978.158C329.439,978.316,336.44,978.632,339.941,978.79L343.442,978.949" id="L_B_FE_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_B_FE_0" data-points="W3sieCI6MjEwLjUzMTI1LCJ5Ijo5Nzh9LHsieCI6MjcyLjQzNzUsInkiOjk3OH0seyJ4IjoyOTcuNDM3NSwieSI6OTc4fSx7IngiOjMyMi40Mzc1LCJ5Ijo5Nzh9LHsieCI6MzQ3LjQzNzUsInkiOjk3OS4xMjkwMzIyNTgwNjQ1fV0=" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M241.367,1082L246.546,1082C251.724,1082,262.081,1082,271.426,1082C280.771,1082,289.104,1082,297.438,1082C305.771,1082,314.104,1082,333.152,1072.687C352.201,1063.374,381.964,1044.748,396.846,1035.435L411.727,1026.122" id="L_C_FE_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_C_FE_0" data-points="W3sieCI6MjQxLjM2NzE4NzUsInkiOjEwODJ9LHsieCI6MjcyLjQzNzUsInkiOjEwODJ9LHsieCI6Mjk3LjQzNzUsInkiOjEwODJ9LHsieCI6MzIyLjQzNzUsInkiOjEwODJ9LHsieCI6NDE1LjExNzkxMjM3MTEzNCwieSI6MTAyNH1d" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M579.895,946L588.652,942.667C597.409,939.333,614.923,932.667,635.305,850C655.688,767.333,678.938,608.667,701.546,532.412C724.154,456.158,746.12,462.316,757.103,465.396L768.086,468.475" id="L_FE_BE_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_FE_BE_0" data-points="W3sieCI6NTc5Ljg5NTEyNzExODY0NCwieSI6OTQ2fSx7IngiOjYzMi40Mzc1LCJ5Ijo5MjZ9LHsieCI6NzAyLjE4NzUsInkiOjQ1MH0seyJ4Ijo3NzEuOTM3NSwieSI6NDY5LjU1NDQ0MzA1MzgxNzN9XQ==" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M607.438,1005.968L611.604,1006.64C615.771,1007.312,624.104,1008.656,639.896,1009.328C655.688,1010,678.938,1010,723.854,1010C768.771,1010,835.354,1010,894.479,1010C953.604,1010,1005.271,1010,1040.754,996.333C1076.237,982.667,1095.536,955.333,1114.836,941.667C1134.135,928,1153.435,928,1166.585,928C1179.734,928,1186.734,928,1190.234,928L1193.734,928" id="L_FE_UP_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_FE_UP_0" data-points="W3sieCI6NjA3LjQzNzUsInkiOjEwMDUuOTY3NzQxOTM1NDgzOX0seyJ4Ijo2MzIuNDM3NSwieSI6MTAxMH0seyJ4Ijo3MDIuMTg3NSwieSI6MTAxMH0seyJ4Ijo5MDEuOTM3NSwieSI6MTAxMH0seyJ4IjoxMDU2LjkzNzUsInkiOjEwMTB9LHsieCI6MTExNC44MzU5Mzc1LCJ5Ijo5Mjh9LHsieCI6MTE3Mi43MzQzNzUsInkiOjkyOH0seyJ4IjoxMTk3LjczNDM3NSwieSI6OTI4fV0=" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M929.795,545L950.985,574.667C972.176,604.333,1014.557,663.667,1045.397,693.333C1076.237,723,1095.536,723,1114.836,723C1134.135,723,1153.435,723,1169.923,723.634C1186.412,724.269,1200.09,725.537,1206.928,726.172L1213.767,726.806" id="L_BE_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_BE_DB_0" data-points="W3sieCI6OTI5Ljc5NDY0Mjg1NzE0MjksInkiOjU0NX0seyJ4IjoxMDU2LjkzNzUsInkiOjcyM30seyJ4IjoxMTE0LjgzNTkzNzUsInkiOjcyM30seyJ4IjoxMTcyLjczNDM3NSwieSI6NzIzfSx7IngiOjEyMTcuNzUsInkiOjcyNy4xNzUzNjIzMTg4NDA2fV0=" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M922.927,545L945.262,586.5C967.597,628,1012.267,711,1044.252,780C1076.237,849,1095.536,904,1114.836,931.5C1134.135,959,1153.435,959,1166.606,958.079C1179.778,957.159,1186.821,955.318,1190.343,954.397L1193.864,953.477" id="L_BE_UP_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_BE_UP_0" data-points="W3sieCI6OTIyLjkyNzA4MzMzMzMzMzQsInkiOjU0NX0seyJ4IjoxMDU2LjkzNzUsInkiOjc5NH0seyJ4IjoxMTE0LjgzNTkzNzUsInkiOjk1OX0seyJ4IjoxMTcyLjczNDM3NSwieSI6OTU5fSx7IngiOjExOTcuNzM0Mzc1LCJ5Ijo5NTIuNDY1MDg1NjM4OTk4Nn1d" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M915.802,467L939.325,400.833C962.847,334.667,1009.892,202.333,1043.065,136.167C1076.237,70,1095.536,70,1114.836,70C1134.135,70,1153.435,70,1171.181,70C1188.927,70,1205.12,70,1213.216,70L1221.313,70" id="L_BE_FACR_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_BE_FACR_0" data-points="W3sieCI6OTE1LjgwMjE3ODg5OTA4MjYsInkiOjQ2N30seyJ4IjoxMDU2LjkzNzUsInkiOjcwfSx7IngiOjExMTQuODM1OTM3NSwieSI6NzB9LHsieCI6MTE3Mi43MzQzNzUsInkiOjcwfSx7IngiOjEyMjUuMzEyNSwieSI6NzB9XQ==" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M920.145,467L942.944,418.167C965.743,369.333,1011.34,271.667,1043.789,222.833C1076.237,174,1095.536,174,1114.836,174C1134.135,174,1153.435,174,1169.497,174C1185.56,174,1198.385,174,1204.798,174L1211.211,174" id="L_BE_YT_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_BE_YT_0" data-points="W3sieCI6OTIwLjE0NTMzMTMyNTMwMTIsInkiOjQ2N30seyJ4IjoxMDU2LjkzNzUsInkiOjE3NH0seyJ4IjoxMTE0LjgzNTkzNzUsInkiOjE3NH0seyJ4IjoxMTcyLjczNDM3NSwieSI6MTc0fSx7IngiOjEyMTUuMjEwOTM3NSwieSI6MTc0fV0=" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M928.451,467L949.865,435.5C971.28,404,1014.109,341,1045.173,309.5C1076.237,278,1095.536,278,1114.836,278C1134.135,278,1153.435,278,1171.107,278C1188.779,278,1204.823,278,1212.845,278L1220.867,278" id="L_BE_ZON_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_BE_ZON_0" data-points="W3sieCI6OTI4LjQ1MDY1Nzg5NDczNjksInkiOjQ2N30seyJ4IjoxMDU2LjkzNzUsInkiOjI3OH0seyJ4IjoxMTE0LjgzNTkzNzUsInkiOjI3OH0seyJ4IjoxMTcyLjczNDM3NSwieSI6Mjc4fSx7IngiOjEyMjQuODY3MTg3NSwieSI6Mjc4fV0=" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M938.353,467L958.117,445.833C977.881,424.667,1017.409,382.333,1046.823,361.167C1076.237,340,1095.536,340,1114.836,340C1134.135,340,1153.435,340,1169.985,342.444C1186.535,344.887,1200.335,349.775,1207.235,352.219L1214.136,354.662" id="L_BE_SMTP_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_BE_SMTP_0" data-points="W3sieCI6OTM4LjM1MzE2MjY1MDYwMjQsInkiOjQ2N30seyJ4IjoxMDU2LjkzNzUsInkiOjM0MH0seyJ4IjoxMTE0LjgzNTkzNzUsInkiOjM0MH0seyJ4IjoxMTcyLjczNDM3NSwieSI6MzQwfSx7IngiOjEyMTcuOTA2MjUsInkiOjM1NS45OTc2Mjg0NTg0OTh9XQ==" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M973.902,545L987.741,552.5C1001.58,560,1029.259,575,1052.748,582.5C1076.237,590,1095.536,590,1114.836,590C1134.135,590,1153.435,590,1167.329,590C1181.224,590,1189.714,590,1193.958,590L1198.203,590" id="L_BE_UMAMI_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_BE_UMAMI_0" data-points="W3sieCI6OTczLjkwMTc4NTcxNDI4NTcsInkiOjU0NX0seyJ4IjoxMDU2LjkzNzUsInkiOjU5MH0seyJ4IjoxMTE0LjgzNTkzNzUsInkiOjU5MH0seyJ4IjoxMTcyLjczNDM3NSwieSI6NTkwfSx7IngiOjEyMDIuMjAzMTI1LCJ5Ijo1OTB9XQ==" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1031.938,489.226L1036.104,488.688C1040.271,488.151,1048.604,487.075,1062.421,486.538C1076.237,486,1095.536,486,1114.836,486C1134.135,486,1153.435,486,1169.253,486C1185.07,486,1197.406,486,1203.574,486L1209.742,486" id="L_BE_MAPS_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_BE_MAPS_0" data-points="W3sieCI6MTAzMS45Mzc1LCJ5Ijo0ODkuMjI1ODA2NDUxNjEyOX0seyJ4IjoxMDU2LjkzNzUsInkiOjQ4Nn0seyJ4IjoxMTE0LjgzNTkzNzUsInkiOjQ4Nn0seyJ4IjoxMTcyLjczNDM3NSwieSI6NDg2fSx7IngiOjEyMTMuNzQyMTg3NSwieSI6NDg2fV0=" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M551.316,629L564.836,638.333C578.357,647.667,605.397,666.333,630.542,675.667C655.688,685,678.938,685,716.104,662.112C753.271,639.223,804.354,593.446,829.896,570.558L855.438,547.669" id="L_JOBS_BE_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_JOBS_BE_0" data-points="W3sieCI6NTUxLjMxNjAwNDY3Mjg5NzIsInkiOjYyOX0seyJ4Ijo2MzIuNDM3NSwieSI6Njg1fSx7IngiOjcwMi4xODc1LCJ5Ijo2ODV9LHsieCI6ODU4LjQxNjU1MDI3OTMyOTYsInkiOjU0NX1d" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M525.058,629L542.955,648.167C560.851,667.333,596.644,705.667,626.166,724.833C655.688,744,678.938,744,723.854,744C768.771,744,835.354,744,894.479,744C953.604,744,1005.271,744,1040.754,744C1076.237,744,1095.536,744,1114.836,744C1134.135,744,1153.435,744,1169.923,743.423C1186.411,742.847,1200.088,741.694,1206.926,741.117L1213.764,740.54" id="L_JOBS_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_JOBS_DB_0" data-points="W3sieCI6NTI1LjA1Nzk4MTkyNzcxMDksInkiOjYyOX0seyJ4Ijo2MzIuNDM3NSwieSI6NzQ0fSx7IngiOjcwMi4xODc1LCJ5Ijo3NDR9LHsieCI6OTAxLjkzNzUsInkiOjc0NH0seyJ4IjoxMDU2LjkzNzUsInkiOjc0NH0seyJ4IjoxMTE0LjgzNTkzNzUsInkiOjc0NH0seyJ4IjoxMTcyLjczNDM3NSwieSI6NzQ0fSx7IngiOjEyMTcuNzUsInkiOjc0MC4yMDQyMTYwNzM3ODEzfV0=" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M521.112,527L539.666,505.333C558.22,483.667,595.329,440.333,625.508,418.667C655.688,397,678.938,397,723.854,397C768.771,397,835.354,397,894.479,397C953.604,397,1005.271,397,1040.754,397C1076.237,397,1095.536,397,1114.836,397C1134.135,397,1153.435,397,1169.952,396.131C1186.469,395.263,1200.203,393.526,1207.071,392.657L1213.938,391.788" id="L_JOBS_SMTP_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_JOBS_SMTP_0" data-points="W3sieCI6NTIxLjExMTUzMzE0OTE3MTIsInkiOjUyN30seyJ4Ijo2MzIuNDM3NSwieSI6Mzk3fSx7IngiOjcwMi4xODc1LCJ5IjozOTd9LHsieCI6OTAxLjkzNzUsInkiOjM5N30seyJ4IjoxMDU2LjkzNzUsInkiOjM5N30seyJ4IjoxMTE0LjgzNTkzNzUsInkiOjM5N30seyJ4IjoxMTcyLjczNDM3NSwieSI6Mzk3fSx7IngiOjEyMTcuOTA2MjUsInkiOjM5MS4yODY1NjEyNjQ4MjIxfV0=" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_A_FE_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_B_FE_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_C_FE_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(702.1875, 450)"><g class="label" data-id="L_FE_BE_0" transform="translate(-44.75, -12)"><foreignObject width="89.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>REST JSON</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(901.9375, 1010)"><g class="label" data-id="L_FE_UP_0" transform="translate(-48.921875, -12)"><foreignObject width="97.84375" 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>uploads static</p></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_BE_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"><g class="label" data-id="L_BE_UP_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_BE_FACR_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_BE_YT_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_BE_ZON_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_BE_SMTP_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(1114.8359375, 590)"><g class="label" data-id="L_BE_UMAMI_0" transform="translate(-32.8984375, -12)"><foreignObject width="65.796875" 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>telemetry</p></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_BE_MAPS_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_JOBS_BE_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_JOBS_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"><g class="label" data-id="L_JOBS_SMTP_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><g class="nodes"><g class="node default" id="flowchart-A-0" transform="translate(140.21875, 874)"><rect class="basic label-container" style="" x="-107.21875" y="-27" width="214.4375" height="54"/><g class="label" style="" transform="translate(-77.21875, -12)"><rect/><foreignObject width="154.4375" 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>Public site React SPA</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-B-1" transform="translate(140.21875, 978)"><rect class="basic label-container" style="" x="-70.3125" y="-27" width="140.625" height="54"/><g class="label" style="" transform="translate(-40.3125, -12)"><rect/><foreignObject width="80.625" 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>Admin SPA</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-C-2" transform="translate(140.21875, 1082)"><rect class="basic label-container" style="" x="-101.1484375" y="-27" width="202.296875" height="54"/><g class="label" style="" transform="translate(-71.1484375, -12)"><rect/><foreignObject width="142.296875" 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>Scoreboard Overlay</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-FE-3" transform="translate(477.4375, 985)"><rect class="basic label-container" style="" x="-130" y="-39" width="260" height="78"/><g class="label" style="" transform="translate(-100, -24)"><rect/><foreignObject width="200" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel"><p>React 18 + Chakra UI; Router + Query</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-BE-4" transform="translate(901.9375, 506)"><rect class="basic label-container" style="" x="-130" y="-39" width="260" height="78"/><g class="label" style="" transform="translate(-100, -24)"><rect/><foreignObject width="200" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel"><p>Go Gin REST API api v1; GORM services</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-JOBS-5" transform="translate(477.4375, 578)"><rect class="basic label-container" style="" x="-130" y="-51" width="260" height="102"/><g class="label" style="" transform="translate(-100, -36)"><rect/><foreignObject width="200" height="72"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel"><p>Background jobs; Prefetcher; Newsletter automation</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-DB-6" transform="translate(1291.328125, 734)"><rect class="basic label-container" style="" x="-73.578125" y="-27" width="147.15625" height="54"/><g class="label" style="" transform="translate(-43.578125, -12)"><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="flowchart-UP-7" transform="translate(1291.328125, 928)"><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>uploads static dist</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-FACR-8" transform="translate(1291.328125, 70)"><rect class="basic label-container" style="" x="-66.015625" y="-27" width="132.03125" height="54"/><g class="label" style="" transform="translate(-36.015625, -12)"><rect/><foreignObject width="72.03125" 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>FACR API</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-YT-9" transform="translate(1291.328125, 174)"><rect class="basic label-container" style="" x="-76.1171875" y="-27" width="152.234375" height="54"/><g class="label" style="" transform="translate(-46.1171875, -12)"><rect/><foreignObject width="92.234375" 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>YouTube API</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-ZON-10" transform="translate(1291.328125, 278)"><rect class="basic label-container" style="" x="-66.4609375" y="-27" width="132.921875" height="54"/><g class="label" style="" transform="translate(-36.4609375, -12)"><rect/><foreignObject width="72.921875" 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>Zonerama</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-SMTP-11" transform="translate(1291.328125, 382)"><rect class="basic label-container" style="" x="-73.421875" y="-27" width="146.84375" height="54"/><g class="label" style="" transform="translate(-43.421875, -12)"><rect/><foreignObject width="86.84375" 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>SMTP email</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-MAPS-12" transform="translate(1291.328125, 486)"><rect class="basic label-container" style="" x="-77.5859375" y="-27" width="155.171875" height="54"/><g class="label" style="" transform="translate(-47.5859375, -12)"><rect/><foreignObject width="95.171875" 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>Google Maps</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-UMAMI-13" transform="translate(1291.328125, 590)"><rect class="basic label-container" style="" x="-89.125" y="-27" width="178.25" height="54"/><g class="label" style="" transform="translate(-59.125, -12)"><rect/><foreignObject width="118.25" 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>Umami Analytics</p></span></div></foreignObject></g></g></g></g></g></svg>