From 959149085bd7d0482c64bab2af8df87bd0a09989 Mon Sep 17 00:00:00 2001
From: Tarje Lavik <tarje.lavik@gmail.com>
Date: Thu, 16 Sep 2021 23:10:01 +0200
Subject: [PATCH] Update deployment diagram

---
 docs/diagrams/deployment.svg      | 125 +++++++++++++++++++++---------
 docs/diagrams/src/deployment.puml |  40 +++++++---
 2 files changed, 119 insertions(+), 46 deletions(-)

diff --git a/docs/diagrams/deployment.svg b/docs/diagrams/deployment.svg
index 5a9d5f0..fdd5d1d 100644
--- a/docs/diagrams/deployment.svg
+++ b/docs/diagrams/deployment.svg
@@ -1,20 +1,33 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="809px" preserveAspectRatio="none" style="width:754px;height:809px;background:#FFFFFF;" version="1.1" viewBox="0 0 754 809" width="754px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacing" textLength="268" x="236.5" y="17.4023">Deployment Diagram for Muna</text><!--MD5=[2169e2ba97fc11945987f08918aa5115]
-cluster vercel--><rect fill="#FFFFFF" height="341" style="stroke:#A2A2A2;stroke-width:1.5;" width="502" x="7" y="376.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="50" x="233" y="393.668">Vercel</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="23" x="246.5" y="408.6445">[???]</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="260" y="424.7109"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="84" x="216" y="441.1992">Vercel cloud</text><!--MD5=[8732ada0ac3d982aaf760ffd06e5f6c2]
-cluster bb2--><rect fill="#FFFFFF" height="257" style="stroke:#A2A2A2;stroke-width:1.5;" width="239" x="15" y="452.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="133" x="66" y="469.668">bigbank-web***</text><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="20" x="226" y="469.668">x4</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="39" x="207" y="484.6445">[Node]</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="246" y="500.7109"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="223" x="23" y="517.1992">A web server residing in the web</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="191" x="55" y="533.6875">server farm, accessed via F5</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="85" x="161" y="550.1758">BIG-IP LTMs.</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="58" x="132" y="568.6641">Location</text><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="42" x="199" y="568.6641">Cloud</text><line style="stroke:#000000;stroke-width:1.5;" x1="128" x2="246" y1="555.1289" y2="555.1289"/><line style="stroke:#000000;stroke-width:1.5;" x1="128" x2="246" y1="571.6172" y2="571.6172"/><line style="stroke:#000000;stroke-width:1.5;" x1="128" x2="128" y1="555.1289" y2="571.6172"/><line style="stroke:#000000;stroke-width:1.5;" x1="194" x2="194" y1="555.1289" y2="571.6172"/><line style="stroke:#000000;stroke-width:1.5;" x1="246" x2="246" y1="555.1289" y2="571.6172"/><!--MD5=[695ea72c28552bd61b3a841849883ad7]
-cluster bb3--><rect fill="#FFFFFF" height="257" style="stroke:#A2A2A2;stroke-width:1.5;" width="239" x="262" y="452.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="133" x="313" y="469.668">bigbank-web***</text><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="20" x="473" y="469.668">x5</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="39" x="454" y="484.6445">[Node]</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="493" y="500.7109"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="223" x="270" y="517.1992">A web server residing in the web</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="191" x="302" y="533.6875">server farm, accessed via F5</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="85" x="408" y="550.1758">BIG-IP LTMs.</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="58" x="379" y="568.6641">Location</text><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="42" x="446" y="568.6641">Cloud</text><line style="stroke:#000000;stroke-width:1.5;" x1="375" x2="493" y1="555.1289" y2="555.1289"/><line style="stroke:#000000;stroke-width:1.5;" x1="375" x2="493" y1="571.6172" y2="571.6172"/><line style="stroke:#000000;stroke-width:1.5;" x1="375" x2="375" y1="555.1289" y2="571.6172"/><line style="stroke:#000000;stroke-width:1.5;" x1="441" x2="441" y1="555.1289" y2="571.6172"/><line style="stroke:#000000;stroke-width:1.5;" x1="493" x2="493" y1="555.1289" y2="571.6172"/><!--MD5=[9015f15a3729514c86a438a9dbb528fb]
-cluster sanity--><rect fill="#FFFFFF" height="284" style="stroke:#A2A2A2;stroke-width:1.5;" width="231" x="517" y="28.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="49" x="608" y="45.668">Sanity</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="23" x="621" y="60.6445">[???]</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="634.5" y="76.7109"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="91" x="587" y="93.1992">Google cloud</text><!--MD5=[6a5612aa8bae1ff700d3fc970b978ae0]
-cluster sanitydb01--><rect fill="#FFFFFF" height="200" style="stroke:#A2A2A2;stroke-width:1.5;" width="215" x="525" y="104.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="103" x="533" y="121.668">sanity-db01</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="72" x="533" y="136.6445">[PostgreSQL]</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="537" y="152.7109"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="199" x="533" y="169.1992">The primary database server.</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="58" x="537" y="187.6875">Location</text><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="53" x="604" y="187.6875">London</text><line style="stroke:#000000;stroke-width:1.5;" x1="533" x2="662" y1="174.1523" y2="174.1523"/><line style="stroke:#000000;stroke-width:1.5;" x1="533" x2="662" y1="190.6406" y2="190.6406"/><line style="stroke:#000000;stroke-width:1.5;" x1="533" x2="533" y1="174.1523" y2="190.6406"/><line style="stroke:#000000;stroke-width:1.5;" x1="599" x2="599" y1="174.1523" y2="190.6406"/><line style="stroke:#000000;stroke-width:1.5;" x1="662" x2="662" y1="174.1523" y2="190.6406"/><!--MD5=[ad98df24f76285b14ecbe510560c3fd2]
-cluster editor_device--><rect fill="#FFFFFF" height="251" style="stroke:#A2A2A2;stroke-width:1.5;" width="248" x="7" y="73.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="146" x="58" y="90.668">Editor's computer</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="211" x="25.5" y="105.6445">[Mircosoft Windows, Apple macOS or</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="84" x="89" y="119.7773">mobile device]</text><!--MD5=[40fb275774b3f96bc9164c72eff21553]
-cluster editor_browser--><rect fill="#FFFFFF" height="185" style="stroke:#A2A2A2;stroke-width:1.5;" width="232" x="15" y="131.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="105" x="78.5" y="148.668">Web Browser</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="188" x="37" y="163.6445">[Google Chrome, Mozilla Firefox,</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="179" x="41.5" y="177.7773">Apple Safari or Microsoft Edge]</text><!--MD5=[1d637574dbb1df8721c8d8582a81e026]
-cluster user_device--><rect fill="#FFFFFF" height="251" style="stroke:#A2A2A2;stroke-width:1.5;" width="246" x="263" y="73.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="150" x="311" y="90.668">Visitor's computer</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="211" x="280.5" y="105.6445">[Mircosoft Windows, Apple macOS or</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="84" x="344" y="119.7773">mobile device]</text><!--MD5=[4a847362a43a6a9bd2f185fa8ebb8133]
-cluster user_browser--><rect fill="#FFFFFF" height="185" style="stroke:#A2A2A2;stroke-width:1.5;" width="230" x="271" y="131.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="105" x="333.5" y="148.668">Web Browser</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="188" x="292" y="163.6445">[Google Chrome, Mozilla Firefox,</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="179" x="296.5" y="177.7773">Apple Safari or Microsoft Edge]</text><!--MD5=[aa5e5be5da887ee0ca7e627d6e9a99d0]
-entity editor_web--><rect fill="#438DD5" height="118.9297" style="stroke:#3C7FC0;stroke-width:1.5;" width="216" x="23" y="582.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="193" x="34.5" y="607.668">Single Page Application</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="126" x="68" y="622.6445">[JavaScript and React]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="133" y="638.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="178" x="42" y="655.1992">Provides all of the content</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="181" x="38.5" y="671.6875">editing functionality to the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="196" x="33" y="688.1758">editor via their web browser.</text><!--MD5=[49c1c732d7a4b5ec2e9391f31b5da12f]
-entity user_web--><rect fill="#438DD5" height="118.9297" style="stroke:#3C7FC0;stroke-width:1.5;" width="216" x="277" y="582.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="193" x="288.5" y="607.668">Single Page Application</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="126" x="322" y="622.6445">[JavaScript and React]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="387" y="638.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="178" x="296" y="655.1992">Provides all of the content</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="181" x="292.5" y="671.6875">editing functionality to the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="196" x="287" y="688.1758">editor via their web browser.</text><!--MD5=[7468467f3b6b392f1d176d828c753b77]
-entity db--><path d="M536.5,211.1992 C536.5,201.1992 632,201.1992 632,201.1992 C632,201.1992 727.5,201.1992 727.5,211.1992 L727.5,286.1523 C727.5,296.1523 632,296.1523 632,296.1523 C632,296.1523 536.5,296.1523 536.5,286.1523 L536.5,211.1992 " fill="#438DD5" style="stroke:#3C7FC0;stroke-width:1.5;"/><path d="M536.5,211.1992 C536.5,221.1992 632,221.1992 632,221.1992 C632,221.1992 727.5,221.1992 727.5,211.1992 " fill="none" style="stroke:#3C7FC0;stroke-width:1.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="75" x="594.5" y="240.668">Database</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="171" x="546.5" y="255.6445">[Relational Database Schema]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="634" y="271.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="99" x="584.5" y="288.1992">Stores content</text><!--MD5=[2eaf6ef1808c42e4a457469ceaf5fb2c]
-entity editor_spa--><rect fill="#438DD5" height="118.9297" style="stroke:#3C7FC0;stroke-width:1.5;" width="216" x="23" y="189.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="193" x="34.5" y="214.668">Single Page Application</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="126" x="68" y="229.6445">[JavaScript and React]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="133" y="245.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="178" x="42" y="262.1992">Provides all of the content</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="181" x="38.5" y="278.6875">editing functionality to the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="196" x="33" y="295.1758">editor via their web browser.</text><!--MD5=[ba99e7ff49c654ac984e927aea4bc5c1]
-entity user_spa--><rect fill="#438DD5" height="118.9297" style="stroke:#3C7FC0;stroke-width:1.5;" width="213" x="279.5" y="189.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="193" x="289.5" y="214.668">Single Page Application</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="126" x="323" y="229.6445">[JavaScript and React]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="388" y="245.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="177" x="297.5" y="262.1992">Provides the user with the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="138" x="315" y="278.6875">content to their web</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="60" x="356" y="295.1758">browser.</text><!--MD5=[9e51211386fb296a7aae58c21fcbc2e6]
-reverse link editor_spa to editor_web--><path d="M131,316.8422 C131,391.7181 131,510.7997 131,582.0944 " fill="none" id="editor_spa-backto-editor_web" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="131,308.3874,128,316.3874,134,316.3874,131,308.3874" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="150" x="132" y="350.8008">Delivers to the editors's</text><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="79" x="167.5" y="364.9336">web browser</text><!--MD5=[5a20d0261da731ef5654c1dde95d95c6]
-reverse link user_spa to user_web--><path d="M385.8266,316.8422 C385.6361,391.7181 385.3331,510.7997 385.1517,582.0944 " fill="none" id="user_spa-backto-user_web" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="385.8481,308.3874,382.8277,316.3797,388.8277,316.3951,385.8481,308.3874" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="140" x="386" y="350.8008">Delivers to the users's</text><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="79" x="418.5" y="364.9336">web browser</text><rect fill="#FFFFFF" height="63.4648" rx="5" ry="5" style="stroke:#FFFFFF;stroke-width:1.0;" width="105" x="627" y="730.1992"/><rect height="16.4883" style="stroke:none;stroke-width:1.0;fill:none;" width="93" x="633" y="737.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="51" x="633" y="750.7344">Legend</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="688" y="750.7344"/><rect fill="#438DD5" height="16.4883" style="stroke:none;stroke-width:1.0;" width="93" x="633" y="753.6875"/><text fill="#3C7FC0" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="8" x="637" y="767.2227">â–¯</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="649" y="767.2227"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="65" x="653" y="767.2227">container</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="726" y="767.2227"/><rect fill="#FFFFFF" height="16.4883" style="stroke:none;stroke-width:1.0;" width="93" x="633" y="770.1758"/><text fill="#A2A2A2" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="8" x="637" y="783.7109">â–¯</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="649" y="783.7109"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="35" x="653" y="783.7109">node</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="696" y="783.7109"/><line style="stroke:#00000000;stroke-width:1.0;" x1="633" x2="726" y1="737.1992" y2="737.1992"/><line style="stroke:#00000000;stroke-width:1.0;" x1="633" x2="726" y1="753.6875" y2="753.6875"/><line style="stroke:#00000000;stroke-width:1.0;" x1="633" x2="726" y1="770.1758" y2="770.1758"/><line style="stroke:#00000000;stroke-width:1.0;" x1="633" x2="726" y1="786.6641" y2="786.6641"/><line style="stroke:#00000000;stroke-width:1.0;" x1="633" x2="633" y1="737.1992" y2="786.6641"/><line style="stroke:#00000000;stroke-width:1.0;" x1="726" x2="726" y1="737.1992" y2="786.6641"/><!--MD5=[eb0a0108aa540614b825b57e5cbbe41a]
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="1119px" preserveAspectRatio="none" style="width:1179px;height:1119px;background:#FFFFFF;" version="1.1" viewBox="0 0 1179 1119" width="1179px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacing" textLength="268" x="449" y="17.4023">Deployment Diagram for Muna</text><!--MD5=[2169e2ba97fc11945987f08918aa5115]
+cluster vercel--><rect fill="#FFFFFF" height="326" style="stroke:#A2A2A2;stroke-width:1.5;" width="997" x="7" y="404.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="50" x="480.5" y="421.668">Vercel</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="39" x="486" y="436.6445">[Node]</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="507.5" y="452.7109"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="84" x="463.5" y="469.1992">Vercel cloud</text><!--MD5=[e035967652f84831e910c72a13ae6b69]
+cluster vercel_studio--><rect fill="#FFFFFF" height="242" style="stroke:#A2A2A2;stroke-width:1.5;" width="248" x="748" y="480.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="52" x="879" y="497.668">studio</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="39" x="892" y="512.6445">[Node]</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="58" x="817" y="530.7109">Location</text><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="42" x="884" y="530.7109">Cloud</text><line style="stroke:#000000;stroke-width:1.5;" x1="813" x2="931" y1="517.1758" y2="517.1758"/><line style="stroke:#000000;stroke-width:1.5;" x1="813" x2="931" y1="533.6641" y2="533.6641"/><line style="stroke:#000000;stroke-width:1.5;" x1="813" x2="813" y1="517.1758" y2="533.6641"/><line style="stroke:#000000;stroke-width:1.5;" x1="879" x2="879" y1="517.1758" y2="533.6641"/><line style="stroke:#000000;stroke-width:1.5;" x1="931" x2="931" y1="517.1758" y2="533.6641"/><!--MD5=[fc0870cd2f7aeb82bdd724fb1720b73e]
+cluster vercel_studio_server--><rect fill="#FFFFFF" height="170" style="stroke:#A2A2A2;stroke-width:1.5;" width="232" x="756" y="544.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="110" x="817" y="561.668">studio_server</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="39" x="888" y="576.6445">[Node]</text><!--MD5=[854d6a5ee877211050450762737c385b]
+cluster vercel_web--><rect fill="#FFFFFF" height="242" style="stroke:#A2A2A2;stroke-width:1.5;" width="485" x="15" y="480.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="34" x="282.5" y="497.668">web</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="39" x="277.5" y="512.6445">[Node]</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="58" x="202.5" y="530.7109">Location</text><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="42" x="269.5" y="530.7109">Cloud</text><line style="stroke:#000000;stroke-width:1.5;" x1="198.5" x2="316.5" y1="517.1758" y2="517.1758"/><line style="stroke:#000000;stroke-width:1.5;" x1="198.5" x2="316.5" y1="533.6641" y2="533.6641"/><line style="stroke:#000000;stroke-width:1.5;" x1="198.5" x2="198.5" y1="517.1758" y2="533.6641"/><line style="stroke:#000000;stroke-width:1.5;" x1="264.5" x2="264.5" y1="517.1758" y2="533.6641"/><line style="stroke:#000000;stroke-width:1.5;" x1="316.5" x2="316.5" y1="517.1758" y2="533.6641"/><!--MD5=[9c2475f70e30f271e515529665b5e41e]
+cluster vercel_web_server--><rect fill="#FFFFFF" height="170" style="stroke:#A2A2A2;stroke-width:1.5;" width="469" x="23" y="544.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="92" x="211.5" y="561.668">web_server</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="39" x="264.5" y="576.6445">[Node]</text><!--MD5=[0b507f9316ff10a92b8196f8f9314e5b]
+cluster vercel_manifest--><rect fill="#FFFFFF" height="242" style="stroke:#A2A2A2;stroke-width:1.5;" width="232" x="508" y="480.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="138" x="555" y="497.668">marcus manifest</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="39" x="654" y="512.6445">[Node]</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="58" x="579" y="530.7109">Location</text><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="42" x="646" y="530.7109">Cloud</text><line style="stroke:#000000;stroke-width:1.5;" x1="575" x2="693" y1="517.1758" y2="517.1758"/><line style="stroke:#000000;stroke-width:1.5;" x1="575" x2="693" y1="533.6641" y2="533.6641"/><line style="stroke:#000000;stroke-width:1.5;" x1="575" x2="575" y1="517.1758" y2="533.6641"/><line style="stroke:#000000;stroke-width:1.5;" x1="641" x2="641" y1="517.1758" y2="533.6641"/><line style="stroke:#000000;stroke-width:1.5;" x1="693" x2="693" y1="517.1758" y2="533.6641"/><!--MD5=[58e74150d06bcfb28b5f10edddfd8888]
+cluster vercel_manifest_server--><rect fill="#FFFFFF" height="170" style="stroke:#A2A2A2;stroke-width:1.5;" width="216" x="516" y="544.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="130" x="559" y="561.668">manifest_server</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="39" x="650" y="576.6445">[Node]</text><!--MD5=[9015f15a3729514c86a438a9dbb528fb]
+cluster sanity--><rect fill="#FFFFFF" height="324" style="stroke:#A2A2A2;stroke-width:1.5;" width="622" x="467" y="28.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="49" x="753.5" y="45.668">Sanity</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="24" x="766" y="60.6445">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="780" y="76.7109"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="94" x="731" y="93.1992">Google Cloud</text><!--MD5=[4cceaeea65695fff80a71c7418cc426a]
+cluster sanity_API--><rect fill="#FFFFFF" height="240" style="stroke:#A2A2A2;stroke-width:1.5;" width="232" x="849" y="104.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="84" x="981.5" y="121.668">sanity-api</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="39" x="1026.5" y="136.6445">[Node]</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="1065.5" y="152.7109"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="201" x="864.5" y="169.1992">An API residing in the Google</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="45" x="1020.5" y="185.6875">Cloud.</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="58" x="951.5" y="204.1758">Location</text><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="42" x="1018.5" y="204.1758">Cloud</text><line style="stroke:#000000;stroke-width:1.5;" x1="947.5" x2="1065.5" y1="190.6406" y2="190.6406"/><line style="stroke:#000000;stroke-width:1.5;" x1="947.5" x2="1065.5" y1="207.1289" y2="207.1289"/><line style="stroke:#000000;stroke-width:1.5;" x1="947.5" x2="947.5" y1="190.6406" y2="207.1289"/><line style="stroke:#000000;stroke-width:1.5;" x1="1013.5" x2="1013.5" y1="190.6406" y2="207.1289"/><line style="stroke:#000000;stroke-width:1.5;" x1="1065.5" x2="1065.5" y1="190.6406" y2="207.1289"/><!--MD5=[aa5334719be2ea6d0b7d3266b92083cb]
+cluster sanitydb--><rect fill="#FFFFFF" height="200" style="stroke:#A2A2A2;stroke-width:1.5;" width="215" x="475" y="132.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="81" x="483" y="149.668">sanity-db</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="72" x="483" y="164.6445">[PostgreSQL]</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="487" y="180.7109"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="199" x="483" y="197.1992">The primary database server.</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="58" x="487" y="215.6875">Location</text><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="97" x="554" y="215.6875">Google Cloud</text><line style="stroke:#000000;stroke-width:1.5;" x1="483" x2="656" y1="202.1523" y2="202.1523"/><line style="stroke:#000000;stroke-width:1.5;" x1="483" x2="656" y1="218.6406" y2="218.6406"/><line style="stroke:#000000;stroke-width:1.5;" x1="483" x2="483" y1="202.1523" y2="218.6406"/><line style="stroke:#000000;stroke-width:1.5;" x1="549" x2="549" y1="202.1523" y2="218.6406"/><line style="stroke:#000000;stroke-width:1.5;" x1="656" x2="656" y1="202.1523" y2="218.6406"/><!--MD5=[ad98df24f76285b14ecbe510560c3fd2]
+cluster editor_device--><rect fill="#FFFFFF" height="251" style="stroke:#A2A2A2;stroke-width:1.5;" width="248" x="796" y="776.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="146" x="847" y="793.668">Editor's computer</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="211" x="814.5" y="808.6445">[Mircosoft Windows, Apple macOS or</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="84" x="878" y="822.7773">mobile device]</text><!--MD5=[40fb275774b3f96bc9164c72eff21553]
+cluster editor_browser--><rect fill="#FFFFFF" height="185" style="stroke:#A2A2A2;stroke-width:1.5;" width="232" x="804" y="834.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="105" x="867.5" y="851.668">Web Browser</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="188" x="826" y="866.6445">[Google Chrome, Mozilla Firefox,</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="179" x="830.5" y="880.7773">Apple Safari or Microsoft Edge]</text><!--MD5=[1d637574dbb1df8721c8d8582a81e026]
+cluster user_device--><rect fill="#FFFFFF" height="251" style="stroke:#A2A2A2;stroke-width:1.5;" width="246" x="261" y="776.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="150" x="309" y="793.668">Visitor's computer</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="211" x="278.5" y="808.6445">[Mircosoft Windows, Apple macOS or</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="84" x="342" y="822.7773">mobile device]</text><!--MD5=[4a847362a43a6a9bd2f185fa8ebb8133]
+cluster user_browser--><rect fill="#FFFFFF" height="185" style="stroke:#A2A2A2;stroke-width:1.5;" width="230" x="269" y="834.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="105" x="331.5" y="851.668">Web Browser</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="188" x="290" y="866.6445">[Google Chrome, Mozilla Firefox,</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="179" x="294.5" y="880.7773">Apple Safari or Microsoft Edge]</text><!--MD5=[996eb2870b69b1c5cbfdaf8ff747286c]
+entity vercel_studio_spa--><rect fill="#438DD5" height="118.9297" style="stroke:#3C7FC0;stroke-width:1.5;" width="216" x="764" y="587.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="193" x="775.5" y="612.668">Single Page Application</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="126" x="809" y="627.6445">[JavaScript and React]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="874" y="643.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="178" x="783" y="660.1992">Provides all of the content</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="181" x="779.5" y="676.6875">editing functionality to the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="196" x="774" y="693.1758">editor via their web browser.</text><!--MD5=[44c2e0cc67c284e9c6805a17a4ab2932]
+entity vercel_web_next_app--><rect fill="#438DD5" height="102.4414" style="stroke:#3C7FC0;stroke-width:1.5;" width="218" x="31" y="595.6992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="135" x="72.5" y="621.168">Next Application</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="126" x="77" y="636.1445">[JavaScript and React]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="142" y="652.2109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="194" x="45" y="668.6992">Provides the Next app to the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="145" x="67.5" y="685.1875">visitors web browser.</text><!--MD5=[364816defee13680d2b930251acf9690]
+entity vercel_web_next_app_api--><rect fill="#438DD5" height="118.9297" style="stroke:#3C7FC0;stroke-width:1.5;" width="200" x="284" y="587.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="68" x="350" y="612.668">Next API</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="126" x="321" y="627.6445">[JavaScript and React]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="386" y="643.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="172" x="298" y="660.1992">Provides manifests to the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="170" x="297" y="676.6875">visitors app via their web</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="60" x="354" y="693.1758">browser.</text><!--MD5=[b1e06c7667eb30e6d80b5b10471df3ed]
+entity vercel_manifest_next_app_api--><rect fill="#438DD5" height="118.9297" style="stroke:#3C7FC0;stroke-width:1.5;" width="200" x="524" y="587.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="68" x="590" y="612.668">Next API</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="126" x="561" y="627.6445">[JavaScript and React]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="626" y="643.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="172" x="538" y="660.1992">Provides manifests to the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="170" x="537" y="676.6875">visitors app via their web</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="60" x="594" y="693.1758">browser.</text><!--MD5=[79db17defd0669b9fd860a8226f6cb8d]
+entity sanitydb_api--><rect fill="#438DD5" height="118.9297" style="stroke:#3C7FC0;stroke-width:1.5;" width="216" x="857" y="217.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="193" x="868.5" y="242.668">Single Page Application</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="126" x="902" y="257.6445">[JavaScript and React]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="967" y="273.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="178" x="876" y="290.1992">Provides all of the content</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="181" x="872.5" y="306.6875">editing functionality to the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="196" x="867" y="323.1758">editor via their web browser.</text><!--MD5=[7468467f3b6b392f1d176d828c753b77]
+entity db--><path d="M483.5,239.1992 C483.5,229.1992 579,229.1992 579,229.1992 C579,229.1992 674.5,229.1992 674.5,239.1992 L674.5,314.1523 C674.5,324.1523 579,324.1523 579,324.1523 C579,324.1523 483.5,324.1523 483.5,314.1523 L483.5,239.1992 " fill="#438DD5" style="stroke:#3C7FC0;stroke-width:1.5;"/><path d="M483.5,239.1992 C483.5,249.1992 579,249.1992 579,249.1992 C579,249.1992 674.5,249.1992 674.5,239.1992 " fill="none" style="stroke:#3C7FC0;stroke-width:1.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="75" x="541.5" y="268.668">Database</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="171" x="493.5" y="283.6445">[Relational Database Schema]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="581" y="299.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="99" x="531.5" y="316.1992">Stores content</text><!--MD5=[2eaf6ef1808c42e4a457469ceaf5fb2c]
+entity editor_spa--><rect fill="#438DD5" height="118.9297" style="stroke:#3C7FC0;stroke-width:1.5;" width="216" x="812" y="892.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="193" x="823.5" y="917.668">Single Page Application</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="126" x="857" y="932.6445">[JavaScript and React]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="922" y="948.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="178" x="831" y="965.1992">Provides all of the content</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="181" x="827.5" y="981.6875">editing functionality to the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="196" x="822" y="998.1758">editor via their web browser.</text><!--MD5=[ba99e7ff49c654ac984e927aea4bc5c1]
+entity user_spa--><rect fill="#438DD5" height="118.9297" style="stroke:#3C7FC0;stroke-width:1.5;" width="213" x="277.5" y="892.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="193" x="287.5" y="917.668">Single Page Application</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="126" x="321" y="932.6445">[JavaScript and React]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="386" y="948.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="177" x="295.5" y="965.1992">Provides the user with the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="138" x="313" y="981.6875">content to their web</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="60" x="354" y="998.1758">browser.</text><!--MD5=[61f835d7a880fddfb5c276e39b200ba8]
+link vercel_studio_spa to editor_spa--><path d="M870.9127,706.2265 C871.2308,726.0153 872.3222,748.1208 875,768.1992 C880.1787,807.0289 890.3189,849.5649 899.6644,883.8986 " fill="none" id="vercel_studio_spa-to-editor_spa" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="901.8937,891.9918,902.6613,883.4824,896.8768,885.0759,901.8937,891.9918" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="143" x="876" y="750.8008">Delivers the app to the</text><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="137" x="881" y="764.9336">editors's web browser</text><!--MD5=[a6ab6dba4dcede81501ce6f0549acf4a]
+link vercel_web_next_app to user_spa--><path d="M175.2315,697.9606 C190.6934,719.9099 209.3198,745.6324 227,768.1992 C258.2796,808.1243 295.0548,851.2916 325.1472,885.7218 " fill="none" id="vercel_web_next_app-to-user_spa" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="330.6855,892.0463,327.6721,884.0514,323.1581,888.0042,330.6855,892.0463" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="143" x="228" y="750.8008">Delivers the app to the</text><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="127" x="238" y="764.9336">users's web browser</text><!--MD5=[bd6879a1b52ec41fcc4d709f83dc6d06]
+link vercel_web_next_app_api to user_spa--><path d="M384,706.2303 C384,757.2655 384,830.764 384,884.0221 " fill="none" id="vercel_web_next_app_api-to-user_spa" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="384,892.0582,387,884.0582,381,884.0582,384,892.0582" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="123" x="385" y="750.8008">Delivers data to the</text><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="127" x="385" y="764.9336">users's web browser</text><!--MD5=[a01ce13f7f4d904e7760f488226bcfff]
+link sanitydb_api to vercel_web_next_app--><path d="M856.8129,311.4254 C808.6181,325.819 750.9001,341.5957 698,352.1992 C603.4092,371.1594 346.3918,349.3917 267,404.1992 C204.6195,447.2631 170.6714,530.7991 153.9415,587.6594 " fill="none" id="sanitydb_api-to-vercel_web_next_app" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="151.6939,595.4986,156.7825,588.6353,151.0149,586.9816,151.6939,595.4986" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="123" x="446" y="378.8008">Delivers data to the</text><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="119" x="450" y="392.9336">web app build step</text><!--MD5=[54643e45286b5d40ab7554c5fa3abe56]
+link vercel_manifest_next_app_api to user_spa--><path d="M577.1558,706.2303 C536.5847,757.7895 477.9726,832.2756 435.9684,885.656 " fill="none" id="vercel_manifest_next_app_api-to-user_spa" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="430.9306,892.0582,438.2353,887.6264,433.5201,883.9161,430.9306,892.0582" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="134" x="549.5" y="750.8008">Delivers manifests to</text><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="143" x="547" y="764.9336">the web app build step</text><!--MD5=[ad8991972e27f13a04d2c98d133680a5]
+link sanitydb_api to editor_spa--><path d="M987.411,336.3668 C1019.2707,429.9063 1069.4383,616.0965 1028,768.1992 C1016.6153,809.9875 993.0289,851.9624 970.7944,885.1996 " fill="none" id="sanitydb_api-to-editor_spa" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="966.0753,892.1563,973.0491,887.2201,968.0838,883.8517,966.0753,892.1563" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="123" x="1044" y="644.3008">Delivers data to the</text><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="74" x="1070.5" y="658.4336">editor's SPA</text><!--MD5=[75bdb2452634afe30f00487ce6ecd978]
+link db to sanitydb_api--><path d="M674.9117,276.6992 C727.5828,276.6992 793.2988,276.6992 848.858,276.6992 " fill="none" id="db-to-sanitydb_api" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="856.9788,276.6992,848.9788,273.6992,848.9788,279.6992,856.9788,276.6992" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="146" x="692.75" y="270.3008">Delivers data to the api</text><rect fill="#FFFFFF" height="63.4648" rx="5" ry="5" style="stroke:#FFFFFF;stroke-width:1.0;" width="105" x="1052" y="1040.1992"/><rect height="16.4883" style="stroke:none;stroke-width:1.0;fill:none;" width="93" x="1058" y="1047.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="51" x="1058" y="1060.7344">Legend</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="1113" y="1060.7344"/><rect fill="#438DD5" height="16.4883" style="stroke:none;stroke-width:1.0;" width="93" x="1058" y="1063.6875"/><text fill="#3C7FC0" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="8" x="1062" y="1077.2227">â–¯</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="1074" y="1077.2227"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="65" x="1078" y="1077.2227">container</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="1151" y="1077.2227"/><rect fill="#FFFFFF" height="16.4883" style="stroke:none;stroke-width:1.0;" width="93" x="1058" y="1080.1758"/><text fill="#A2A2A2" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="8" x="1062" y="1093.7109">â–¯</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="1074" y="1093.7109"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="35" x="1078" y="1093.7109">node</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="1121" y="1093.7109"/><line style="stroke:#00000000;stroke-width:1.0;" x1="1058" x2="1151" y1="1047.1992" y2="1047.1992"/><line style="stroke:#00000000;stroke-width:1.0;" x1="1058" x2="1151" y1="1063.6875" y2="1063.6875"/><line style="stroke:#00000000;stroke-width:1.0;" x1="1058" x2="1151" y1="1080.1758" y2="1080.1758"/><line style="stroke:#00000000;stroke-width:1.0;" x1="1058" x2="1151" y1="1096.6641" y2="1096.6641"/><line style="stroke:#00000000;stroke-width:1.0;" x1="1058" x2="1058" y1="1047.1992" y2="1096.6641"/><line style="stroke:#00000000;stroke-width:1.0;" x1="1151" x2="1151" y1="1047.1992" y2="1096.6641"/><!--MD5=[af151d0edcc72af1c289b204df5b53ce]
 @startuml "deployment"
   !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Deployment.puml
 ' uncomment the following line and comment the first to use locally
