1 line
17 KiB
XML
1 line
17 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" data-diagram-type="CLASS" height="815px" preserveAspectRatio="none" style="width:591px;height:815px;background:#EEEBDC;" version="1.1" viewBox="0 0 591 815" width="591px" zoomAndPan="magnify"><defs><filter height="300%" id="fogj3pnctuhp2" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4" dy="4" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#EEEBDC" height="815" style="stroke:none;stroke-width:1;" width="591" x="0" y="0"/><!--entity backend--><g class="entity" data-entity="backend" data-source-line="5" data-uid="ent0002" id="entity_backend"><polygon fill="#FEFECE" filter="url(#fogj3pnctuhp2)" points="300.79,306.48,310.79,296.48,530.1533,296.48,530.1533,633.295,520.1533,643.295,300.79,643.295,300.79,306.48" style="stroke:#A80036;stroke-width:1;"/><line style="stroke:#A80036;stroke-width:1;" x1="520.1533" x2="530.1533" y1="306.48" y2="296.48"/><line style="stroke:#A80036;stroke-width:1;" x1="300.79" x2="520.1533" y1="306.48" y2="306.48"/><line style="stroke:#A80036;stroke-width:1;" x1="520.1533" x2="520.1533" y1="306.48" y2="643.295"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="189.3633" x="315.79" y="331.4459">Backend Server Instance(s)</text><line style="stroke:#A80036;stroke-width:1;" x1="300.79" x2="520.1533" y1="335.5479" y2="335.5479"/><line style="stroke:#A80036;stroke-width:1;" x1="520.1533" x2="530.1533" y1="335.5479" y2="325.5479"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="42.4059" x="315.79" y="354.5139">App.rs</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="300.79" x2="520.1533" y1="362.6158" y2="362.6158"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="520.1533" x2="530.1533" y1="362.6158" y2="352.6158"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="60.8018" x="315.79" y="381.5818">Router.rs</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="300.79" x2="520.1533" y1="389.6838" y2="389.6838"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="520.1533" x2="530.1533" y1="389.6838" y2="379.6838"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="57.7358" x="315.79" y="408.6497">Hooks.rs</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="300.79" x2="520.1533" y1="416.7517" y2="416.7517"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="520.1533" x2="530.1533" y1="416.7517" y2="406.7517"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="89.1237" x="315.79" y="435.7176">Controllers.rs</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="300.79" x2="520.1533" y1="443.8196" y2="443.8196"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="520.1533" x2="530.1533" y1="443.8196" y2="433.8196"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="84.8397" x="315.79" y="462.7855">DataViews.rs</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="300.79" x2="520.1533" y1="470.8875" y2="470.8875"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="520.1533" x2="530.1533" y1="470.8875" y2="460.8875"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="95.2137" x="315.79" y="489.8534">DataModels.rs</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="300.79" x2="520.1533" y1="497.9554" y2="497.9554"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="520.1533" x2="530.1533" y1="497.9554" y2="487.9554"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="64.3998" x="315.79" y="516.9214">Mailers.rs</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="300.79" x2="520.1533" y1="525.0233" y2="525.0233"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="520.1533" x2="530.1533" y1="525.0233" y2="515.0233"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="100.8416" x="315.79" y="543.9893">APIProviders.rs</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="300.79" x2="520.1533" y1="552.0913" y2="552.0913"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="520.1533" x2="530.1533" y1="552.0913" y2="542.0913"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="100.8416" x="315.79" y="571.0572">APIProviders.rs</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="300.79" x2="520.1533" y1="579.1592" y2="579.1592"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="520.1533" x2="530.1533" y1="579.1592" y2="569.1592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="126.6575" x="315.79" y="598.1251">DatabaseEntities.rs</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="300.79" x2="520.1533" y1="606.2271" y2="606.2271"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="520.1533" x2="530.1533" y1="606.2271" y2="596.2271"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="149.3375" x="315.79" y="625.193">DatabaseMigrations.rs</text></g><!--entity db_server--><g class="entity" data-entity="db_server" data-source-line="31" data-uid="ent0003" id="entity_db_server"><polygon fill="#FEFECE" filter="url(#fogj3pnctuhp2)" points="297.88,732.29,307.88,722.29,533.0533,722.29,533.0533,788.4258,523.0533,798.4258,297.88,798.4258,297.88,732.29" style="stroke:#A80036;stroke-width:1;"/><line style="stroke:#A80036;stroke-width:1;" x1="523.0533" x2="533.0533" y1="732.29" y2="722.29"/><line style="stroke:#A80036;stroke-width:1;" x1="297.88" x2="523.0533" y1="732.29" y2="732.29"/><line style="stroke:#A80036;stroke-width:1;" x1="523.0533" x2="523.0533" y1="732.29" y2="798.4258"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="195.1733" x="312.88" y="757.2559">Database Server Instance(s)</text><line style="stroke:#A80036;stroke-width:1;" x1="297.88" x2="523.0533" y1="761.3579" y2="761.3579"/><line style="stroke:#A80036;stroke-width:1;" x1="523.0533" x2="533.0533" y1="761.3579" y2="751.3579"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="187.1093" x="312.88" y="780.3239">Actual PostgreSQL Database</text></g><!--entity frontend_host--><g class="entity" data-entity="frontend_host" data-source-line="37" data-uid="ent0004" id="entity_frontend_host"><polygon fill="#FEFECE" filter="url(#fogj3pnctuhp2)" points="16,360.62,26,350.62,214.9414,350.62,214.9414,579.1633,204.9414,589.1633,16,589.1633,16,360.62" style="stroke:#A80036;stroke-width:1;"/><line style="stroke:#A80036;stroke-width:1;" x1="204.9414" x2="214.9414" y1="360.62" y2="350.62"/><line style="stroke:#A80036;stroke-width:1;" x1="16" x2="204.9414" y1="360.62" y2="360.62"/><line style="stroke:#A80036;stroke-width:1;" x1="204.9414" x2="204.9414" y1="360.62" y2="589.1633"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="158.9414" x="31" y="385.5859">Frontend Hosting/CDN</text><line style="stroke:#A80036;stroke-width:1;" x1="16" x2="204.9414" y1="389.6879" y2="389.6879"/><line style="stroke:#A80036;stroke-width:1;" x1="204.9414" x2="214.9414" y1="389.6879" y2="379.6879"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="56.1258" x="31" y="408.6539">main.tsx</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="16" x2="204.9414" y1="416.7558" y2="416.7558"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="204.9414" x2="214.9414" y1="416.7558" y2="406.7558"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="42.5598" x="31" y="435.7218">routes</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="16" x2="204.9414" y1="443.8238" y2="443.8238"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="204.9414" x2="214.9414" y1="443.8238" y2="433.8238"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="82.3197" x="31" y="462.7897">components</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="16" x2="204.9414" y1="470.8917" y2="470.8917"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="204.9414" x2="214.9414" y1="470.8917" y2="460.8917"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="39.7738" x="31" y="489.8576">hooks</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="16" x2="204.9414" y1="497.9596" y2="497.9596"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="204.9414" x2="214.9414" y1="497.9596" y2="487.9596"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="33.9079" x="31" y="516.9255">store</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="16" x2="204.9414" y1="525.0275" y2="525.0275"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="204.9414" x2="214.9414" y1="525.0275" y2="515.0275"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="20.0759" x="31" y="543.9934">api</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="16" x2="204.9414" y1="552.0954" y2="552.0954"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="204.9414" x2="214.9414" y1="552.0954" y2="542.0954"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="35.4059" x="31" y="571.0614">types</text></g><!--entity workstation--><g class="entity" data-entity="workstation" data-source-line="55" data-uid="ent0005" id="entity_workstation"><polygon fill="#FEFECE" filter="url(#fogj3pnctuhp2)" points="106.12,97.21,116.12,87.21,268.8155,87.21,268.8155,126.2779,258.8155,136.2779,106.12,136.2779,106.12,97.21" style="stroke:#A80036;stroke-width:1;"/><line style="stroke:#A80036;stroke-width:1;" x1="258.8155" x2="268.8155" y1="97.21" y2="87.21"/><line style="stroke:#A80036;stroke-width:1;" x1="106.12" x2="258.8155" y1="97.21" y2="97.21"/><line style="stroke:#A80036;stroke-width:1;" x1="258.8155" x2="258.8155" y1="97.21" y2="136.2779"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="122.6955" x="121.12" y="122.1759">User Workstation</text></g><!--entity mobile_devices--><g class="entity" data-entity="mobile_devices" data-source-line="59" data-uid="ent0006" id="entity_mobile_devices"><polygon fill="#FEFECE" filter="url(#fogj3pnctuhp2)" points="376.26,16,386.26,6,556.6795,6,556.6795,207.4754,546.6795,217.4754,376.26,217.4754,376.26,16" style="stroke:#A80036;stroke-width:1;"/><line style="stroke:#A80036;stroke-width:1;" x1="546.6795" x2="556.6795" y1="16" y2="6"/><line style="stroke:#A80036;stroke-width:1;" x1="376.26" x2="546.6795" y1="16" y2="16"/><line style="stroke:#A80036;stroke-width:1;" x1="546.6795" x2="546.6795" y1="16" y2="217.4754"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="140.4195" x="391.26" y="40.9659">User Mobile Devices</text><line style="stroke:#A80036;stroke-width:1;" x1="376.26" x2="546.6795" y1="45.0679" y2="45.0679"/><line style="stroke:#A80036;stroke-width:1;" x1="546.6795" x2="556.6795" y1="45.0679" y2="35.0679"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="96.3476" x="391.26" y="64.0339">MainActivity.kt</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="376.26" x2="546.6795" y1="72.1358" y2="72.1358"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="546.6795" x2="556.6795" y1="72.1358" y2="62.1358"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="87.1917" x="391.26" y="91.1018">Fragments.kt</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="376.26" x2="546.6795" y1="99.2038" y2="99.2038"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="546.6795" x2="556.6795" y1="99.2038" y2="89.2038"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="95.1856" x="391.26" y="118.1697">ViewModels.kt</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="376.26" x2="546.6795" y1="126.2717" y2="126.2717"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="546.6795" x2="556.6795" y1="126.2717" y2="116.2717"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="75.7397" x="391.26" y="145.2376">Adapters.kt</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="376.26" x2="546.6795" y1="153.3396" y2="153.3396"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="546.6795" x2="556.6795" y1="153.3396" y2="143.3396"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="76.1177" x="391.26" y="172.3055">APIClient.kt</text><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="376.26" x2="546.6795" y1="180.4075" y2="180.4075"/><line style="stroke:#A80036;stroke-width:1;stroke-dasharray:1.0,2.0;" x1="546.6795" x2="556.6795" y1="180.4075" y2="170.4075"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="95.2556" x="391.26" y="199.3734">DataModels.kt</text></g><!--link backend to db_server--><g class="link" data-entity-1="backend" data-entity-2="db_server" data-source-line="74" data-uid="lnk7" id="link_backend_db_server"><path codeLine="74" d="M415.47,643.69 C415.47,673.21 415.47,701.06 415.47,722.04" fill="none" id="backend-db_server" style="stroke:#A80036;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="154.4402" x="416.47" y="688.187">TCP/IP - ORM Connection</text></g><!--reverse link workstation to frontend_host--><g class="link" data-entity-1="workstation" data-entity-2="frontend_host" data-source-line="76" data-uid="lnk9" id="link_workstation_frontend_host"><path codeLine="76" d="M165.8111,141.3142 C147.3411,167.0442 123.43,205.24 112.47,247.48 C103.97,280.22 101.67,316.62 102.31,350.28" fill="none" id="workstation-backto-frontend_host" style="stroke:#A80036;stroke-width:1;"/><polygon fill="#A80036" points="169.31,136.44,160.8122,141.4187,166.3943,140.5018,167.3111,146.0839,169.31,136.44" style="stroke:#A80036;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="132.4311" x="113.47" y="262.377">HTTPS - Serves Assets</text></g><!--link workstation to backend--><g class="link" data-entity-1="workstation" data-entity-2="backend" data-source-line="77" data-uid="lnk10" id="link_workstation_backend"><path codeLine="77" d="M202.78,136.66 C224.15,170.04 261.5747,228.497 301.6747,291.127" fill="none" id="workstation-to-backend" style="stroke:#A80036;stroke-width:1;"/><polygon fill="#A80036" points="304.91,296.18,303.4257,286.4436,302.2139,291.9692,296.6884,290.7573,304.91,296.18" style="stroke:#A80036;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="135.4991" x="282.05" y="262.377">HTTPS - REST API Calls</text></g><!--link mobile_devices to backend--><g class="link" data-entity-1="mobile_devices" data-entity-2="backend" data-source-line="78" data-uid="lnk11" id="link_mobile_devices_backend"><path codeLine="78" d="M451.44,217.67 C447.9,242.4 444.8922,263.4608 441.0422,290.2908" fill="none" id="mobile_devices-to-backend" style="stroke:#A80036;stroke-width:1;"/><polygon fill="#A80036" points="440.19,296.23,445.4278,287.8894,440.9002,291.2807,437.5089,286.7531,440.19,296.23" style="stroke:#A80036;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="135.4991" x="448.04" y="262.377">HTTPS - REST API Calls</text></g><!--SRC=[bLF1Rjim3BtxAmJiiXsSt8iYGEguQ81vyv9iEnH38DkSAzYM3599rxyVfIPnR7L0fuk5zqYHV7ocHcc1XY0YllKIPISAMJOrceEk4jCQ51_IDBrR9L6aJGMU1Ls9nqZmkIqMToTW2tW456jDLkeIFjAdstcny55n7FllikzdIFuwu-Cl6tEmW07yO4n30PeORT6qBM38hQILFnGylyrat7iRKfbKRpwspDSvcgEg_fjqnGf9a6ghh89_1sIgHccLqJxarqdUgjZJgv0NWSy9xrAuj0VPYjoGhH6stpvVobqg_4OMaHUsV-AWeShz2MRboIfTpvFLb-3vJYezi_HdF16w5KwcB4tN6mtQJl0djzSnHDOWZ27Pgp5WNteOH7essB06JhnXWE-ic_WvCBxvSqPd2bxqleAZAe4cIPadnUgL38PcZsZMLHsLVParTjpOFSgwSsC6ZFFYoNLJQbd9tZhp14I-Jbh5pmNCbOUPuh7E_s4SNtdcHkoIVBxEHIo-RZBtksWedHXHD5vxV8WN8nblnCDkbsyvqRkCn988U7dNCJ7ddCiEyPjqktEDYqIsBKKJfT-LynS0]--></g></svg> |