Spaces:
Running
Running
File size: 25,396 Bytes
da43f5e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 |
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.43.0 (0)
-->
<!-- Title: SynopticChart Pages: 1 -->
<svg width="1176pt" height="1036pt"
viewBox="0.00 0.00 1176.00 1036.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(36 1000)">
<title>SynopticChart</title>
<polygon fill="white" stroke="transparent" points="-36,36 -36,-1000 1140,-1000 1140,36 -36,36"/>
<!-- central -->
<g id="node1" class="node">
<title>central</title>
<path fill="#bebebe" stroke="black" d="M317,-454C317,-454 12,-454 12,-454 6,-454 0,-448 0,-442 0,-442 0,-430 0,-430 0,-424 6,-418 12,-418 12,-418 317,-418 317,-418 323,-418 329,-424 329,-430 329,-430 329,-442 329,-442 329,-448 323,-454 317,-454"/>
<text text-anchor="middle" x="164.5" y="-432.2" font-family="Times,serif" font-size="16.00">Modern Web Development Ecosystem</text>
</g>
<!-- frontend -->
<g id="node2" class="node">
<title>frontend</title>
<path fill="#c1c1c1" stroke="black" d="M601.5,-732C601.5,-732 458.5,-732 458.5,-732 452.5,-732 446.5,-726 446.5,-720 446.5,-720 446.5,-708 446.5,-708 446.5,-702 452.5,-696 458.5,-696 458.5,-696 601.5,-696 601.5,-696 607.5,-696 613.5,-702 613.5,-708 613.5,-708 613.5,-720 613.5,-720 613.5,-726 607.5,-732 601.5,-732"/>
<text text-anchor="middle" x="530" y="-710.9" font-family="Times,serif" font-size="12.00">I. Frontend Development</text>
</g>
<!-- central->frontend -->
<g id="edge1" class="edge">
<title>central->frontend</title>
<path fill="none" stroke="#4a4a4a" d="M165,-454.24C165,-516.09 165,-714 165,-714 165,-714 436.26,-714 436.26,-714"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="436.26,-717.5 446.26,-714 436.26,-710.5 436.26,-717.5"/>
<text text-anchor="middle" x="386" y="-543.8" font-family="Times,serif" font-size="9.00" fill="#4a4a4a">Begins with</text>
</g>
<!-- backend -->
<g id="node11" class="node">
<title>backend</title>
<path fill="#c1c1c1" stroke="black" d="M600.5,-454C600.5,-454 459.5,-454 459.5,-454 453.5,-454 447.5,-448 447.5,-442 447.5,-442 447.5,-430 447.5,-430 447.5,-424 453.5,-418 459.5,-418 459.5,-418 600.5,-418 600.5,-418 606.5,-418 612.5,-424 612.5,-430 612.5,-430 612.5,-442 612.5,-442 612.5,-448 606.5,-454 600.5,-454"/>
<text text-anchor="middle" x="530" y="-432.9" font-family="Times,serif" font-size="12.00">II. Backend Architecture</text>
</g>
<!-- central->backend -->
<g id="edge10" class="edge">
<title>central->backend</title>
<path fill="none" stroke="#4a4a4a" d="M329.07,-436C329.07,-436 437.22,-436 437.22,-436"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="437.22,-439.5 447.22,-436 437.22,-432.5 437.22,-439.5"/>
<text text-anchor="middle" x="386" y="-438.8" font-family="Times,serif" font-size="9.00" fill="#4a4a4a">Connects to</text>
</g>
<!-- deployment -->
<g id="node20" class="node">
<title>deployment</title>
<path fill="#c1c1c1" stroke="black" d="M605,-248C605,-248 455,-248 455,-248 449,-248 443,-242 443,-236 443,-236 443,-224 443,-224 443,-218 449,-212 455,-212 455,-212 605,-212 605,-212 611,-212 617,-218 617,-224 617,-224 617,-236 617,-236 617,-242 611,-248 605,-248"/>
<text text-anchor="middle" x="530" y="-226.9" font-family="Times,serif" font-size="12.00">III. Deployment & DevOps</text>
</g>
<!-- central->deployment -->
<g id="edge19" class="edge">
<title>central->deployment</title>
<path fill="none" stroke="#4a4a4a" d="M165,-417.72C165,-367.3 165,-230 165,-230 165,-230 432.57,-230 432.57,-230"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="432.57,-233.5 442.57,-230 432.57,-226.5 432.57,-233.5"/>
<text text-anchor="middle" x="386" y="-275.8" font-family="Times,serif" font-size="9.00" fill="#4a4a4a">Culminates in</text>
</g>
<!-- frontend_frameworks -->
<g id="node3" class="node">
<title>frontend_frameworks</title>
<path fill="#c5c5c5" stroke="black" d="M838,-877C838,-877 726,-877 726,-877 720,-877 714,-871 714,-865 714,-865 714,-853 714,-853 714,-847 720,-841 726,-841 726,-841 838,-841 838,-841 844,-841 850,-847 850,-853 850,-853 850,-865 850,-865 850,-871 844,-877 838,-877"/>
<text text-anchor="middle" x="782" y="-856.5" font-family="Times,serif" font-size="10.00">1. Framework Selection</text>
</g>
<!-- frontend->frontend_frameworks -->
<g id="edge2" class="edge">
<title>frontend->frontend_frameworks</title>
<path fill="none" stroke="#4a4a4a" d="M613.72,-720C664.28,-720 719,-720 719,-720 719,-720 719,-830.83 719,-830.83"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="715.5,-830.83 719,-840.83 722.5,-830.83 715.5,-830.83"/>
<text text-anchor="middle" x="665.5" y="-792.6" font-family="Times,serif" font-size="8.00" fill="#4a4a4a">Involves</text>
</g>
<!-- styling -->
<g id="node7" class="node">
<title>styling</title>
<path fill="#c5c5c5" stroke="black" d="M827.5,-732C827.5,-732 736.5,-732 736.5,-732 730.5,-732 724.5,-726 724.5,-720 724.5,-720 724.5,-708 724.5,-708 724.5,-702 730.5,-696 736.5,-696 736.5,-696 827.5,-696 827.5,-696 833.5,-696 839.5,-702 839.5,-708 839.5,-708 839.5,-720 839.5,-720 839.5,-726 833.5,-732 827.5,-732"/>
<text text-anchor="middle" x="782" y="-711.5" font-family="Times,serif" font-size="10.00">2. Styling Solutions</text>
</g>
<!-- frontend->styling -->
<g id="edge6" class="edge">
<title>frontend->styling</title>
<path fill="none" stroke="#4a4a4a" d="M613.56,-708C613.56,-708 714.13,-708 714.13,-708"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="714.13,-711.5 724.13,-708 714.13,-704.5 714.13,-711.5"/>
<text text-anchor="middle" x="665.5" y="-716.6" font-family="Times,serif" font-size="8.00" fill="#4a4a4a">Requires</text>
</g>
<!-- react -->
<g id="node4" class="node">
<title>react</title>
<path fill="#c9c9c9" stroke="black" d="M1063,-964C1063,-964 987,-964 987,-964 981,-964 975,-958 975,-952 975,-952 975,-940 975,-940 975,-934 981,-928 987,-928 987,-928 1063,-928 1063,-928 1069,-928 1075,-934 1075,-940 1075,-940 1075,-952 1075,-952 1075,-958 1069,-964 1063,-964"/>
<text text-anchor="middle" x="1025" y="-943.8" font-family="Times,serif" font-size="9.00">1.1. React/Next.js</text>
</g>
<!-- frontend_frameworks->react -->
<g id="edge3" class="edge">
<title>frontend_frameworks->react</title>
<path fill="none" stroke="#4a4a4a" d="M782,-877.03C782,-902.51 782,-946 782,-946 782,-946 964.94,-946 964.94,-946"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="964.94,-949.5 974.94,-946 964.94,-942.5 964.94,-949.5"/>
<text text-anchor="middle" x="898" y="-948.4" font-family="Times,serif" font-size="7.00" fill="#4a4a4a">for</text>
</g>
<!-- vue -->
<g id="node5" class="node">
<title>vue</title>
<path fill="#c9c9c9" stroke="black" d="M1064,-906C1064,-906 986,-906 986,-906 980,-906 974,-900 974,-894 974,-894 974,-882 974,-882 974,-876 980,-870 986,-870 986,-870 1064,-870 1064,-870 1070,-870 1076,-876 1076,-882 1076,-882 1076,-894 1076,-894 1076,-900 1070,-906 1064,-906"/>
<text text-anchor="middle" x="1025" y="-885.8" font-family="Times,serif" font-size="9.00">1.2. Vue.js/Nuxt.js</text>
</g>
<!-- frontend_frameworks->vue -->
<g id="edge4" class="edge">
<title>frontend_frameworks->vue</title>
<path fill="none" stroke="#4a4a4a" d="M850.01,-873.5C850.01,-873.5 963.99,-873.5 963.99,-873.5"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="963.99,-877 973.99,-873.5 963.99,-870 963.99,-877"/>
<text text-anchor="middle" x="898" y="-890.4" font-family="Times,serif" font-size="7.00" fill="#4a4a4a">or</text>
</g>
<!-- svelte -->
<g id="node6" class="node">
<title>svelte</title>
<path fill="#c9c9c9" stroke="black" d="M1068.5,-848C1068.5,-848 981.5,-848 981.5,-848 975.5,-848 969.5,-842 969.5,-836 969.5,-836 969.5,-824 969.5,-824 969.5,-818 975.5,-812 981.5,-812 981.5,-812 1068.5,-812 1068.5,-812 1074.5,-812 1080.5,-818 1080.5,-824 1080.5,-824 1080.5,-836 1080.5,-836 1080.5,-842 1074.5,-848 1068.5,-848"/>
<text text-anchor="middle" x="1025" y="-827.8" font-family="Times,serif" font-size="9.00">1.3. Svelte/SvelteKit</text>
</g>
<!-- frontend_frameworks->svelte -->
<g id="edge5" class="edge">
<title>frontend_frameworks->svelte</title>
<path fill="none" stroke="#4a4a4a" d="M850.01,-844.5C850.01,-844.5 959.29,-844.5 959.29,-844.5"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="959.29,-848 969.29,-844.5 959.29,-841 959.29,-848"/>
<text text-anchor="middle" x="898" y="-832.4" font-family="Times,serif" font-size="7.00" fill="#4a4a4a">alternatively</text>
</g>
<!-- tailwind -->
<g id="node8" class="node">
<title>tailwind</title>
<path fill="#c9c9c9" stroke="black" d="M1069.5,-790C1069.5,-790 980.5,-790 980.5,-790 974.5,-790 968.5,-784 968.5,-778 968.5,-778 968.5,-766 968.5,-766 968.5,-760 974.5,-754 980.5,-754 980.5,-754 1069.5,-754 1069.5,-754 1075.5,-754 1081.5,-760 1081.5,-766 1081.5,-766 1081.5,-778 1081.5,-778 1081.5,-784 1075.5,-790 1069.5,-790"/>
<text text-anchor="middle" x="1025" y="-769.8" font-family="Times,serif" font-size="9.00">2.1. Utility-First CSS</text>
</g>
<!-- styling->tailwind -->
<g id="edge7" class="edge">
<title>styling->tailwind</title>
<path fill="none" stroke="#4a4a4a" d="M839.58,-723C898.66,-723 982,-723 982,-723 982,-723 982,-743.75 982,-743.75"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="978.5,-743.75 982,-753.75 985.5,-743.75 978.5,-743.75"/>
<text text-anchor="middle" x="898" y="-774.4" font-family="Times,serif" font-size="7.00" fill="#4a4a4a">using</text>
</g>
<!-- styled -->
<g id="node9" class="node">
<title>styled</title>
<path fill="#c9c9c9" stroke="black" d="M1054,-732C1054,-732 996,-732 996,-732 990,-732 984,-726 984,-720 984,-720 984,-708 984,-708 984,-702 990,-696 996,-696 996,-696 1054,-696 1054,-696 1060,-696 1066,-702 1066,-708 1066,-708 1066,-720 1066,-720 1066,-726 1060,-732 1054,-732"/>
<text text-anchor="middle" x="1025" y="-711.8" font-family="Times,serif" font-size="9.00">2.2. CSS-in-JS</text>
</g>
<!-- styling->styled -->
<g id="edge8" class="edge">
<title>styling->styled</title>
<path fill="none" stroke="#4a4a4a" d="M839.59,-714C839.59,-714 973.79,-714 973.79,-714"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="973.79,-717.5 983.79,-714 973.79,-710.5 973.79,-717.5"/>
<text text-anchor="middle" x="898" y="-716.4" font-family="Times,serif" font-size="7.00" fill="#4a4a4a">or</text>
</g>
<!-- modules -->
<g id="node10" class="node">
<title>modules</title>
<path fill="#c9c9c9" stroke="black" d="M1062,-674C1062,-674 988,-674 988,-674 982,-674 976,-668 976,-662 976,-662 976,-650 976,-650 976,-644 982,-638 988,-638 988,-638 1062,-638 1062,-638 1068,-638 1074,-644 1074,-650 1074,-650 1074,-662 1074,-662 1074,-668 1068,-674 1062,-674"/>
<text text-anchor="middle" x="1025" y="-653.8" font-family="Times,serif" font-size="9.00">2.3. CSS Modules</text>
</g>
<!-- styling->modules -->
<g id="edge9" class="edge">
<title>styling->modules</title>
<path fill="none" stroke="#4a4a4a" d="M839.51,-705C897.66,-705 979,-705 979,-705 979,-705 979,-684.25 979,-684.25"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="982.5,-684.25 979,-674.25 975.5,-684.25 982.5,-684.25"/>
<text text-anchor="middle" x="898" y="-658.4" font-family="Times,serif" font-size="7.00" fill="#4a4a4a">with</text>
</g>
<!-- api_design -->
<g id="node12" class="node">
<title>api_design</title>
<path fill="#c5c5c5" stroke="black" d="M826.5,-549C826.5,-549 737.5,-549 737.5,-549 731.5,-549 725.5,-543 725.5,-537 725.5,-537 725.5,-525 725.5,-525 725.5,-519 731.5,-513 737.5,-513 737.5,-513 826.5,-513 826.5,-513 832.5,-513 838.5,-519 838.5,-525 838.5,-525 838.5,-537 838.5,-537 838.5,-543 832.5,-549 826.5,-549"/>
<text text-anchor="middle" x="782" y="-528.5" font-family="Times,serif" font-size="10.00">1. API Architecture</text>
</g>
<!-- backend->api_design -->
<g id="edge11" class="edge">
<title>backend->api_design</title>
<path fill="none" stroke="#4a4a4a" d="M612.57,-448C668.77,-448 733,-448 733,-448 733,-448 733,-502.99 733,-502.99"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="729.5,-502.99 733,-512.99 736.5,-502.99 729.5,-502.99"/>
<text text-anchor="middle" x="665.5" y="-470.6" font-family="Times,serif" font-size="8.00" fill="#4a4a4a">Implements</text>
</g>
<!-- database -->
<g id="node16" class="node">
<title>database</title>
<path fill="#c5c5c5" stroke="black" d="M812.5,-403C812.5,-403 751.5,-403 751.5,-403 745.5,-403 739.5,-397 739.5,-391 739.5,-391 739.5,-379 739.5,-379 739.5,-373 745.5,-367 751.5,-367 751.5,-367 812.5,-367 812.5,-367 818.5,-367 824.5,-373 824.5,-379 824.5,-379 824.5,-391 824.5,-391 824.5,-397 818.5,-403 812.5,-403"/>
<text text-anchor="middle" x="782" y="-382.5" font-family="Times,serif" font-size="10.00">2. Data Layer</text>
</g>
<!-- backend->database -->
<g id="edge15" class="edge">
<title>backend->database</title>
<path fill="none" stroke="#4a4a4a" d="M612.57,-430C681.31,-430 768,-430 768,-430 768,-430 768,-413.04 768,-413.04"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="771.5,-413.04 768,-403.04 764.5,-413.04 771.5,-413.04"/>
<text text-anchor="middle" x="665.5" y="-397.6" font-family="Times,serif" font-size="8.00" fill="#4a4a4a">Manages</text>
</g>
<!-- rest -->
<g id="node13" class="node">
<title>rest</title>
<path fill="#c9c9c9" stroke="black" d="M1062.5,-616C1062.5,-616 987.5,-616 987.5,-616 981.5,-616 975.5,-610 975.5,-604 975.5,-604 975.5,-592 975.5,-592 975.5,-586 981.5,-580 987.5,-580 987.5,-580 1062.5,-580 1062.5,-580 1068.5,-580 1074.5,-586 1074.5,-592 1074.5,-592 1074.5,-604 1074.5,-604 1074.5,-610 1068.5,-616 1062.5,-616"/>
<text text-anchor="middle" x="1025" y="-595.8" font-family="Times,serif" font-size="9.00">1.1. RESTful APIs</text>
</g>
<!-- api_design->rest -->
<g id="edge12" class="edge">
<title>api_design->rest</title>
<path fill="none" stroke="#4a4a4a" d="M838.76,-540C897.58,-540 981,-540 981,-540 981,-540 981,-569.97 981,-569.97"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="977.5,-569.97 981,-579.97 984.5,-569.97 977.5,-569.97"/>
<text text-anchor="middle" x="898" y="-600.4" font-family="Times,serif" font-size="7.00" fill="#4a4a4a">through</text>
</g>
<!-- graphql -->
<g id="node14" class="node">
<title>graphql</title>
<path fill="#c9c9c9" stroke="black" d="M1053,-558C1053,-558 997,-558 997,-558 991,-558 985,-552 985,-546 985,-546 985,-534 985,-534 985,-528 991,-522 997,-522 997,-522 1053,-522 1053,-522 1059,-522 1065,-528 1065,-534 1065,-534 1065,-546 1065,-546 1065,-552 1059,-558 1053,-558"/>
<text text-anchor="middle" x="1025" y="-537.8" font-family="Times,serif" font-size="9.00">1.2. GraphQL</text>
</g>
<!-- api_design->graphql -->
<g id="edge13" class="edge">
<title>api_design->graphql</title>
<path fill="none" stroke="#4a4a4a" d="M838.67,-531C838.67,-531 974.98,-531 974.98,-531"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="974.98,-534.5 984.98,-531 974.98,-527.5 974.98,-534.5"/>
<text text-anchor="middle" x="898" y="-542.4" font-family="Times,serif" font-size="7.00" fill="#4a4a4a">or</text>
</g>
<!-- trpc -->
<g id="node15" class="node">
<title>trpc</title>
<path fill="#c9c9c9" stroke="black" d="M1043.5,-500C1043.5,-500 1006.5,-500 1006.5,-500 1000.5,-500 994.5,-494 994.5,-488 994.5,-488 994.5,-476 994.5,-476 994.5,-470 1000.5,-464 1006.5,-464 1006.5,-464 1043.5,-464 1043.5,-464 1049.5,-464 1055.5,-470 1055.5,-476 1055.5,-476 1055.5,-488 1055.5,-488 1055.5,-494 1049.5,-500 1043.5,-500"/>
<text text-anchor="middle" x="1025" y="-479.8" font-family="Times,serif" font-size="9.00">1.3. tRPC</text>
</g>
<!-- api_design->trpc -->
<g id="edge14" class="edge">
<title>api_design->trpc</title>
<path fill="none" stroke="#4a4a4a" d="M832,-512.75C832,-498.82 832,-482 832,-482 832,-482 984.42,-482 984.42,-482"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="984.42,-485.5 994.42,-482 984.42,-478.5 984.42,-485.5"/>
<text text-anchor="middle" x="898" y="-484.4" font-family="Times,serif" font-size="7.00" fill="#4a4a4a">using</text>
</g>
<!-- sql -->
<g id="node17" class="node">
<title>sql</title>
<path fill="#c9c9c9" stroke="black" d="M1066.5,-442C1066.5,-442 983.5,-442 983.5,-442 977.5,-442 971.5,-436 971.5,-430 971.5,-430 971.5,-418 971.5,-418 971.5,-412 977.5,-406 983.5,-406 983.5,-406 1066.5,-406 1066.5,-406 1072.5,-406 1078.5,-412 1078.5,-418 1078.5,-418 1078.5,-430 1078.5,-430 1078.5,-436 1072.5,-442 1066.5,-442"/>
<text text-anchor="middle" x="1025" y="-421.8" font-family="Times,serif" font-size="9.00">2.1. SQL Databases</text>
</g>
<!-- database->sql -->
<g id="edge16" class="edge">
<title>database->sql</title>
<path fill="none" stroke="#4a4a4a" d="M797,-403.16C797,-408.04 797,-412 797,-412 797,-412 961.26,-412 961.26,-412"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="961.26,-415.5 971.26,-412 961.26,-408.5 961.26,-415.5"/>
<text text-anchor="middle" x="898" y="-426.4" font-family="Times,serif" font-size="7.00" fill="#4a4a4a">with</text>
</g>
<!-- nosql -->
<g id="node18" class="node">
<title>nosql</title>
<path fill="#c9c9c9" stroke="black" d="M1071,-384C1071,-384 979,-384 979,-384 973,-384 967,-378 967,-372 967,-372 967,-360 967,-360 967,-354 973,-348 979,-348 979,-348 1071,-348 1071,-348 1077,-348 1083,-354 1083,-360 1083,-360 1083,-372 1083,-372 1083,-378 1077,-384 1071,-384"/>
<text text-anchor="middle" x="1025" y="-363.8" font-family="Times,serif" font-size="9.00">2.2. NoSQL Solutions</text>
</g>
<!-- database->nosql -->
<g id="edge17" class="edge">
<title>database->nosql</title>
<path fill="none" stroke="#4a4a4a" d="M824.61,-378.33C824.61,-378.33 956.91,-378.33 956.91,-378.33"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="956.91,-381.83 966.91,-378.33 956.91,-374.83 956.91,-381.83"/>
<text text-anchor="middle" x="898" y="-368.4" font-family="Times,serif" font-size="7.00" fill="#4a4a4a">or</text>
</g>
<!-- orm -->
<g id="node19" class="node">
<title>orm</title>
<path fill="#c9c9c9" stroke="black" d="M1080,-326C1080,-326 970,-326 970,-326 964,-326 958,-320 958,-314 958,-314 958,-302 958,-302 958,-296 964,-290 970,-290 970,-290 1080,-290 1080,-290 1086,-290 1092,-296 1092,-302 1092,-302 1092,-314 1092,-314 1092,-320 1086,-326 1080,-326"/>
<text text-anchor="middle" x="1025" y="-305.8" font-family="Times,serif" font-size="9.00">2.3. ORM/Query Builders</text>
</g>
<!-- database->orm -->
<g id="edge18" class="edge">
<title>database->orm</title>
<path fill="none" stroke="#4a4a4a" d="M824.89,-372.67C878.42,-372.67 963,-372.67 963,-372.67 963,-372.67 963,-336.01 963,-336.01"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="966.5,-336.01 963,-326.01 959.5,-336.01 966.5,-336.01"/>
<text text-anchor="middle" x="898" y="-310.4" font-family="Times,serif" font-size="7.00" fill="#4a4a4a">via</text>
</g>
<!-- containerization -->
<g id="node21" class="node">
<title>containerization</title>
<path fill="#c5c5c5" stroke="black" d="M826.5,-248C826.5,-248 737.5,-248 737.5,-248 731.5,-248 725.5,-242 725.5,-236 725.5,-236 725.5,-224 725.5,-224 725.5,-218 731.5,-212 737.5,-212 737.5,-212 826.5,-212 826.5,-212 832.5,-212 838.5,-218 838.5,-224 838.5,-224 838.5,-236 838.5,-236 838.5,-242 832.5,-248 826.5,-248"/>
<text text-anchor="middle" x="782" y="-227.5" font-family="Times,serif" font-size="10.00">1. Containerization</text>
</g>
<!-- deployment->containerization -->
<g id="edge20" class="edge">
<title>deployment->containerization</title>
<path fill="none" stroke="#4a4a4a" d="M617.08,-236C617.08,-236 715.34,-236 715.34,-236"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="715.34,-239.5 725.34,-236 715.34,-232.5 715.34,-239.5"/>
<text text-anchor="middle" x="665.5" y="-232.6" font-family="Times,serif" font-size="8.00" fill="#4a4a4a">Uses</text>
</g>
<!-- cloud_platforms -->
<g id="node24" class="node">
<title>cloud_platforms</title>
<path fill="#c5c5c5" stroke="black" d="M836.5,-123C836.5,-123 727.5,-123 727.5,-123 721.5,-123 715.5,-117 715.5,-111 715.5,-111 715.5,-99 715.5,-99 715.5,-93 721.5,-87 727.5,-87 727.5,-87 836.5,-87 836.5,-87 842.5,-87 848.5,-93 848.5,-99 848.5,-99 848.5,-111 848.5,-111 848.5,-117 842.5,-123 836.5,-123"/>
<text text-anchor="middle" x="782" y="-102.5" font-family="Times,serif" font-size="10.00">2. Cloud Infrastructure</text>
</g>
<!-- deployment->cloud_platforms -->
<g id="edge23" class="edge">
<title>deployment->cloud_platforms</title>
<path fill="none" stroke="#4a4a4a" d="M617.01,-224C667.81,-224 722,-224 722,-224 722,-224 722,-133.07 722,-133.07"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="725.5,-133.07 722,-123.07 718.5,-133.07 725.5,-133.07"/>
<text text-anchor="middle" x="665.5" y="-156.6" font-family="Times,serif" font-size="8.00" fill="#4a4a4a">Deploys on</text>
</g>
<!-- docker -->
<g id="node22" class="node">
<title>docker</title>
<path fill="#c9c9c9" stroke="black" d="M1075,-268C1075,-268 975,-268 975,-268 969,-268 963,-262 963,-256 963,-256 963,-244 963,-244 963,-238 969,-232 975,-232 975,-232 1075,-232 1075,-232 1081,-232 1087,-238 1087,-244 1087,-244 1087,-256 1087,-256 1087,-262 1081,-268 1075,-268"/>
<text text-anchor="middle" x="1025" y="-247.8" font-family="Times,serif" font-size="9.00">1.1. Docker Containers</text>
</g>
<!-- containerization->docker -->
<g id="edge21" class="edge">
<title>containerization->docker</title>
<path fill="none" stroke="#4a4a4a" d="M838.67,-240C838.67,-240 952.69,-240 952.69,-240"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="952.69,-243.5 962.69,-240 952.69,-236.5 952.69,-243.5"/>
<text text-anchor="middle" x="898" y="-252.4" font-family="Times,serif" font-size="7.00" fill="#4a4a4a">for</text>
</g>
<!-- kubernetes -->
<g id="node23" class="node">
<title>kubernetes</title>
<path fill="#c9c9c9" stroke="black" d="M1092,-210C1092,-210 958,-210 958,-210 952,-210 946,-204 946,-198 946,-198 946,-186 946,-186 946,-180 952,-174 958,-174 958,-174 1092,-174 1092,-174 1098,-174 1104,-180 1104,-186 1104,-186 1104,-198 1104,-198 1104,-204 1098,-210 1092,-210"/>
<text text-anchor="middle" x="1025" y="-189.8" font-family="Times,serif" font-size="9.00">1.2. Kubernetes Orchestration</text>
</g>
<!-- containerization->kubernetes -->
<g id="edge22" class="edge">
<title>containerization->kubernetes</title>
<path fill="none" stroke="#4a4a4a" d="M838.61,-222C888.06,-222 952,-222 952,-222 952,-222 952,-220.14 952,-220.14"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="955.5,-220.14 952,-210.14 948.5,-220.14 955.5,-220.14"/>
<text text-anchor="middle" x="898" y="-194.4" font-family="Times,serif" font-size="7.00" fill="#4a4a4a">with</text>
</g>
<!-- vercel -->
<g id="node25" class="node">
<title>vercel</title>
<path fill="#c9c9c9" stroke="black" d="M1063.5,-152C1063.5,-152 986.5,-152 986.5,-152 980.5,-152 974.5,-146 974.5,-140 974.5,-140 974.5,-128 974.5,-128 974.5,-122 980.5,-116 986.5,-116 986.5,-116 1063.5,-116 1063.5,-116 1069.5,-116 1075.5,-122 1075.5,-128 1075.5,-128 1075.5,-140 1075.5,-140 1075.5,-146 1069.5,-152 1063.5,-152"/>
<text text-anchor="middle" x="1025" y="-131.8" font-family="Times,serif" font-size="9.00">2.1. Vercel/Netlify</text>
</g>
<!-- cloud_platforms->vercel -->
<g id="edge24" class="edge">
<title>cloud_platforms->vercel</title>
<path fill="none" stroke="#4a4a4a" d="M848.72,-119.5C848.72,-119.5 964.23,-119.5 964.23,-119.5"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="964.23,-123 974.23,-119.5 964.23,-116 964.23,-123"/>
<text text-anchor="middle" x="898" y="-136.4" font-family="Times,serif" font-size="7.00" fill="#4a4a4a">for</text>
</g>
<!-- aws -->
<g id="node26" class="node">
<title>aws</title>
<path fill="#c9c9c9" stroke="black" d="M1069,-94C1069,-94 981,-94 981,-94 975,-94 969,-88 969,-82 969,-82 969,-70 969,-70 969,-64 975,-58 981,-58 981,-58 1069,-58 1069,-58 1075,-58 1081,-64 1081,-70 1081,-70 1081,-82 1081,-82 1081,-88 1075,-94 1069,-94"/>
<text text-anchor="middle" x="1025" y="-73.8" font-family="Times,serif" font-size="9.00">2.2. AWS/Azure/GCP</text>
</g>
<!-- cloud_platforms->aws -->
<g id="edge25" class="edge">
<title>cloud_platforms->aws</title>
<path fill="none" stroke="#4a4a4a" d="M848.72,-90.5C848.72,-90.5 958.71,-90.5 958.71,-90.5"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="958.71,-94 968.71,-90.5 958.71,-87 958.71,-94"/>
<text text-anchor="middle" x="898" y="-78.4" font-family="Times,serif" font-size="7.00" fill="#4a4a4a">or</text>
</g>
<!-- edge -->
<g id="node27" class="node">
<title>edge</title>
<path fill="#c9c9c9" stroke="black" d="M1071,-36C1071,-36 979,-36 979,-36 973,-36 967,-30 967,-24 967,-24 967,-12 967,-12 967,-6 973,0 979,0 979,0 1071,0 1071,0 1077,0 1083,-6 1083,-12 1083,-12 1083,-24 1083,-24 1083,-30 1077,-36 1071,-36"/>
<text text-anchor="middle" x="1025" y="-15.8" font-family="Times,serif" font-size="9.00">2.3. Edge Computing</text>
</g>
<!-- cloud_platforms->edge -->
<g id="edge26" class="edge">
<title>cloud_platforms->edge</title>
<path fill="none" stroke="#4a4a4a" d="M782,-86.97C782,-61.49 782,-18 782,-18 782,-18 956.8,-18 956.8,-18"/>
<polygon fill="#4a4a4a" stroke="#4a4a4a" points="956.8,-21.5 966.8,-18 956.8,-14.5 956.8,-21.5"/>
<text text-anchor="middle" x="898" y="-20.4" font-family="Times,serif" font-size="7.00" fill="#4a4a4a">utilizing</text>
</g>
</g>
</svg>
|