@@ -30,20 +43,35 @@ WithoutPropertyHeader()
 
 title Deployment Diagram for Muna
 
-Deployment_Node(vercel, "Vercel", "???", "Vercel cloud"){
+Deployment_Node(vercel, "Vercel", "Node", "Vercel cloud"){
     AddProperty("Location", "Cloud")
-    Deployment_Node_R(bb2, "bigbank-web***\tx4", "Node", "A web server residing in the web server farm, accessed via F5 BIG-IP LTMs."){
-      Container(editor_web, "Single Page Application", "JavaScript and React", "Provides all of the content editing functionality to the editor via their web browser.")
+    Deployment_Node_R(vercel_studio, "studio", "Node"){
+      Deployment_Node_R(vercel_studio_server, "studio_server", "Node"){
+        Container(vercel_studio_spa, "Single Page Application", "JavaScript and React", "Provides all of the content editing functionality to the editor via their web browser.")
+      }
     }
     AddProperty("Location", "Cloud")
-    Deployment_Node_R(bb3, "bigbank-web***\tx5", "Node", "A web server residing in the web server farm, accessed via F5 BIG-IP LTMs."){
-      Container(user_web, "Single Page Application", "JavaScript and React", "Provides all of the content editing functionality to the editor via their web browser.")
+    Deployment_Node_R(vercel_web, "web", "Node"){
+      Deployment_Node_R(vercel_web_server, "web_server", "Node"){
+        Container(vercel_web_next_app, "Next Application", "JavaScript and React", "Provides the Next app to the visitors web browser.")
+        Container(vercel_web_next_app_api, "Next API", "JavaScript and React", "Provides manifests to the visitors app via their web browser.")
+      }
+    }
+    AddProperty("Location", "Cloud")
+    Deployment_Node_R(vercel_manifest, "marcus manifest", "Node"){
+      Deployment_Node_R(vercel_manifest_server, "manifest_server", "Node"){
+        Container(vercel_manifest_next_app_api, "Next API", "JavaScript and React", "Provides manifests to the visitors app via their web browser.")
+      }
     }
 }
 
-Deployment_Node(sanity, "Sanity", "???", "Google cloud"){
-    AddProperty("Location", "London")
-    Deployment_Node_L(sanitydb01, "sanity-db01", "PostgreSQL", "The primary database server."){
+Deployment_Node(sanity, "Sanity", "Go", "Google Cloud"){
+    AddProperty("Location", "Cloud")
+    Deployment_Node_R(sanity_API, "sanity-api", "Node", "An API residing in the Google Cloud."){
+      Container(sanitydb_api, "Single Page Application", "JavaScript and React", "Provides all of the content editing functionality to the editor via their web browser.")
+    }
+    AddProperty("Location", "Google Cloud")
+    Deployment_Node_L(sanitydb, "sanity-db", "PostgreSQL", "The primary database server."){
       ContainerDb(db, "Database", "Relational Database Schema", "Stores content")
     }
 }
@@ -60,8 +88,13 @@ Deployment_Node(user_device, "Visitor's computer", "Mircosoft Windows, Apple mac
     }
 }
 
-Rel_U(editor_web, editor_spa, "Delivers to the editors's web browser")
-Rel_U(user_web, user_spa, "Delivers to the users's web browser")
+Rel_D(vercel_studio_spa, editor_spa, "Delivers the app to the editors's web browser")
+Rel_D(vercel_web_next_app, user_spa, "Delivers the app to the users's web browser")
+Rel_D(vercel_web_next_app_api, user_spa, "Delivers data to the users's web browser")
+Rel_D(sanitydb_api, vercel_web_next_app, "Delivers data to the web app build step")
+Rel_D(vercel_manifest_next_app_api, user_spa, "Delivers manifests to the web app build step")
+Rel_D(sanitydb_api, editor_spa, "Delivers data to the editor's SPA")
+Rel_R(db, sanitydb_api, "Delivers data to the api")
 
 SHOW_LEGEND()
 @enduml
@@ -666,20 +699,35 @@ skinparam arrow<<fallback>> {
 
 title Deployment Diagram for Muna
 
-rectangle "==Vercel\n<size:12>[???]</size>\n\nVercel cloud" <<node>> as vercel {
+rectangle "==Vercel\n<size:12>[Node]</size>\n\nVercel cloud" <<node>> as vercel {
     
-    rectangle "==bigbank-web***\tx4\r<size:12>[Node]</size>\r\rA web server residing in the web\nserver farm, accessed via F5\nBIG-IP LTMs.\r| Location |= Cloud |" <<node>> as bb2 {
-      rectangle "==Single Page Application\n//<size:12>[JavaScript and React]</size>//\n\n Provides all of the content editing functionality to the editor via their web browser." <<container>> as editor_web 
+    rectangle "==studio\r<size:12>[Node]</size>\r| Location |= Cloud |" <<node>> as vercel_studio {
+      rectangle "==studio_server\r<size:12>[Node]</size>" <<node>> as vercel_studio_server {
+        rectangle "==Single Page Application\n//<size:12>[JavaScript and React]</size>//\n\n Provides all of the content editing functionality to the editor via their web browser." <<container>> as vercel_studio_spa 
+      }
     }
     
-    rectangle "==bigbank-web***\tx5\r<size:12>[Node]</size>\r\rA web server residing in the web\nserver farm, accessed via F5\nBIG-IP LTMs.\r| Location |= Cloud |" <<node>> as bb3 {
-      rectangle "==Single Page Application\n//<size:12>[JavaScript and React]</size>//\n\n Provides all of the content editing functionality to the editor via their web browser." <<container>> as user_web 
+    rectangle "==web\r<size:12>[Node]</size>\r| Location |= Cloud |" <<node>> as vercel_web {
+      rectangle "==web_server\r<size:12>[Node]</size>" <<node>> as vercel_web_server {
+        rectangle "==Next Application\n//<size:12>[JavaScript and React]</size>//\n\n Provides the Next app to the visitors web browser." <<container>> as vercel_web_next_app 
+        rectangle "==Next API\n//<size:12>[JavaScript and React]</size>//\n\n Provides manifests to the visitors app via their web browser." <<container>> as vercel_web_next_app_api 
+      }
+    }
+    
+    rectangle "==marcus manifest\r<size:12>[Node]</size>\r| Location |= Cloud |" <<node>> as vercel_manifest {
+      rectangle "==manifest_server\r<size:12>[Node]</size>" <<node>> as vercel_manifest_server {
+        rectangle "==Next API\n//<size:12>[JavaScript and React]</size>//\n\n Provides manifests to the visitors app via their web browser." <<container>> as vercel_manifest_next_app_api 
+      }
     }
 }
 
-rectangle "==Sanity\n<size:12>[???]</size>\n\nGoogle cloud" <<node>> as sanity {
+rectangle "==Sanity\n<size:12>[Go]</size>\n\nGoogle Cloud" <<node>> as sanity {
+    
+    rectangle "==sanity-api\r<size:12>[Node]</size>\r\rAn API residing in the Google\nCloud.\r| Location |= Cloud |" <<node>> as sanity_API {
+      rectangle "==Single Page Application\n//<size:12>[JavaScript and React]</size>//\n\n Provides all of the content editing functionality to the editor via their web browser." <<container>> as sanitydb_api 
+    }
     
-    rectangle "==sanity-db01\l<size:12>[PostgreSQL]</size>\l\lThe primary database server.\l| Location |= London |" <<node>> as sanitydb01 {
+    rectangle "==sanity-db\l<size:12>[PostgreSQL]</size>\l\lThe primary database server.\l| Location |= Google Cloud |" <<node>> as sanitydb {
       database "==Database\n//<size:12>[Relational Database Schema]</size>//\n\n Stores content" <<container>> as db 
     }
 }
@@ -696,8 +744,13 @@ rectangle "==Visitor's computer\n<size:12>[Mircosoft Windows, Apple macOS or</si
     }
 }
 
-editor_web -UP->> editor_spa : **Delivers to the editors's web browser**
-user_web -UP->> user_spa : **Delivers to the users's web browser**
+vercel_studio_spa -DOWN->> editor_spa : **Delivers the app to the editors's web browser**
+vercel_web_next_app -DOWN->> user_spa : **Delivers the app to the users's web browser**
+vercel_web_next_app_api -DOWN->> user_spa : **Delivers data to the users's web browser**
+sanitydb_api -DOWN->> vercel_web_next_app : **Delivers data to the web app build step**
+vercel_manifest_next_app_api -DOWN->> user_spa : **Delivers manifests to the web app build step**
+sanitydb_api -DOWN->> editor_spa : **Delivers data to the editor's SPA**
+db -RIGHT->> sanitydb_api : **Delivers data to the api**
 
 hide stereotype
 legend right
diff --git a/docs/diagrams/src/deployment.puml b/docs/diagrams/src/deployment.puml
index 9e67066..6aaf256 100644
--- a/docs/diagrams/src/deployment.puml
+++ b/docs/diagrams/src/deployment.puml
@@ -13,20 +13,35 @@ WithoutPropertyHeader()
 
 title Deployment Diagram for Muna
 
-Deployment_Node(vercel, "Vercel", "???", "Vercel cloud"){
+Deployment_Node(vercel, "Vercel", "Node", "Vercel cloud"){
     AddProperty("Location", "Cloud")
-    Deployment_Node_R(bb2, "bigbank-web***\tx4", "Node", "A web server residing in the web server farm, accessed via F5 BIG-IP LTMs."){
-      Container(editor_web, "Single Page Application", "JavaScript and React", "Provides all of the content editing functionality to the editor via their web browser.")
+    Deployment_Node_R(vercel_studio, "studio", "Node"){
+      Deployment_Node_R(vercel_studio_server, "studio_server", "Node"){
+        Container(vercel_studio_spa, "Single Page Application", "JavaScript and React", "Provides all of the content editing functionality to the editor via their web browser.")
+      }
     }
     AddProperty("Location", "Cloud")
-    Deployment_Node_R(bb3, "bigbank-web***\tx5", "Node", "A web server residing in the web server farm, accessed via F5 BIG-IP LTMs."){
-      Container(user_web, "Single Page Application", "JavaScript and React", "Provides all of the content editing functionality to the editor via their web browser.")
+    Deployment_Node_R(vercel_web, "web", "Node"){
+      Deployment_Node_R(vercel_web_server, "web_server", "Node"){
+        Container(vercel_web_next_app, "Next Application", "JavaScript and React", "Provides the Next app to the visitors web browser.")
+        Container(vercel_web_next_app_api, "Next API", "JavaScript and React", "Provides manifests to the visitors app via their web browser.")
+      }
+    }
+    AddProperty("Location", "Cloud")
+    Deployment_Node_R(vercel_manifest, "marcus manifest", "Node"){
+      Deployment_Node_R(vercel_manifest_server, "manifest_server", "Node"){
+        Container(vercel_manifest_next_app_api, "Next API", "JavaScript and React", "Provides manifests to the visitors app via their web browser.")
+      }
     }
 }
 
-Deployment_Node(sanity, "Sanity", "???", "Google cloud"){
-    AddProperty("Location", "London")
-    Deployment_Node_L(sanitydb01, "sanity-db01", "PostgreSQL", "The primary database server."){
+Deployment_Node(sanity, "Sanity", "Go", "Google Cloud"){
+    AddProperty("Location", "Cloud")
+    Deployment_Node_R(sanity_API, "sanity-api", "Node", "An API residing in the Google Cloud."){
+      Container(sanitydb_api, "Single Page Application", "JavaScript and React", "Provides all of the content editing functionality to the editor via their web browser.")
+    }
+    AddProperty("Location", "Google Cloud")
+    Deployment_Node_L(sanitydb, "sanity-db", "PostgreSQL", "The primary database server."){
       ContainerDb(db, "Database", "Relational Database Schema", "Stores content")
     }
 }
@@ -43,8 +58,13 @@ Deployment_Node(user_device, "Visitor's computer", "Mircosoft Windows, Apple mac
     }
 }
 
-Rel_U(editor_web, editor_spa, "Delivers to the editors's web browser")
-Rel_U(user_web, user_spa, "Delivers to the users's web browser")
+Rel_D(vercel_studio_spa, editor_spa, "Delivers the app to the editors's web browser")
+Rel_D(vercel_web_next_app, user_spa, "Delivers the app to the users's web browser")
+Rel_D(vercel_web_next_app_api, user_spa, "Delivers data to the users's web browser")
+Rel_D(sanitydb_api, vercel_web_next_app, "Delivers data to the web app build step")
+Rel_D(vercel_manifest_next_app_api, user_spa, "Delivers manifests to the web app build step")
+Rel_D(sanitydb_api, editor_spa, "Delivers data to the editor's SPA")
+Rel_R(db, sanitydb_api, "Delivers data to the api")
 
 SHOW_LEGEND()
 @enduml
\ No newline at end of file
-- 
GitLab