Skip to content

Instantly share code, notes, and snippets.

@ynwd
Last active November 26, 2020 12:00
Show Gist options
  • Select an option

  • Save ynwd/8a5b14fd8f74b90d5b8df36ade41d0a2 to your computer and use it in GitHub Desktop.

Select an option

Save ynwd/8a5b14fd8f74b90d5b8df36ade41d0a2 to your computer and use it in GitHub Desktop.
Golang Clean Architecture: Folder Structure and File Naming
Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1030px" height="1151px" viewBox="-0.5 -0.5 1030 1151" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2020-11-26T11:59:42.339Z&quot; agent=&quot;5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36&quot; etag=&quot;OfQ7roOByRwqC-5DrRmw&quot; version=&quot;13.10.3&quot; type=&quot;google&quot;&gt;&lt;diagram id=&quot;0OAy2nRWrK0Tvy0Qrf68&quot; name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs/><g><ellipse cx="549" cy="480" rx="480" ry="480" fill="#59b7ff" stroke="#000000" pointer-events="all"/><ellipse cx="546" cy="482" rx="415" ry="415" fill="#336600" stroke="#000000" pointer-events="all"/><ellipse cx="544.01" cy="480" rx="369" ry="369" fill="#94ff6e" stroke="#000000" pointer-events="all"/><ellipse cx="541" cy="485" rx="300" ry="300" fill="#94ff6e" stroke="#000000" stroke-dasharray="3 3" pointer-events="all"/><ellipse cx="541.5" cy="487.5" rx="242.5" ry="242.5" fill="#94ff6e" stroke="#000000" stroke-dasharray="3 3" pointer-events="all"/><ellipse cx="546.5" cy="482.5" rx="187.5" ry="187.5" fill="#94ff6e" stroke="#000000" stroke-dasharray="3 3" pointer-events="all"/><ellipse cx="549" cy="480" rx="130" ry="130" fill="#ff0000" stroke="#000000" pointer-events="all"/><ellipse cx="549" cy="477.5" rx="80" ry="80" fill="#ff0000" stroke="#000000" stroke-dasharray="3 3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 478px; margin-left: 470px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">entity</div></div></div></foreignObject><text x="549" y="481" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">entity</text></switch></g><ellipse cx="546.5" cy="482.5" rx="40" ry="40" fill="#ffff00" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 483px; margin-left: 508px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Entitiy</div></div></div></foreignObject><text x="547" y="486" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Entitiy</text></switch></g><rect x="509" y="365" width="70" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 375px; margin-left: 510px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Use case</div></div></div></foreignObject><text x="544" y="379" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Use case</text></switch></g><rect x="521.5" y="315" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 325px; margin-left: 523px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Handler</div></div></div></foreignObject><text x="542" y="329" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Handler</text></switch></g><rect x="616" y="37" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 47px; margin-left: 617px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">UI</div></div></div></foreignObject><text x="636" y="51" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">UI</text></switch></g><rect x="701" y="62" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 72px; margin-left: 702px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Web</div></div></div></foreignObject><text x="721" y="76" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Web</text></switch></g><rect x="856.01" y="173.8" width="57" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 55px; height: 1px; padding-top: 184px; margin-left: 857px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">External Interface</div></div></div></foreignObject><text x="885" y="187" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">External...</text></switch></g><rect x="524" y="32" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 42px; margin-left: 525px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DB</div></div></div></foreignObject><text x="544" y="46" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DB</text></switch></g><rect x="784" y="102" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 112px; margin-left: 785px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Devices</div></div></div></foreignObject><text x="804" y="116" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Devices</text></switch></g><rect x="528.63" y="143" width="30.75" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 29px; height: 1px; padding-top: 153px; margin-left: 530px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Chi</div></div></div></foreignObject><text x="544" y="157" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Chi</text></switch></g><rect x="506.5" y="82" width="85" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 83px; height: 1px; padding-top: 92px; margin-left: 508px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font color="#ffffff">Gateway</font></div></div></div></foreignObject><text x="549" y="96" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Gateway</text></switch></g><rect x="524" y="415" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 425px; margin-left: 525px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Repository</div></div></div></foreignObject><text x="544" y="429" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Reposi...</text></switch></g><rect x="69" y="960" width="50" height="30" fill="#66b2ff" stroke="#000000" pointer-events="all"/><rect x="69" y="1040" width="50" height="30" fill="#94ff6e" stroke="#000000" pointer-events="all"/><rect x="69" y="1080" width="50" height="30" fill="#ff3333" stroke="#000000" pointer-events="all"/><rect x="69" y="1120" width="50" height="30" fill="#ffff00" stroke="#000000" pointer-events="all"/><rect x="119" y="1125" width="144" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 142px; height: 1px; padding-top: 1135px; margin-left: 120px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Entities: user, city, school</div></div></div></foreignObject><text x="191" y="1139" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Entities: user, city, sc...</text></switch></g><rect x="119" y="1082.5" width="108" height="25" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 106px; height: 1px; padding-top: 1095px; margin-left: 120px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Use Case: CRUD  </div></div></div></foreignObject><text x="173" y="1099" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Use Case: CRUD  </text></switch></g><rect x="119" y="1045" width="150" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 1055px; margin-left: 120px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">App / Delivery: Http, Grpc  </div></div></div></foreignObject><text x="194" y="1059" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">App / Delivery: Http, Grp...</text></switch></g><rect x="119" y="965" width="198" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 196px; height: 1px; padding-top: 975px; margin-left: 120px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">User Interfaces: Webapp, Android   </div></div></div></foreignObject><text x="218" y="979" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">User Interfaces: Webapp, Android...</text></switch></g><rect x="767.3" y="245" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 255px; margin-left: 768px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Grpc</div></div></div></foreignObject><text x="787" y="259" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Grpc</text></switch></g><rect x="476" y="265" width="140" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 275px; margin-left: 477px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Middleware</div></div></div></foreignObject><text x="546" y="279" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Middleware</text></switch></g><rect x="601" y="151.8" width="30.75" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 29px; height: 1px; padding-top: 162px; margin-left: 602px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Echo</div></div></div></foreignObject><text x="616" y="165" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Echo</text></switch></g><rect x="679" y="171.8" width="30.75" height="22" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 29px; height: 1px; padding-top: 183px; margin-left: 680px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Fasthttp</div></div></div></foreignObject><text x="694" y="186" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Fasth...</text></switch></g><rect x="734" y="212" width="30.75" height="10" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 29px; height: 1px; padding-top: 217px; margin-left: 735px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Fiber</div></div></div></foreignObject><text x="749" y="221" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Fiber</text></switch></g><rect x="474" y="207" width="140" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 217px; margin-left: 475px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Route</div></div></div></foreignObject><text x="544" y="221" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Route</text></switch></g><rect x="69" y="1000" width="50" height="30" fill="#336600" stroke="#000000" pointer-events="all"/><rect x="119" y="1005" width="130" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 1015px; margin-left: 120px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Gateway: Kong, Nginx </div></div></div></foreignObject><text x="184" y="1019" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Gateway: Kong, Nginx </text></switch></g><rect x="841" y="365" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 375px; margin-left: 842px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Other Framework</div></div></div></foreignObject><text x="861" y="379" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Other...</text></switch></g><rect x="807.3" y="295" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 305px; margin-left: 808px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">HTTP<br />Standard</div></div></div></foreignObject><text x="827" y="309" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">HTTP...</text></switch></g><path d="M 9 482 L 107.03 482" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="4 4" pointer-events="stroke"/><path d="M 114.53 482 L 104.53 487 L 107.03 482 L 104.53 477 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 143 483 L 269.03 483" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="4 4" pointer-events="stroke"/><path d="M 276.53 483 L 266.53 488 L 269.03 483 L 266.53 478 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 317 482.5 L 445.03 482.04" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="4 4" pointer-events="stroke"/><path d="M 452.53 482.02 L 442.55 487.05 L 445.03 482.04 L 442.51 477.05 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://desk.draw.io/support/solutions/articles/16000042487" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment