Skip to content
Snippets Groups Projects
Commit d08cd6a5 authored by Tarje.Lavik's avatar Tarje.Lavik
Browse files

Add Vercel container diagram

parent 6c218542
No related branches found
No related tags found
No related merge requests found
...@@ -45,4 +45,8 @@ Documentation of custom Studio plugins. ...@@ -45,4 +45,8 @@ Documentation of custom Studio plugins.
WIP! WIP!
![](./diagrams/deployment.svg) ![](./diagrams/deployment.svg)
\ No newline at end of file
### Vercel
![](./diagrams/container_vercel.svg)
...@@ -2,19 +2,19 @@ ...@@ -2,19 +2,19 @@
cluster api--><rect fill="#FFFFFF" height="204" style="stroke:#444444;stroke-width:1.0;stroke-dasharray:7.0,7.0;" width="512" x="56.25" y="258.6992"/><text fill="#444444" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="130" x="247.25" y="276.168">SPA Application</text><text fill="#444444" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="63" x="280.75" y="291.1445">[Container]</text><!--MD5=[30860e21ba0e39165c540f9e23fe2d63] cluster api--><rect fill="#FFFFFF" height="204" style="stroke:#444444;stroke-width:1.0;stroke-dasharray:7.0,7.0;" width="512" x="56.25" y="258.6992"/><text fill="#444444" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="130" x="247.25" y="276.168">SPA Application</text><text fill="#444444" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="63" x="280.75" y="291.1445">[Container]</text><!--MD5=[30860e21ba0e39165c540f9e23fe2d63]
entity sign--><rect fill="#85BBF0" height="102.4414" style="stroke:#78A8D8;stroke-width:1.5;" width="200" x="80.25" y="327.6992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="143" x="108.75" y="353.168">Sign In Controller</text><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="40" x="160.25" y="368.1445">[React]</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="182.25" y="384.2109"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="172" x="94.25" y="400.6992">Allows users to sign in to</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="74" x="143.25" y="417.1875">the Studio.</text><!--MD5=[7d95986b1a7257a223a95834a13edd2e] entity sign--><rect fill="#85BBF0" height="102.4414" style="stroke:#78A8D8;stroke-width:1.5;" width="200" x="80.25" y="327.6992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="143" x="108.75" y="353.168">Sign In Controller</text><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="40" x="160.25" y="368.1445">[React]</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="182.25" y="384.2109"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="172" x="94.25" y="400.6992">Allows users to sign in to</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="74" x="143.25" y="417.1875">the Studio.</text><!--MD5=[7d95986b1a7257a223a95834a13edd2e]
entity import_tool--><rect fill="#85BBF0" height="118.9297" style="stroke:#78A8D8;stroke-width:1.5;" width="209" x="316" y="319.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="91" x="375" y="344.668">Import tool</text><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="40" x="400.5" y="359.6445">[React]</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="422.5" y="375.7109"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="139" x="351" y="392.1992">Plugin for importing</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="185" x="326" y="408.6875">external resources into the</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="48" x="396.5" y="425.1758">Studio.</text><!--MD5=[33573e971ff506c0f246109ca3fd77bd] entity import_tool--><rect fill="#85BBF0" height="118.9297" style="stroke:#78A8D8;stroke-width:1.5;" width="209" x="316" y="319.1992"/><text fill="#000000" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="91" x="375" y="344.668">Import tool</text><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="40" x="400.5" y="359.6445">[React]</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="422.5" y="375.7109"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="139" x="351" y="392.1992">Plugin for importing</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="185" x="326" y="408.6875">external resources into the</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="48" x="396.5" y="425.1758">Studio.</text><!--MD5=[33573e971ff506c0f246109ca3fd77bd]
entity spa--><rect fill="#438DD5" height="118.9297" style="stroke:#3C7FC0;stroke-width:1.5;" width="213" x="524" y="40.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="193" x="534" y="65.668">Single Page Application</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="126" x="567.5" y="80.6445">[Javascript and React]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="632.5" y="96.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="130" x="565.5" y="113.1992">Provides all editing</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="178" x="539.5" y="129.6875">functionality to editors via</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="128" x="566.5" y="146.1758">their web browser.</text><!--MD5=[3d74be2a757051a7059b41e555fce061] entity spa--><rect fill="#438DD5" height="118.9297" style="stroke:#3C7FC0;stroke-width:1.5;" width="202" x="527.25" y="40.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="142" x="557.25" y="65.668">Sanity Studio SPA</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="126" x="565.25" y="80.6445">[Javascript and React]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="630.25" y="96.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="130" x="563.25" y="113.1992">Provides all editing</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="178" x="537.25" y="129.6875">functionality to editors via</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="128" x="564.25" y="146.1758">their web browser.</text><!--MD5=[3d74be2a757051a7059b41e555fce061]
entity sanity_db--><path d="M205,37.1992 C205,27.1992 305.5,27.1992 305.5,27.1992 C305.5,27.1992 406,27.1992 406,37.1992 L406,162.1523 C406,172.1523 305.5,172.1523 305.5,172.1523 C305.5,172.1523 205,172.1523 205,162.1523 L205,37.1992 " fill="#B3B3B3" style="stroke:#A6A6A6;stroke-width:1.5;"/><path d="M205,37.1992 C205,47.1992 305.5,47.1992 305.5,47.1992 C305.5,47.1992 406,47.1992 406,37.1992 " fill="none" style="stroke:#A6A6A6;stroke-width:1.5;"/><image height="50" width="50" x="280.5" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABjklEQVR4Xu2YzU7CQBRGeSoTJa4NaHwNxY2LwsqXplI0rpBLwEzOtGXa3tuZxjnJ2c39+SgNtLNZJpPJdGVXvB5CrY6yPjpcsqvsNzpcaIj79SpOIC6iJeeYwuHacp4J5eLWG2wh56qzDQzCOqEqXrxzTbJWnWtBeL4O1jTJOjUkxMnHuTe0z2DWU55X4y9IzVXh2RC+N29eH8oaFdwgbphqwG8AF6c8rwKDbB9u7IZZ4gU5y3PJwwCuu+XddAJx+SZZlyRc+po/T/M0g3HRPsrfHPaNAhcb4mfMe0s+US6kIeeMglWYchHpCnERDaPeQ+Xxu86FhlguI4Zxka8Il+sqeyaBfMJcNET2SY7QK8a6pOHykw0iMMAkg+yL1em5hiFMgvDJjfJ8F9w+h+f7uEG+FB93owYRWRMCe5gHETiwTta0IVeR9Zce0YOEBKrON3ebZiEucKCV5kEEDrWQM02oNv5gTTnPHC6gIWeMxuHj3Vumj9U6YggXLhaqvMhmr6Rof9Pe/19AJpP55/wCwk7g9HfTvaAAAAAASUVORK5CYII=" y="51.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="168" x="221.5" y="116.668">Sanity Cloud Storage</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="85" x="263" y="131.6445">[Google Cloud]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="307.5" y="147.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="177" x="219" y="164.1992">Stores metadata and files.</text><!--MD5=[e29493a8775effcafa538aa0485107d1] entity sanity_db--><path d="M209,37.1992 C209,27.1992 309.5,27.1992 309.5,27.1992 C309.5,27.1992 410,27.1992 410,37.1992 L410,162.1523 C410,172.1523 309.5,172.1523 309.5,172.1523 C309.5,172.1523 209,172.1523 209,162.1523 L209,37.1992 " fill="#B3B3B3" style="stroke:#A6A6A6;stroke-width:1.5;"/><path d="M209,37.1992 C209,47.1992 309.5,47.1992 309.5,47.1992 C309.5,47.1992 410,47.1992 410,37.1992 " fill="none" style="stroke:#A6A6A6;stroke-width:1.5;"/><image height="50" width="50" x="284.5" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABjklEQVR4Xu2YzU7CQBRGeSoTJa4NaHwNxY2LwsqXplI0rpBLwEzOtGXa3tuZxjnJ2c39+SgNtLNZJpPJdGVXvB5CrY6yPjpcsqvsNzpcaIj79SpOIC6iJeeYwuHacp4J5eLWG2wh56qzDQzCOqEqXrxzTbJWnWtBeL4O1jTJOjUkxMnHuTe0z2DWU55X4y9IzVXh2RC+N29eH8oaFdwgbphqwG8AF6c8rwKDbB9u7IZZ4gU5y3PJwwCuu+XddAJx+SZZlyRc+po/T/M0g3HRPsrfHPaNAhcb4mfMe0s+US6kIeeMglWYchHpCnERDaPeQ+Xxu86FhlguI4Zxka8Il+sqeyaBfMJcNET2SY7QK8a6pOHykw0iMMAkg+yL1em5hiFMgvDJjfJ8F9w+h+f7uEG+FB93owYRWRMCe5gHETiwTta0IVeR9Zce0YOEBKrON3ebZiEucKCV5kEEDrWQM02oNv5gTTnPHC6gIWeMxuHj3Vumj9U6YggXLhaqvMhmr6Rof9Pe/19AJpP55/wCwk7g9HfTvaAAAAAASUVORK5CYII=" y="51.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="168" x="225.5" y="116.668">Sanity Cloud Storage</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="85" x="267" y="131.6445">[Google Cloud]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="311.5" y="147.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="177" x="223" y="164.1992">Stores metadata and files.</text><!--MD5=[e29493a8775effcafa538aa0485107d1]
entity auth--><rect fill="#B3B3B3" height="133.9531" style="stroke:#A6A6A6;stroke-width:1.5;" width="203" x="7" y="548.6992"/><image height="48" width="48" x="84.5" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB5ElEQVR4Xu2YsZLCMAxE+f/fUXMNDQ0NDQ1NmjQ0NGloqLgde86ElWQrYZhkbvIqJsjrjWUpTnayMnZ8YWk2Qy02Qy3+haGfMDwywARDx+Pxfr8/J4Ihh8OBtXyihvb7PU81BQxnRYeoodvtlqUvl8vj8XifzgZhCM6/MZwVHUKGkKwyB+51GIbXtD4IQ3BxDxHWtQgZmrF1NBBhXYu2obLsnwMpVlc0DKF0WTXR9/25CgJ4TKLZCxqGTN3g4puJhiDHvVMzhP7Beong9iylQNTbUs2QWU3X65XjfBDM41P1cdwI19DpdGKlRLzFid9OIc6hf7iGzO7XdR2FYUpcHBL4oe3iIqukfkZhBdtQUMXcJXqHmffmtQDDkFfqtM5eOp4qrV72zRZgGAruRLMjZHRmzfowW4BhKEfDFvpbGaxr1Zwjo92POwhky6OawmQpQyUJFCamodWlzNuti21qCZe9OZNuembZ61XM2IYkrILFwMp/vTGKc/dPlY46wZY2xjUkzk5c7OEq/vFDtwCTecNrhmTWLRbMBTZLfUzDkLcJFjvCytoO+RnzdDyV4Ek8ZKi0gLW8KMraXqWl+uSKEG+nUUPyweeYYLIyEwwVXh+k3tF/8cgAcwx9lc1Qi81Qi81Qi18VHxRxhtGvjgAAAABJRU5ErkJggg==" y="558.6992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="183" x="17" y="622.168">Google Authentication</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="85" x="66" y="637.1445">[Google Cloud]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="110.5" y="653.2109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="150" x="35.5" y="669.6992">Authenticates editors.</text><!--MD5=[e2ca8134d4d6579ee847ece18521a18e] entity auth--><rect fill="#B3B3B3" height="133.9531" style="stroke:#A6A6A6;stroke-width:1.5;" width="203" x="7" y="548.6992"/><image height="48" width="48" x="84.5" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB5ElEQVR4Xu2YsZLCMAxE+f/fUXMNDQ0NDQ1NmjQ0NGloqLgde86ElWQrYZhkbvIqJsjrjWUpTnayMnZ8YWk2Qy02Qy3+haGfMDwywARDx+Pxfr8/J4Ihh8OBtXyihvb7PU81BQxnRYeoodvtlqUvl8vj8XifzgZhCM6/MZwVHUKGkKwyB+51GIbXtD4IQ3BxDxHWtQgZmrF1NBBhXYu2obLsnwMpVlc0DKF0WTXR9/25CgJ4TKLZCxqGTN3g4puJhiDHvVMzhP7Beong9iylQNTbUs2QWU3X65XjfBDM41P1cdwI19DpdGKlRLzFid9OIc6hf7iGzO7XdR2FYUpcHBL4oe3iIqukfkZhBdtQUMXcJXqHmffmtQDDkFfqtM5eOp4qrV72zRZgGAruRLMjZHRmzfowW4BhKEfDFvpbGaxr1Zwjo92POwhky6OawmQpQyUJFCamodWlzNuti21qCZe9OZNuembZ61XM2IYkrILFwMp/vTGKc/dPlY46wZY2xjUkzk5c7OEq/vFDtwCTecNrhmTWLRbMBTZLfUzDkLcJFjvCytoO+RnzdDyV4Ek8ZKi0gLW8KMraXqWl+uSKEG+nUUPyweeYYLIyEwwVXh+k3tF/8cgAcwx9lc1Qi81Qi81Qi18VHxRxhtGvjgAAAABJRU5ErkJggg==" y="558.6992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="183" x="17" y="622.168">Google Authentication</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="85" x="66" y="637.1445">[Google Cloud]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="110.5" y="653.2109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="150" x="35.5" y="669.6992">Authenticates editors.</text><!--MD5=[e2ca8134d4d6579ee847ece18521a18e]
entity marcus--><rect fill="#999999" height="71.8203" style="stroke:#8A8A8A;stroke-width:1.5;" width="141" x="245" y="579.6992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="60" x="285.5" y="605.168">Marcus</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="317.5" y="622.0781"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="117" x="259" y="638.5664">Content provider</text><!--MD5=[869122dbb59a4f5702fe9cdcd390c614] entity marcus--><rect fill="#999999" height="71.8203" style="stroke:#8A8A8A;stroke-width:1.5;" width="141" x="245" y="579.6992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="60" x="285.5" y="605.168">Marcus</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="317.5" y="622.0781"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="117" x="259" y="638.5664">Content provider</text><!--MD5=[869122dbb59a4f5702fe9cdcd390c614]
entity kulturnav--><rect fill="#999999" height="71.8203" style="stroke:#8A8A8A;stroke-width:1.5;" width="141" x="421" y="579.6992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="80" x="451.5" y="605.168">Kulturnav</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="493.5" y="622.0781"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="117" x="435" y="638.5664">Content provider</text><!--MD5=[29e43f0d87d4a5e4fc25a2c204ebb0f3] entity kulturnav--><rect fill="#999999" height="71.8203" style="stroke:#8A8A8A;stroke-width:1.5;" width="141" x="421" y="579.6992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="80" x="451.5" y="605.168">Kulturnav</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="493.5" y="622.0781"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="117" x="435" y="638.5664">Content provider</text><!--MD5=[29e43f0d87d4a5e4fc25a2c204ebb0f3]
entity nb--><rect fill="#999999" height="71.8203" style="stroke:#8A8A8A;stroke-width:1.5;" width="141" x="597" y="579.6992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="47" x="644" y="605.168">NB.no</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="669.5" y="622.0781"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="117" x="611" y="638.5664">Content provider</text><!--MD5=[10c2457638a95e38b5d87a5d20a81c8c] entity nb--><rect fill="#999999" height="71.8203" style="stroke:#8A8A8A;stroke-width:1.5;" width="141" x="597" y="579.6992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="47" x="644" y="605.168">NB.no</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="669.5" y="622.0781"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="117" x="611" y="638.5664">Content provider</text><!--MD5=[10c2457638a95e38b5d87a5d20a81c8c]
link import_tool to sanity_db--><path d="M395.841,318.9042 C379.045,278.4482 356.539,224.2372 338.161,179.9722 " fill="none" id="import_tool-to-sanity_db" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="335.015,172.3942,335.3114,180.9331,340.8529,178.6327,335.015,172.3942" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="30" x="361.25" y="222.8008">Uses</text><!--MD5=[cc6e701350592b60920a324fb448bbde] link import_tool to sanity_db--><path d="M396.69,318.9042 C380.478,278.4482 358.755,224.2372 341.016,179.9722 " fill="none" id="import_tool-to-sanity_db" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="337.98,172.3942,338.1705,180.9361,343.7401,178.7046,337.98,172.3942" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="30" x="363.25" y="222.8008">Uses</text><!--MD5=[cc6e701350592b60920a324fb448bbde]
link import_tool to marcus--><path d="M394.025,438.3932 C375.481,479.8962 351.045,534.5872 334.335,571.9842 " fill="none" id="import_tool-to-marcus" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="330.892,579.6912,336.895,573.6114,331.4171,571.1634,330.892,579.6912" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="49" x="372.25" y="499.8008">Imports</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="373.75" y="513.9336">[HTTPS]</text><!--MD5=[ce03490f95923a2a4bf4a1a880a51bb0] link import_tool to marcus--><path d="M394.025,438.3932 C375.481,479.8962 351.045,534.5872 334.335,571.9842 " fill="none" id="import_tool-to-marcus" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="330.892,579.6912,336.895,573.6114,331.4171,571.1634,330.892,579.6912" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="49" x="372.25" y="499.8008">Imports</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="373.75" y="513.9336">[HTTPS]</text><!--MD5=[ce03490f95923a2a4bf4a1a880a51bb0]
link import_tool to kulturnav--><path d="M437.983,438.3932 C450.522,479.8962 467.046,534.5872 478.345,571.9842 " fill="none" id="import_tool-to-kulturnav" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="480.673,579.6912,481.2321,571.1655,475.4883,572.9001,480.673,579.6912" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="49" x="463.25" y="499.8008">Imports</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="464.75" y="513.9336">[HTTPS]</text><!--MD5=[72e6538a4afd9ff6e5f89c0cb2220dab] link import_tool to kulturnav--><path d="M437.983,438.3932 C450.522,479.8962 467.046,534.5872 478.345,571.9842 " fill="none" id="import_tool-to-kulturnav" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="480.673,579.6912,481.2321,571.1655,475.4883,572.9001,480.673,579.6912" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="49" x="463.25" y="499.8008">Imports</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="464.75" y="513.9336">[HTTPS]</text><!--MD5=[72e6538a4afd9ff6e5f89c0cb2220dab]
link import_tool to nb--><path d="M481.941,438.3932 C526.294,480.5912 584.975,536.4222 624.312,573.8472 " fill="none" id="import_tool-to-nb" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="630.454,579.6912,626.7261,572.0034,622.5903,576.3503,630.454,579.6912" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="49" x="566.25" y="499.8008">Imports</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="567.75" y="513.9336">[HTTPS]</text><!--MD5=[8d00e1f70b11306d90ba31f906661b1d] link import_tool to nb--><path d="M481.941,438.3932 C526.294,480.5912 584.975,536.4222 624.312,573.8472 " fill="none" id="import_tool-to-nb" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="630.454,579.6912,626.7261,572.0034,622.5903,576.3503,630.454,579.6912" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="49" x="566.25" y="499.8008">Imports</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="567.75" y="513.9336">[HTTPS]</text><!--MD5=[8d00e1f70b11306d90ba31f906661b1d]
reverse link sanity_db to spa--><path d="M414.281,99.6992 C449.63,99.6992 488.779,99.6992 523.929,99.6992 " fill="none" id="sanity_db-backto-spa" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="405.856,99.6992,413.856,102.6992,413.856,96.6992,405.856,99.6992" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="30" x="449" y="78.3008">Uses</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="80" x="424" y="92.4336">[JSON/HTTPS]</text><!--MD5=[b20751f21bc3c5e56073fe913b5ac5ab] reverse link sanity_db to spa--><path d="M418.161,99.6992 C453.464,99.6992 492.454,99.6992 527.163,99.6992 " fill="none" id="sanity_db-backto-spa" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="409.746,99.6992,417.746,102.6992,417.746,96.6992,409.746,99.6992" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="30" x="452.75" y="78.3008">Uses</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="80" x="427.75" y="92.4336">[JSON/HTTPS]</text><!--MD5=[b20751f21bc3c5e56073fe913b5ac5ab]
link spa to api--><path d="M615.405,159.4442 C605.2915,199.4642 591.7723,252.9615 580.6498,296.9745 C577.8691,307.9777 575.2383,318.3882 572.8479,327.8471 C571.6527,332.5766 570.5177,337.0682 569.4541,341.2771 C569.1882,342.3293 568.9267,343.3638 568.6699,344.38 C568.5415,344.8881 568.4143,345.3916 568.2882,345.8904 " fill="none" id="spa-to-api" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="568.2882,345.8904,573.1569,338.8692,567.3397,337.3992,568.2882,345.8904" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="30" x="629.25" y="215.8008">Uses</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="80" x="604.25" y="229.9336">[JSON/HTTPS]</text><!--MD5=[0b4537366c46ce983a36229d7d90ca4d] link spa to api--><path d="M613.829,159.4442 C604.0045,199.4642 590.8715,252.9615 580.0668,296.9745 C577.3656,307.9777 574.8099,318.3882 572.4878,327.8471 C571.3268,332.5766 570.2241,337.0682 569.1909,341.2771 C568.9326,342.3293 568.6786,343.3638 568.4291,344.38 " fill="none" id="spa-to-api" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="568.4291,344.38,573.2499,337.3259,567.423,335.8954,568.4291,344.38" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="30" x="628.25" y="215.8008">Uses</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="80" x="603.25" y="229.9336">[JSON/HTTPS]</text><!--MD5=[0b4537366c46ce983a36229d7d90ca4d]
link sign to auth--><path d="M164.893,429.8242 C155.025,462.0322 142.032,504.4402 130.979,540.5142 " fill="none" id="sign-to-auth" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="128.507,548.5832,133.7181,541.8124,127.9812,540.0554,128.507,548.5832" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="30" x="173.25" y="499.8008">Uses</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="80" x="148.25" y="513.9336">[JSON/HTTPS]</text><rect fill="#FFFFFF" height="162.3945" rx="5" ry="5" style="stroke:#FFFFFF;stroke-width:1.0;" width="159" x="563" y="695.6523"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="51" x="569" y="716.1875">Legend</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="624" y="716.1875"/><rect fill="#08427B" height="16.4883" style="stroke:none;stroke-width:1.0;" width="147" x="569" y="719.1406"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="48" x="573" y="732.6758">person</text><rect fill="#1168BD" height="16.4883" style="stroke:none;stroke-width:1.0;" width="147" x="569" y="735.6289"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="47" x="573" y="749.1641">system</text><rect fill="#438DD5" height="16.4883" style="stroke:none;stroke-width:1.0;" width="147" x="569" y="752.1172"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="65" x="573" y="765.6523">container</text><rect fill="#85BBF0" height="16.4883" style="stroke:none;stroke-width:1.0;" width="147" x="569" y="768.6055"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="78" x="573" y="782.1406">component</text><rect fill="#686868" height="16.4883" style="stroke:none;stroke-width:1.0;" width="147" x="569" y="785.0938"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="109" x="573" y="798.6289">external person</text><rect fill="#999999" height="16.4883" style="stroke:none;stroke-width:1.0;" width="147" x="569" y="801.582"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="108" x="573" y="815.1172">external system</text><rect fill="#B3B3B3" height="16.4883" style="stroke:none;stroke-width:1.0;" width="147" x="569" y="818.0703"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="126" x="573" y="831.6055">external container</text><rect fill="#CCCCCC" height="16.4883" style="stroke:none;stroke-width:1.0;" width="147" x="569" y="834.5586"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="139" x="573" y="848.0938">external component</text><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="702.6523" y2="702.6523"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="719.1406" y2="719.1406"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="735.6289" y2="735.6289"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="752.1172" y2="752.1172"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="768.6055" y2="768.6055"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="785.0938" y2="785.0938"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="801.582" y2="801.582"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="818.0703" y2="818.0703"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="834.5586" y2="834.5586"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="851.0469" y2="851.0469"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="569" y1="702.6523" y2="851.0469"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="716" x2="716" y1="702.6523" y2="851.0469"/><!--MD5=[837d8a057417fe834cac17aab717181c] link sign to auth--><path d="M164.893,429.8242 C155.025,462.0322 142.032,504.4402 130.979,540.5142 " fill="none" id="sign-to-auth" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="128.507,548.5832,133.7181,541.8124,127.9812,540.0554,128.507,548.5832" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="30" x="173.25" y="499.8008">Uses</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="80" x="148.25" y="513.9336">[JSON/HTTPS]</text><rect fill="#FFFFFF" height="162.3945" rx="5" ry="5" style="stroke:#FFFFFF;stroke-width:1.0;" width="159" x="563" y="695.6523"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="51" x="569" y="716.1875">Legend</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="624" y="716.1875"/><rect fill="#08427B" height="16.4883" style="stroke:none;stroke-width:1.0;" width="147" x="569" y="719.1406"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="48" x="573" y="732.6758">person</text><rect fill="#1168BD" height="16.4883" style="stroke:none;stroke-width:1.0;" width="147" x="569" y="735.6289"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="47" x="573" y="749.1641">system</text><rect fill="#438DD5" height="16.4883" style="stroke:none;stroke-width:1.0;" width="147" x="569" y="752.1172"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="65" x="573" y="765.6523">container</text><rect fill="#85BBF0" height="16.4883" style="stroke:none;stroke-width:1.0;" width="147" x="569" y="768.6055"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="78" x="573" y="782.1406">component</text><rect fill="#686868" height="16.4883" style="stroke:none;stroke-width:1.0;" width="147" x="569" y="785.0938"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="109" x="573" y="798.6289">external person</text><rect fill="#999999" height="16.4883" style="stroke:none;stroke-width:1.0;" width="147" x="569" y="801.582"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="108" x="573" y="815.1172">external system</text><rect fill="#B3B3B3" height="16.4883" style="stroke:none;stroke-width:1.0;" width="147" x="569" y="818.0703"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="126" x="573" y="831.6055">external container</text><rect fill="#CCCCCC" height="16.4883" style="stroke:none;stroke-width:1.0;" width="147" x="569" y="834.5586"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="139" x="573" y="848.0938">external component</text><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="702.6523" y2="702.6523"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="719.1406" y2="719.1406"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="735.6289" y2="735.6289"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="752.1172" y2="752.1172"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="768.6055" y2="768.6055"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="785.0938" y2="785.0938"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="801.582" y2="801.582"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="818.0703" y2="818.0703"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="834.5586" y2="834.5586"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="716" y1="851.0469" y2="851.0469"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="569" x2="569" y1="702.6523" y2="851.0469"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="716" x2="716" y1="702.6523" y2="851.0469"/><!--MD5=[fad32fe7eff3261b3d1a5eb3a35bfab4]
@startuml "component_studio" @startuml "component_studio"
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml
' uncomment the following line and comment the first to use locally ' uncomment the following line and comment the first to use locally
...@@ -34,7 +34,7 @@ LAYOUT_WITH_LEGEND() ...@@ -34,7 +34,7 @@ LAYOUT_WITH_LEGEND()
title Component diagram for Sanity Studio title Component diagram for Sanity Studio
Container(spa, "Single Page Application", "Javascript and React", "Provides all editing functionality to editors via their web browser.") Container(spa, "Sanity Studio SPA", "Javascript and React", "Provides all editing functionality to editors via their web browser.")
ContainerDb_Ext(sanity_db, "Sanity Cloud Storage", "Google Cloud", "Stores metadata and files.", "SANITY") ContainerDb_Ext(sanity_db, "Sanity Cloud Storage", "Google Cloud", "Stores metadata and files.", "SANITY")
Container_Ext(auth, "Google Authentication", "Google Cloud", "Authenticates editors.", "google_cloud_platform") Container_Ext(auth, "Google Authentication", "Google Cloud", "Authenticates editors.", "google_cloud_platform")
...@@ -727,7 +727,7 @@ endlegend ...@@ -727,7 +727,7 @@ endlegend
title Component diagram for Sanity Studio title Component diagram for Sanity Studio
rectangle "==Single Page Application\n//<size:12>[Javascript and React]</size>//\n\n Provides all editing functionality to editors via their web browser." <<container>> as spa rectangle "==Sanity Studio SPA\n//<size:12>[Javascript and React]</size>//\n\n Provides all editing functionality to editors via their web browser." <<container>> as spa
database "<img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAACeklEQVRoQ+2ZQU5bQQyGPe8hVWkT0mOgqlUldskNkos06aaLwIojlGzbHgTBCYA1C9hwiUYEWkQSI0cMekomE9vjlwBK1jO2P//2eObFwRv5uTfCARuQl6bkRpGQIje9DnKVogxW+3/MEmliSAIQAq0ZACWBpAIUoTLn4MPhb3U86o2WEEUgrToqkLIgPJAGRgwyaDUw+/SV29PqdVIYMcjfVgNzBkgokGHvGyJzBq8dhBMAtzQ5trzkIkVIjenGLIN858tc2Ugc0+ZlQBJ7OhAAmC0viVOfgX/733E0mUT7iGtXDULePYxzDqrKGWClShIITMaQf94FbtbURxhjYxrIk4OPJ+ciO4y4xEtEATw3e8BN7hzUjs9E9sTRRjaIHMdAij7WoZAIhILlwniwSp7Bu6NTsR+pWmIHUpBQQOS0btxXYhCNKrHs0vV926C3VCB0cWQ/BQU1ktJbKhCKrSwYBw7qJ/LTTw3iE23RM7OiaXooGcQHMWg3EQ0LzjmA+jF/0JqBzGZ10GoiQlonSXqmNJA5sHZDJRgXZmUgWsVePEgRLHZgvCqQ2JB9VSC3vS5OAGF8dTE3Ps1BrF5yoUFftF29voTBw+h52cpB6D3y3ui5W1Rm5SCUQs2TN6R0qSAU6LLyksLc7XVxHLgNUEL8SWauCBfEF3dMnWGvu3TqkypcCPIpHogcVQQ394VLSweRKqOFkvabWBEKbLjfQYx/INTGP90nhVCVVjHCMspMA5EMQgbw4AcO/98nKTANxAFUD/V/jqpKa9l0llBtZRlUfv5KjiPZwKKg41/aHdT6+j8+Qz5LA5GoYrF2A2KRRUsbG0Uss2lh6xFkswBC9e0BzQAAAABJRU5ErkJggg==>\n==Sanity Cloud Storage\n//<size:12>[Google Cloud]</size>//\n\n Stores metadata and files." <<external_container>> as sanity_db database "<img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAACeklEQVRoQ+2ZQU5bQQyGPe8hVWkT0mOgqlUldskNkos06aaLwIojlGzbHgTBCYA1C9hwiUYEWkQSI0cMekomE9vjlwBK1jO2P//2eObFwRv5uTfCARuQl6bkRpGQIje9DnKVogxW+3/MEmliSAIQAq0ZACWBpAIUoTLn4MPhb3U86o2WEEUgrToqkLIgPJAGRgwyaDUw+/SV29PqdVIYMcjfVgNzBkgokGHvGyJzBq8dhBMAtzQ5trzkIkVIjenGLIN858tc2Ugc0+ZlQBJ7OhAAmC0viVOfgX/733E0mUT7iGtXDULePYxzDqrKGWClShIITMaQf94FbtbURxhjYxrIk4OPJ+ciO4y4xEtEATw3e8BN7hzUjs9E9sTRRjaIHMdAij7WoZAIhILlwniwSp7Bu6NTsR+pWmIHUpBQQOS0btxXYhCNKrHs0vV926C3VCB0cWQ/BQU1ktJbKhCKrSwYBw7qJ/LTTw3iE23RM7OiaXooGcQHMWg3EQ0LzjmA+jF/0JqBzGZ10GoiQlonSXqmNJA5sHZDJRgXZmUgWsVePEgRLHZgvCqQ2JB9VSC3vS5OAGF8dTE3Ps1BrF5yoUFftF29voTBw+h52cpB6D3y3ui5W1Rm5SCUQs2TN6R0qSAU6LLyksLc7XVxHLgNUEL8SWauCBfEF3dMnWGvu3TqkypcCPIpHogcVQQ394VLSweRKqOFkvabWBEKbLjfQYx/INTGP90nhVCVVjHCMspMA5EMQgbw4AcO/98nKTANxAFUD/V/jqpKa9l0llBtZRlUfv5KjiPZwKKg41/aHdT6+j8+Qz5LA5GoYrF2A2KRRUsbG0Uss2lh6xFkswBC9e0BzQAAAABJRU5ErkJggg==>\n==Sanity Cloud Storage\n//<size:12>[Google Cloud]</size>//\n\n Stores metadata and files." <<external_container>> as sanity_db
rectangle "<$google_cloud_platform>\n==Google Authentication\n//<size:12>[Google Cloud]</size>//\n\n Authenticates editors." <<external_container>> as auth rectangle "<$google_cloud_platform>\n==Google Authentication\n//<size:12>[Google Cloud]</size>//\n\n Authenticates editors." <<external_container>> as auth
......
<?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="850px" preserveAspectRatio="none" style="width:755px;height:850px;background:#FFFFFF;" version="1.1" viewBox="0 0 755 850" width="755px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacing" textLength="350" x="196" y="17.4023">Container diagram for Vercel Dashboard</text><!--MD5=[84dda40acb3410cad7262261daba2aaf]
cluster c1--><rect fill="#FFFFFF" height="254" style="stroke:#444444;stroke-width:1.0;stroke-dasharray:7.0,7.0;" width="240" x="213" y="240.1992"/><text fill="#444444" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="110" x="278" y="257.668">Vercel Admin</text><text fill="#444444" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="48" x="309" y="272.6445">[System]</text><!--MD5=[a79645e74fdddf168a098e501fbfe8e0]
cluster c2--><rect fill="#FFFFFF" height="254" style="stroke:#444444;stroke-width:1.0;stroke-dasharray:7.0,7.0;" width="240" x="509" y="240.1992"/><text fill="#444444" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="154" x="552" y="257.668">Vercel Deployment</text><text fill="#444444" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="48" x="605" y="272.6445">[System]</text><!--MD5=[4b4aa12fd50f56bd13a7a0170aaccc36]
entity dashboard--><rect fill="#B3B3B3" height="185.418" style="stroke:#A6A6A6;stroke-width:1.5;" width="207" x="229.75" y="292.6992"/><image height="50" width="50" x="308.25" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABEklEQVR4Xt3USwqDQBRE0dYtK7gk0UVqMKNQl6R/rweVgjO5MWoIdEop3X8CwRWCKwRXCK4QXCG4QnCF4ArBFYIrBFcIrhBcIbhCCPXsui70ARDCzPP8/iHP9LMBEMLo9PNgCCGWZdHfcU/ThOsCIYT4Nr0uEEK3X9v3HdcHQeiWm14fBKFLyQYdxwjNPo/b3PS7ARCa1U6/3wmhybqu+p7ZBR/HCE1ap/fpgFCtZ8dx4H6NEKr1Tu/XCKFKxIKOY4RiNcdtbnrvBgjFoqf3r4RQZNs2fY/uPf+wPqcCQpFR0+dUQMgaufM88bxCCFmjp88rhOAKwRWCKwRXCK4QXCG4QnCF4ArBFYIrBFcIrhAsvQD7l+LtBB33mgAAAABJRU5ErkJggg==" y="302.6992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="151" x="257.75" y="368.168">Project Dashboard</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="35" x="315.75" y="383.1445">[Next]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="335.25" y="399.2109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="179" x="243.75" y="415.6992">Allows administrators and</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="143" x="259.75" y="432.1875">developers to deploy</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="178" x="242.25" y="448.6758">frontend projects from git</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="86" x="290.25" y="465.1641">repositories.</text><!--MD5=[dd82451e1dd92fe3da01853750f49ff6]
entity server--><rect fill="#B3B3B3" height="185.418" style="stroke:#A6A6A6;stroke-width:1.5;" width="207" x="525.75" y="292.6992"/><image height="50" width="50" x="604.25" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABEklEQVR4Xt3USwqDQBRE0dYtK7gk0UVqMKNQl6R/rweVgjO5MWoIdEop3X8CwRWCKwRXCK4QXCG4QnCF4ArBFYIrBFcIrhBcIbhCCPXsui70ARDCzPP8/iHP9LMBEMLo9PNgCCGWZdHfcU/ThOsCIYT4Nr0uEEK3X9v3HdcHQeiWm14fBKFLyQYdxwjNPo/b3PS7ARCa1U6/3wmhybqu+p7ZBR/HCE1ap/fpgFCtZ8dx4H6NEKr1Tu/XCKFKxIKOY4RiNcdtbnrvBgjFoqf3r4RQZNs2fY/uPf+wPqcCQpFR0+dUQMgaufM88bxCCFmjp88rhOAKwRWCKwRXCK4QXCG4QnCF4ArBFYIrBFcIrhAsvQD7l+LtBB33mgAAAABJRU5ErkJggg==" y="302.6992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="89" x="584.75" y="368.168">Web server</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="35" x="611.75" y="383.1445">[Next]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="631.25" y="399.2109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="179" x="539.75" y="415.6992">Allows administrators and</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="143" x="555.75" y="432.1875">developers to deploy</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="178" x="538.25" y="448.6758">frontend projects from git</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="86" x="586.25" y="465.1641">repositories.</text><!--MD5=[79a439086b036a57b90a01d7b2f8bbd1]
entity admin--><rect fill="#08427B" height="119.8203" style="stroke:#073B6F;stroke-width:1.5;" width="143" x="167.75" y="572.1992"/><image height="48" width="48" x="215.25" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=" y="582.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="123" x="177.75" y="645.668">Administration</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="241.25" y="662.5781"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="111" x="185.75" y="679.0664">Controls access.</text><!--MD5=[23e4898078453906b079a6bea7d1245c]
entity developer--><rect fill="#08427B" height="119.8203" style="stroke:#073B6F;stroke-width:1.5;" width="164" x="346" y="572.1992"/><image height="48" width="48" x="404" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=" y="582.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="82" x="387" y="645.668">Developer</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="430" y="662.5781"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="140" x="360" y="679.0664">Develops the Studio.</text><!--MD5=[e29493a8775effcafa538aa0485107d1]
entity auth--><rect fill="#B3B3B3" height="133.9531" style="stroke:#A6A6A6;stroke-width:1.5;" width="202" x="232" y="28.1992"/><image height="48" width="48" x="309" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB5ElEQVR4Xu2YsZLCMAxE+f/fUXMNDQ0NDQ1NmjQ0NGloqLgde86ElWQrYZhkbvIqJsjrjWUpTnayMnZ8YWk2Qy02Qy3+haGfMDwywARDx+Pxfr8/J4Ihh8OBtXyihvb7PU81BQxnRYeoodvtlqUvl8vj8XifzgZhCM6/MZwVHUKGkKwyB+51GIbXtD4IQ3BxDxHWtQgZmrF1NBBhXYu2obLsnwMpVlc0DKF0WTXR9/25CgJ4TKLZCxqGTN3g4puJhiDHvVMzhP7Beong9iylQNTbUs2QWU3X65XjfBDM41P1cdwI19DpdGKlRLzFid9OIc6hf7iGzO7XdR2FYUpcHBL4oe3iIqukfkZhBdtQUMXcJXqHmffmtQDDkFfqtM5eOp4qrV72zRZgGAruRLMjZHRmzfowW4BhKEfDFvpbGaxr1Zwjo92POwhky6OawmQpQyUJFCamodWlzNuti21qCZe9OZNuembZ61XM2IYkrILFwMp/vTGKc/dPlY46wZY2xjUkzk5c7OEq/vFDtwCTecNrhmTWLRbMBTZLfUzDkLcJFjvCytoO+RnzdDyV4Ek8ZKi0gLW8KMraXqWl+uSKEG+nUUPyweeYYLIyEwwVXh+k3tF/8cgAcwx9lc1Qi81Qi81Qi18VHxRxhtGvjgAAAABJRU5ErkJggg==" y="38.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="182" x="242" y="101.668">Github Authentication</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="83" x="291.5" y="116.6445">[Github Cloud]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="335" y="132.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="150" x="260" y="149.1992">Authenticates editors.</text><!--MD5=[bcd189191dd048efcc07afd9488ba005]
entity git_repo--><rect fill="#B3B3B3" height="133.9531" style="stroke:#A6A6A6;stroke-width:1.5;" width="138" x="7" y="318.1992"/><image height="48" width="48" x="52" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB5ElEQVR4Xu2YsZLCMAxE+f/fUXMNDQ0NDQ1NmjQ0NGloqLgde86ElWQrYZhkbvIqJsjrjWUpTnayMnZ8YWk2Qy02Qy3+haGfMDwywARDx+Pxfr8/J4Ihh8OBtXyihvb7PU81BQxnRYeoodvtlqUvl8vj8XifzgZhCM6/MZwVHUKGkKwyB+51GIbXtD4IQ3BxDxHWtQgZmrF1NBBhXYu2obLsnwMpVlc0DKF0WTXR9/25CgJ4TKLZCxqGTN3g4puJhiDHvVMzhP7Beong9iylQNTbUs2QWU3X65XjfBDM41P1cdwI19DpdGKlRLzFid9OIc6hf7iGzO7XdR2FYUpcHBL4oe3iIqukfkZhBdtQUMXcJXqHmffmtQDDkFfqtM5eOp4qrV72zRZgGAruRLMjZHRmzfowW4BhKEfDFvpbGaxr1Zwjo92POwhky6OawmQpQyUJFCamodWlzNuti21qCZe9OZNuembZ61XM2IYkrILFwMp/vTGKc/dPlY46wZY2xjUkzk5c7OEq/vFDtwCTecNrhmTWLRbMBTZLfUzDkLcJFjvCytoO+RnzdDyV4Ek8ZKi0gLW8KMraXqWl+uSKEG+nUUPyweeYYLIyEwwVXh+k3tF/8cgAcwx9lc1Qi81Qi81Qi18VHxRxhtGvjgAAAABJRU5ErkJggg==" y="328.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="111" x="20.5" y="391.668">Git repository</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="83" x="34.5" y="406.6445">[Github Cloud]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="78" y="422.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="114" x="21" y="439.1992">Code repository.</text><!--MD5=[35ee249fff0eb2c1cd6c8ea3a63c94cb]
reverse link auth to dashboard--><path d="M333,170.5692 C333,207.7822 333,253.1672 333,292.5182 " fill="none" id="auth-backto-dashboard" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="333,162.2722,330,170.2722,336,170.2722,333,162.2722" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="86" x="334" y="205.3008">Authenticates</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="354" y="219.4336">[HTTPS]</text><!--MD5=[752931a84a516b81255b2954289818a3]
reverse link git_repo to dashboard--><path d="M153.212,385.1992 C177.149,385.1992 203.927,385.1992 229.355,385.1992 " fill="none" id="git_repo-backto-dashboard" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="145.209,385.1992,153.209,388.1992,153.209,382.1992,145.209,385.1992" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="47" x="163.25" y="363.8008">Fetches</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="163.75" y="377.9336">[HTTPS]</text><!--MD5=[b51ab623079f381b217925c60ea3f282]
link dashboard to server--><path d="M436.526,385.1992 C462.664,385.1992 490.842,385.1992 517.36,385.1992 " fill="none" id="dashboard-to-server" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="525.532,385.1992,517.532,382.1992,517.532,388.1992,525.532,385.1992" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="51" x="454.75" y="363.8008">Deploys</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="457.25" y="377.9336">[HTTPS]</text><!--MD5=[a74efa26db59d5cf057c02d3fc5bf70c]
reverse link dashboard to admin--><path d="M294.866,485.5902 C283.613,514.9202 271.656,546.0842 261.704,572.0232 " fill="none" id="dashboard-backto-admin" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="297.864,477.7762,292.1966,484.17,297.7981,486.32,297.864,477.7762" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="30" x="293" y="523.3008">Uses</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="285" y="537.4336">[HTTPS]</text><!--MD5=[d10d983b31049e3ae9afcf20543e8c9f]
reverse link dashboard to developer--><path d="M371.539,485.5902 C382.912,514.9202 394.996,546.0842 405.054,572.0232 " fill="none" id="dashboard-backto-developer" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="368.51,477.7762,368.6059,486.3197,374.1999,484.15,368.51,477.7762" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="30" x="401" y="523.3008">Uses</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="393" y="537.4336">[HTTPS]</text><rect fill="#FFFFFF" height="129.418" rx="5" ry="5" style="stroke:#FFFFFF;stroke-width:1.0;" width="146" x="587" y="705.0195"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="51" x="593" y="725.5547">Legend</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="648" y="725.5547"/><rect fill="#08427B" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="593" y="728.5078"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="48" x="597" y="742.043">person</text><rect fill="#1168BD" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="593" y="744.9961"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="47" x="597" y="758.5313">system</text><rect fill="#438DD5" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="593" y="761.4844"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="65" x="597" y="775.0195">container</text><rect fill="#686868" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="593" y="777.9727"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="109" x="597" y="791.5078">external person</text><rect fill="#999999" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="593" y="794.4609"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="108" x="597" y="807.9961">external system</text><rect fill="#B3B3B3" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="593" y="810.9492"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="126" x="597" y="824.4844">external container</text><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="593" x2="727" y1="712.0195" y2="712.0195"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="593" x2="727" y1="728.5078" y2="728.5078"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="593" x2="727" y1="744.9961" y2="744.9961"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="593" x2="727" y1="761.4844" y2="761.4844"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="593" x2="727" y1="777.9727" y2="777.9727"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="593" x2="727" y1="794.4609" y2="794.4609"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="593" x2="727" y1="810.9492" y2="810.9492"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="593" x2="727" y1="827.4375" y2="827.4375"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="593" x2="593" y1="712.0195" y2="827.4375"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="727" x2="727" y1="712.0195" y2="827.4375"/><!--MD5=[0d60cc25ee4313941d5a9c2182fdabdc]
@startuml "container_vercel"
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
' uncomment the following line and comment the first to use locally
' !include C4_Container.puml
!define NREC_LOGO img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAfCAYAAAClDZ5ZAAAAAXNSR0IArs4c6QAAAXZJREFUWEfV1+sNgyAQAGDYpXs4UJt0FpN2H52j7kJzVCwPgTs4iPRvVfi8F0pR8ltXlb1tmmT2GsYLaIthAP7mOoHwkBKEQXXA4CA1iE6YPIQD0QGThsQQkCqcQAZoOQQWb4GB5xbUVB3kQpg4JPW2p0ne7rPa3s/f/ZTIUNKSEJkqCNz8AQwVgsX3gsB+yFGxN4d5AUhMVURMsyFhIC0fs9peyLTsCSFFZocIlYgmcvP2aYglIqTIWBDnBUQOkNBU7L+O6HvXhxBk3voLoDEexGBiz4sdkH2QC8Eg9oEVXVgKofM/cSqAGoHUqv3ZmD8Ei8hBcp3sJCI1IIOhDzQEJFn8zBCzVjNIFNMMQkkp65SKLc5gxjSAwLby3yPItpjKc41ZFiWk1CdbrmJ35gj2zXIUpO5kI0P8wTdsRPxhOTzkmOJMA7F7jQT1BS2GYbLbkdZdq0fB1zSL3L3QFYeHuEeUgaMSQEZLsfQxfk/Gq9fM2cfVF6rBHOmyKLuMAAAAAElFTkSuQmCC
!define SANITY img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAACeklEQVRoQ+2ZQU5bQQyGPe8hVWkT0mOgqlUldskNkos06aaLwIojlGzbHgTBCYA1C9hwiUYEWkQSI0cMekomE9vjlwBK1jO2P//2eObFwRv5uTfCARuQl6bkRpGQIje9DnKVogxW+3/MEmliSAIQAq0ZACWBpAIUoTLn4MPhb3U86o2WEEUgrToqkLIgPJAGRgwyaDUw+/SV29PqdVIYMcjfVgNzBkgokGHvGyJzBq8dhBMAtzQ5trzkIkVIjenGLIN858tc2Ugc0+ZlQBJ7OhAAmC0viVOfgX/733E0mUT7iGtXDULePYxzDqrKGWClShIITMaQf94FbtbURxhjYxrIk4OPJ+ciO4y4xEtEATw3e8BN7hzUjs9E9sTRRjaIHMdAij7WoZAIhILlwniwSp7Bu6NTsR+pWmIHUpBQQOS0btxXYhCNKrHs0vV926C3VCB0cWQ/BQU1ktJbKhCKrSwYBw7qJ/LTTw3iE23RM7OiaXooGcQHMWg3EQ0LzjmA+jF/0JqBzGZ10GoiQlonSXqmNJA5sHZDJRgXZmUgWsVePEgRLHZgvCqQ2JB9VSC3vS5OAGF8dTE3Ps1BrF5yoUFftF29voTBw+h52cpB6D3y3ui5W1Rm5SCUQs2TN6R0qSAU6LLyksLc7XVxHLgNUEL8SWauCBfEF3dMnWGvu3TqkypcCPIpHogcVQQ394VLSweRKqOFkvabWBEKbLjfQYx/INTGP90nhVCVVjHCMspMA5EMQgbw4AcO/98nKTANxAFUD/V/jqpKa9l0llBtZRlUfv5KjiPZwKKg41/aHdT6+j8+Qz5LA5GoYrF2A2KRRUsbG0Uss2lh6xFkswBC9e0BzQAAAABJRU5ErkJggg==
!define VERCEL img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABU0lEQVRoQ+2ZWwqDMBBFR92j4joU3IKgCxFdo6akoNjSVmcyNxWZgF+dPM49yfw0ISJHNxiJgVzMohm5mBAyI2YElIBdLVCw4mXNiDg60EQzAgpWvKwZORudc478l6bp2SmiOqgRf/h5np8HSxK/FW5AQbyJ/UDCwECqqqK+719AvKF3OC1HMJBvB0ZZgYD8Sn0YBirLUkvEtk50ENTDVwc58wYQ7VgVZN9uj+6O9ltRBTljA9WO1UDquqau645EwNqxGgjXxkqkdcVUQKQQHmYcRyqKgmXyU/HfQbTacTBIiI01WY12HATCabdHdyf0rQSBaNjQasdikKZpqG3bo6BZv2dZRsuysOZs3U/6/4i2jdB2LDKCgvAw0zRRnudsK5cDkbZjEQg7rggTDCRCyKwtzAgrrgjFZiRCyKwtzAgrrgjFZiRCyKwtzAgrrgjFtzHyAKakjAEBm5CuAAAAAElFTkSuQmCC
!define NEXT img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABm0lEQVRoQ92Z25LDMAhDt///0dtJpu4kDhgBimPaZ0x0LPCtrz/+7x9I+QJiXCGshIj4kbC0jkyCrHgNLKQpMugugCOYW5d3wAyIEBAKMhvADYOAPAkBA1kgq0A0IFXvCGQ1iCGMBrIqxAYjaq4IIsJIICu7oTZ/D1IF4uJKZZATzBGkkhuXEnsahPH9PUdLlHEjIyYz9rSv/ALIbggbZEvqcZfhyG0gHhgqiGcGpVtdZlNdHgR1hQWyr1p3ONKcs3IvC7IJ94jzxA6fh9iONAdQgWic+cY1A2TUL8uD9KdTrVdKgCAwJUGkEisDYrlSCgSFsfac4SM4+9CINLVWYiVAEFfKgFgw5qanBJxuiOghzzr9IrNKa/CPmN8FiboSWTBYrnzz9JcipDSitdyPY8CoIFFXInBZkJMJmWtqRDzLlYtuCWSmK9ElGQZ5CgbpUXHyNUfQOzejvDyuqHotkJnOWM0/1IqAPAHTl5ip0ww41A5Sv4xSO26wsD44cCJQRJP8Dyk4rXc5NB2EvbKFAJqI1GDBOY9L1G+/AToZcCqjfA/hAAAAAElFTkSuQmCC
!define GITHUB img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAACZElEQVRoQ+2YzUpCURDHJ/AZJNBcSJJIubBoUSs3iZCvEO0qyTfwI30Hoy8JcxFucivUE0RPIRYhIgjuXBhXuGCXe87MnHO4qFx3cubMf37zn+Px3o3ZbDaDNfhs+CBL5qLvyJIZAr4ja+1Ir9eDw4MDEuPvYECKowYZGa3NYJCq5xpnAkoLRBfASaUDpATy3e/Dfiql5YJosyoMG8S0C25AT40GnOZyrEaxQLyAsKs/yWTgpdUiw5BBvISwq6/c3MBVPk+C0QKx5rlSLsP93R1JTBT03GxCNpsFt2ZRzwwJROSGU4TrGnU/BQYFkRVHEeBYJdLaSybh/eNDmkoZJJ1Ow2u7zakTjdVpmhQEGxWvHLE6gGmtDAgGowyCdQidI0GA6ngpgVwXClAslVRrle4zDqKa0ASdSPvi8hKqtZqrhNCRZQSRnRMfxMQIiXKoTIPvyMo4sptIwHA4FNa7FvcIdsvquKVyPiw9pQvRLtS0Kzr/7bRATDqDQWBaUpDRaASJeBydFB1nxuMx7MRi2hrs5xG7aFkH3zodODo+di2uVCzC48MDWrgzAGsWCmIldBaNwWCilDFaBMHyoYfdTuYU/vz6gkgkMl92rvV/fiAQCEg7vhUKwXQ6JbtiDETkivXGMRQOw/nZGXS7XfQpbrFyqisUCLIjImeoIm6tp4Bw8pPOiKyTHDGOI9y8bBC3MeMeTFM5FnWVQGSFUDtJfelH/UVQBrEEJpMJbEej/7RUQaj7RGBaIHbS23odatXq/Cu1INsRajzmjBEQTMSLdR/Eiy5zNHxHON3yItZ3xIsuczT+ANqRwHq+fLT7AAAAAElFTkSuQmCC
!define DEVICONS https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/devicons
' uncomment the following line and comment the first to use locally
' !include C4_Container.puml
!include DEVICONS/google_cloud_platform.puml
LAYOUT_TOP_DOWN()
'LAYOUT_AS_SKETCH()
LAYOUT_WITH_LEGEND()
title Container diagram for Vercel Dashboard
Person(admin, "Administration", "Controls access.")
Person(developer, "Developer", "Develops the Studio.")
System_Boundary(c1, "Vercel Admin", "Cloud platform"){
Container_Ext(dashboard, "Project Dashboard", "Next", "Allows administrators and developers to deploy frontend projects from git repositories.", VERCEL)
}
System_Boundary(c2, "Vercel Deployment", "Cloud platform"){
Container_Ext(server, "Web server", "Next", "Allows administrators and developers to deploy frontend projects from git repositories.", VERCEL)
}
'ContainerDb_Ext(sanity_db, "Sanity Cloud Storage", "Google Cloud", "Stores metadata and files.", "SANITY")
Container_Ext(auth, "Github Authentication", "Github Cloud", "Authenticates editors.", "google_cloud_platform")
Container_Ext(git_repo, "Git repository", "Github Cloud", "Code repository.", "google_cloud_platform", GITHUB)
Rel_U(dashboard, auth, "Authenticates", "HTTPS")
Rel_L(dashboard, git_repo, "Fetches", "HTTPS")
Rel_R(dashboard, server, "Deploys", "HTTPS")
Rel_U(admin, dashboard, "Uses", "HTTPS")
Rel_U(developer, dashboard, "Uses", "HTTPS")
'Rel_R(studio, sanity_db, "Reads from and writes to", "HTTPS")
@enduml
@startuml "container_vercel"
skinparam defaultTextAlignment center
skinparam wrapWidth 200
skinparam maxMessageSize 150
skinparam LegendBorderColor transparent
skinparam LegendBackgroundColor transparent
skinparam LegendFontColor #FFFFFF
skinparam shadowing<<legendArea>> false
skinparam rectangle<<legendArea>> {
backgroundcolor #00000000
bordercolor #00000000
}
skinparam rectangle {
StereotypeFontSize 12
shadowing false
}
skinparam database {
StereotypeFontSize 12
shadowing false
}
skinparam queue {
StereotypeFontSize 12
shadowing false
}
skinparam arrow {
Color #666666
FontColor #666666
FontSize 12
}
skinparam actor {
StereotypeFontSize 12
shadowing false
style awesome
}
skinparam person {
StereotypeFontSize 12
shadowing false
}
skinparam package {
StereotypeFontSize 6
StereotypeFontColor transparent
FontStyle plain
BackgroundColor transparent
}
skinparam rectangle<<boundary>> {
Shadowing false
StereotypeFontSize 6
StereotypeFontColor transparent
FontColor #444444
BorderColor #444444
BackgroundColor transparent
BorderStyle dashed
}
skinparam rectangle<<person>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #08427B
BorderColor #073B6F
}
skinparam database<<person>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #08427B
BorderColor #073B6F
}
skinparam queue<<person>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #08427B
BorderColor #073B6F
}
skinparam actor<<person>> {
StereotypeFontColor #08427B
FontColor #08427B
BackgroundColor #08427B
BorderColor #073B6F
}
skinparam person<<person>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #08427B
BorderColor #073B6F
}
skinparam rectangle<<external_person>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #686868
BorderColor #8A8A8A
}
skinparam database<<external_person>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #686868
BorderColor #8A8A8A
}
skinparam queue<<external_person>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #686868
BorderColor #8A8A8A
}
skinparam actor<<external_person>> {
StereotypeFontColor #686868
FontColor #686868
BackgroundColor #686868
BorderColor #8A8A8A
}
skinparam person<<external_person>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #686868
BorderColor #8A8A8A
}
skinparam rectangle<<system>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #1168BD
BorderColor #3C7FC0
}
skinparam database<<system>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #1168BD
BorderColor #3C7FC0
}
skinparam queue<<system>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #1168BD
BorderColor #3C7FC0
}
skinparam actor<<system>> {
StereotypeFontColor #1168BD
FontColor #1168BD
BackgroundColor #1168BD
BorderColor #3C7FC0
}
skinparam person<<system>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #1168BD
BorderColor #3C7FC0
}
skinparam rectangle<<external_system>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #999999
BorderColor #8A8A8A
}
skinparam database<<external_system>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #999999
BorderColor #8A8A8A
}
skinparam queue<<external_system>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #999999
BorderColor #8A8A8A
}
skinparam actor<<external_system>> {
StereotypeFontColor #999999
FontColor #999999
BackgroundColor #999999
BorderColor #8A8A8A
}
skinparam person<<external_system>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #999999
BorderColor #8A8A8A
}
sprite $person [48x48/16] {
000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
0000000000000000000049BCCA7200000000000000000000
0000000000000000006EFFFFFFFFB3000000000000000000
00000000000000001CFFFFFFFFFFFF700000000000000000
0000000000000001EFFFFFFFFFFFFFF80000000000000000
000000000000000CFFFFFFFFFFFFFFFF6000000000000000
000000000000007FFFFFFFFFFFFFFFFFF100000000000000
00000000000001FFFFFFFFFFFFFFFFFFF900000000000000
00000000000006FFFFFFFFFFFFFFFFFFFF00000000000000
0000000000000BFFFFFFFFFFFFFFFFFFFF40000000000000
0000000000000EFFFFFFFFFFFFFFFFFFFF70000000000000
0000000000000FFFFFFFFFFFFFFFFFFFFF80000000000000
0000000000000FFFFFFFFFFFFFFFFFFFFF80000000000000
0000000000000DFFFFFFFFFFFFFFFFFFFF60000000000000
0000000000000AFFFFFFFFFFFFFFFFFFFF40000000000000
00000000000006FFFFFFFFFFFFFFFFFFFE00000000000000
00000000000000EFFFFFFFFFFFFFFFFFF800000000000000
000000000000007FFFFFFFFFFFFFFFFFF100000000000000
000000000000000BFFFFFFFFFFFFFFFF5000000000000000
0000000000000001DFFFFFFFFFFFFFF70000000000000000
00000000000000000BFFFFFFFFFFFF500000000000000000
0000000000000000005DFFFFFFFFA1000000000000000000
0000000000000000000037ABB96100000000000000000000
000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
000000000000025788300000000005886410000000000000
000000000007DFFFFFFD9643347BFFFFFFFB400000000000
0000000004EFFFFFFFFFFFFFFFFFFFFFFFFFFB1000000000
000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFD200000000
00000006FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE10000000
0000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0000000
000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5000000
000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD000000
000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF200000
00000DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF600000
00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA00000
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB00000
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB00000
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB00000
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA00000
00000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF700000
000006FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE100000
0000008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3000000
000000014555555555555555555555555555555300000000
000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
}
sprite $person2 [48x48/16] {
0000000000000000000049BCCA7200000000000000000000
0000000000000000006EFFFFFFFFB3000000000000000000
00000000000000001CFFFFFFFFFFFF700000000000000000
0000000000000001EFFFFFFFFFFFFFF80000000000000000
000000000000000CFFFFFFFFFFFFFFFF6000000000000000
000000000000007FFFFFFFFFFFFFFFFFF100000000000000
00000000000001FFFFFFFFFFFFFFFFFFF900000000000000
00000000000006FFFFFFFFFFFFFFFFFFFF00000000000000
0000000000000BFFFFFFFFFFFFFFFFFFFF40000000000000
0000000000000EFFFFFFFFFFFFFFFFFFFF70000000000000
0000000000000FFFFFFFFFFFFFFFFFFFFF80000000000000
0000000000000FFFFFFFFFFFFFFFFFFFFF80000000000000
0000000000000DFFFFFFFFFFFFFFFFFFFF60000000000000
0000000000000AFFFFFFFFFFFFFFFFFFFF40000000000000
00000000000006FFFFFFFFFFFFFFFFFFFE00000000000000
00000000000000EFFFFFFFFFFFFFFFFFF800000000000000
000000000000007FFFFFFFFFFFFFFFFFF100000000000000
000000000000000BFFFFFFFFFFFFFFFF5000000000000000
0000000000000001DFFFFFFFFFFFFFF70000000000000000
00000000000000000BFFFFFFFFFFFF500000000000000000
0000000000000000005DFFFFFFFFA1000000000000000000
0000000000000000000037ABB96100000000000000000000
000000000002578888300000000005888864100000000000
0000000007DFFFFFFFFD9643347BFFFFFFFFFB4000000000
00000004EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB10000000
0000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2000000
000006FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE100000
00003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB00000
0000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50000
0003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0000
0009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2000
000DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6000
000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000
001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB000
001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB000
001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB000
001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA000
000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000
000DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6000
0009FFFFFFFF8FFFFFFFFFFFFFFFFFFFFFF8FFFFFFFF2000
0003FFFFFFFF8FFFFFFFFFFFFFFFFFFFFFF8FFFFFFFD0000
0000BFFFFFFF8FFFFFFFFFFFFFFFFFFFFFF8FFFFFFF50000
00003FFFFFFF8FFFFFFFFFFFFFFFFFFFFFF8FFFFFFB00000
000006FFFFFF8FFFFFFFFFFFFFFFFFFFFFF8FFFFFE100000
0000007FFFFF8FFFFFFFFFFFFFFFFFFFFFF8FFFFD2000000
00000004EFFF8FFFFFFFFFFFFFFFFFFFFFF8FFFB10000000
0000000007DF8FFFFFFFFFFFFFFFFFFFFFF8FB4000000000
000000000002578888888888888888888864100000000000
}
skinparam rectangle<<container>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #438DD5
BorderColor #3C7FC0
}
skinparam database<<container>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #438DD5
BorderColor #3C7FC0
}
skinparam queue<<container>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #438DD5
BorderColor #3C7FC0
}
skinparam actor<<container>> {
StereotypeFontColor #438DD5
FontColor #438DD5
BackgroundColor #438DD5
BorderColor #3C7FC0
}
skinparam person<<container>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #438DD5
BorderColor #3C7FC0
}
skinparam rectangle<<external_container>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #B3B3B3
BorderColor #A6A6A6
}
skinparam database<<external_container>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #B3B3B3
BorderColor #A6A6A6
}
skinparam queue<<external_container>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #B3B3B3
BorderColor #A6A6A6
}
skinparam actor<<external_container>> {
StereotypeFontColor #B3B3B3
FontColor #B3B3B3
BackgroundColor #B3B3B3
BorderColor #A6A6A6
}
skinparam person<<external_container>> {
StereotypeFontColor #FFFFFF
FontColor #FFFFFF
BackgroundColor #B3B3B3
BorderColor #A6A6A6
}
sprite $google_cloud_platform [48x48/16] {
000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
000000000000000001111111111111100000000000000000
000000000000004DFFFFFFFFFFFFFFFFD300000000000000
00000000000002FFFFFFFFFFFFFFFFFFFF20000000000000
0000000000000BFF7EFFFFFFFFFFFFE7FFB0000000000000
0000000000004FFE2CFFFFFFFFFFFFC2EFF4000000000000
000000000000DFFFFFFFFFFFFFFFFFFFFFFD000000000000
000000000007FFFFFFFFFFFFFFFFFFFFFFFF700000000000
00000000001FFFFFFF966666666669FFFFFFF10000000000
00000000009FFFFFFD000000000000DFFFFFF90000000000
0000000003FFFFFFF40000000000004FFFFFFF3000000000
000000000CFFFFFFA00000000000000AFFFFFFC000000000
000000005FFFFFFF2000000000000002FFFFFFF500000000
00000000EFFFFFF80000028CC82000008FFFFFFE00000000
00000008FFFFFFE000004FFFFFF400000EFFFFFF70000000
0000001FFFFFFF500002FFFFFFFF200005FFFFFFF1000000
000000AFFFFFFC000009FFFFFFFF800000CFFFFFF9000000
000000FFA6FFF300000CFFFFFFFFC000003FFF6BFF000000
000000FFA6FFF300000CFFFFFFFFC000003FFF6AFF000000
000000AFFFFFFC000009FFFFFFFF800000CFFFFFF9000000
0000002FFFFFFF500002FFFFFFFF200005FFFFFFF1000000
00000008FFFFFFE000005FFFFFF500000EFFFFFF80000000
00000000EFFFFFF80000029CC82000008FFFFFFE00000000
000000005FFFFFFF2000000000000001FFFFFFF500000000
000000000CFFFFFFA00000000000000AFFFFFFC000000000
0000000003FFFFFFF30000000000003FFFFFFF3000000000
0000000000AFFFFFFC000000000000CFFFFFF90000000000
00000000001FFFFFFF966666666669FFFFFFF10000000000
000000000007FFFFFFFFFFFFFFFFFFFFFFFF700000000000
000000000000DFFFFFFFFFFFFFFFFFFFFFFD000000000000
0000000000005FFE2CFFFFFFFFFFFFC2EFF4000000000000
0000000000000BFF7EFFFFFFFFFFFFE7FFB0000000000000
00000000000002FFFFFFFFFFFFFFFFFFFF20000000000000
000000000000004DFFFFFFFFFFFFFFFFD400000000000000
000000000000000001111111101111100000000000000000
000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
}
skinparam folderBackgroundColor<<DEV GOOGLE_CLOUD_PLATFORM>> White
top to bottom direction
hide stereotype
legend right
|<color:#000000>**Legend**</color> |
|<#08427B> person |
|<#1168BD> system |
|<#438DD5> container |
|<#686868> external person |
|<#999999> external system |
|<#B3B3B3> external container |
endlegend
title Container diagram for Vercel Dashboard
rectangle "<$person>\n==Administration\n\n Controls access." <<person>> as admin
rectangle "<$person>\n==Developer\n\n Develops the Studio." <<person>> as developer
rectangle "==Vercel Admin\n<size:12>[System]</size>" <<Cloud platform>><<boundary>> as c1 {
rectangle "<img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABU0lEQVRoQ+2ZWwqDMBBFR92j4joU3IKgCxFdo6akoNjSVmcyNxWZgF+dPM49yfw0ISJHNxiJgVzMohm5mBAyI2YElIBdLVCw4mXNiDg60EQzAgpWvKwZORudc478l6bp2SmiOqgRf/h5np8HSxK/FW5AQbyJ/UDCwECqqqK+719AvKF3OC1HMJBvB0ZZgYD8Sn0YBirLUkvEtk50ENTDVwc58wYQ7VgVZN9uj+6O9ltRBTljA9WO1UDquqau645EwNqxGgjXxkqkdcVUQKQQHmYcRyqKgmXyU/HfQbTacTBIiI01WY12HATCabdHdyf0rQSBaNjQasdikKZpqG3bo6BZv2dZRsuysOZs3U/6/4i2jdB2LDKCgvAw0zRRnudsK5cDkbZjEQg7rggTDCRCyKwtzAgrrgjFZiRCyKwtzAgrrgjFZiRCyKwtzAgrrgjFtzHyAKakjAEBm5CuAAAAAElFTkSuQmCC>\n==Project Dashboard\n//<size:12>[Next]</size>//\n\n Allows administrators and developers to deploy frontend projects from git repositories." <<external_container>> as dashboard
}
rectangle "==Vercel Deployment\n<size:12>[System]</size>" <<Cloud platform>><<boundary>> as c2 {
rectangle "<img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABU0lEQVRoQ+2ZWwqDMBBFR92j4joU3IKgCxFdo6akoNjSVmcyNxWZgF+dPM49yfw0ISJHNxiJgVzMohm5mBAyI2YElIBdLVCw4mXNiDg60EQzAgpWvKwZORudc478l6bp2SmiOqgRf/h5np8HSxK/FW5AQbyJ/UDCwECqqqK+719AvKF3OC1HMJBvB0ZZgYD8Sn0YBirLUkvEtk50ENTDVwc58wYQ7VgVZN9uj+6O9ltRBTljA9WO1UDquqau645EwNqxGgjXxkqkdcVUQKQQHmYcRyqKgmXyU/HfQbTacTBIiI01WY12HATCabdHdyf0rQSBaNjQasdikKZpqG3bo6BZv2dZRsuysOZs3U/6/4i2jdB2LDKCgvAw0zRRnudsK5cDkbZjEQg7rggTDCRCyKwtzAgrrgjFZiRCyKwtzAgrrgjFZiRCyKwtzAgrrgjFtzHyAKakjAEBm5CuAAAAAElFTkSuQmCC>\n==Web server\n//<size:12>[Next]</size>//\n\n Allows administrators and developers to deploy frontend projects from git repositories." <<external_container>> as server
}
rectangle "<$google_cloud_platform>\n==Github Authentication\n//<size:12>[Github Cloud]</size>//\n\n Authenticates editors." <<external_container>> as auth
rectangle "<$google_cloud_platform>\n==Git repository\n//<size:12>[Github Cloud]</size>//\n\n Code repository." <<img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAACZElEQVRoQ>><<2YzUpCURDHJ/AZJNBcSJJIubBoUSs3iZCvEO0qyTfwI30Hoy8JcxFucivUE0RPIRYhIgjuXBhXuGCXe87MnHO4qFx3cubMf37zn>><<Px3o3ZbDaDNfhs>><<CBL5qLvyJIZAr4ja>><<1Ir9eDw4MDEuPvYECKowYZGa3NYJCq5xpnAkoLRBfASaUDpATy3e/Dfiql5YJosyoMG8S0C25AT40GnOZyrEaxQLyAsKs/yWTgpdUiw5BBvISwq6/c3MBVPk>><<C0QKx5rlSLsP93R1JTBT03GxCNpsFt2ZRzwwJROSGU4TrGnU/BQYFkRVHEeBYJdLaSybh/eNDmkoZJJ1Ow2u7zakTjdVpmhQEGxWvHLE6gGmtDAgGowyCdQidI0GA6ngpgVwXClAslVRrle4zDqKa0ASdSPvi8hKqtZqrhNCRZQSRnRMfxMQIiXKoTIPvyMo4sptIwHA4FNa7FvcIdsvquKVyPiw9pQvRLtS0Kzr/7bRATDqDQWBaUpDRaASJeBydFB1nxuMx7MRi2hrs5xG7aFkH3zodODo>><<di2uVCzC48MDWrgzAGsWCmIldBaNwWCilDFaBMHyoYfdTuYU/vz6gkgkMl92rvV/fiAQCEg7vhUKwXQ6JbtiDETkivXGMRQOw/nZGXS7XfQpbrFyqisUCLIjImeoIm6tp4Bw8pPOiKyTHDGOI9y8bBC3MeMeTFM5FnWVQGSFUDtJfelH/UVQBrEEJpMJbEej/7RUQaj7RGBaIHbS23odatXq/Cu1INsRajzmjBEQTMSLdR/Eiy5zNHxHON3yItZ3xIsuczT>><<ANqRwHq>><<fLT7AAAAAElFTkSuQmCC>><<external_container>> as git_repo
dashboard -UP->> auth : **Authenticates**\n//<size:12>[HTTPS]</size>//
dashboard -LEFT->> git_repo : **Fetches**\n//<size:12>[HTTPS]</size>//
dashboard -RIGHT->> server : **Deploys**\n//<size:12>[HTTPS]</size>//
admin -UP->> dashboard : **Uses**\n//<size:12>[HTTPS]</size>//
developer -UP->> dashboard : **Uses**\n//<size:12>[HTTPS]</size>//
@enduml
PlantUML version 1.2021.7(Sun May 23 14:40:07 CEST 2021)
(GPL source distribution)
Java Runtime: Java(TM) SE Runtime Environment
JVM: Java HotSpot(TM) 64-Bit Server VM
Default Encoding: US-ASCII
Language: nb
Country: NO
--></g></svg>
\ No newline at end of file
...@@ -17,7 +17,7 @@ LAYOUT_WITH_LEGEND() ...@@ -17,7 +17,7 @@ LAYOUT_WITH_LEGEND()
title Component diagram for Sanity Studio title Component diagram for Sanity Studio
Container(spa, "Single Page Application", "Javascript and React", "Provides all editing functionality to editors via their web browser.") Container(spa, "Sanity Studio SPA", "Javascript and React", "Provides all editing functionality to editors via their web browser.")
ContainerDb_Ext(sanity_db, "Sanity Cloud Storage", "Google Cloud", "Stores metadata and files.", "SANITY") ContainerDb_Ext(sanity_db, "Sanity Cloud Storage", "Google Cloud", "Stores metadata and files.", "SANITY")
Container_Ext(auth, "Google Authentication", "Google Cloud", "Authenticates editors.", "google_cloud_platform") Container_Ext(auth, "Google Authentication", "Google Cloud", "Authenticates editors.", "google_cloud_platform")
......
@startuml "container_vercel"
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
' uncomment the following line and comment the first to use locally
' !include C4_Container.puml
!define NREC_LOGO img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAfCAYAAAClDZ5ZAAAAAXNSR0IArs4c6QAAAXZJREFUWEfV1+sNgyAQAGDYpXs4UJt0FpN2H52j7kJzVCwPgTs4iPRvVfi8F0pR8ltXlb1tmmT2GsYLaIthAP7mOoHwkBKEQXXA4CA1iE6YPIQD0QGThsQQkCqcQAZoOQQWb4GB5xbUVB3kQpg4JPW2p0ne7rPa3s/f/ZTIUNKSEJkqCNz8AQwVgsX3gsB+yFGxN4d5AUhMVURMsyFhIC0fs9peyLTsCSFFZocIlYgmcvP2aYglIqTIWBDnBUQOkNBU7L+O6HvXhxBk3voLoDEexGBiz4sdkH2QC8Eg9oEVXVgKofM/cSqAGoHUqv3ZmD8Ei8hBcp3sJCI1IIOhDzQEJFn8zBCzVjNIFNMMQkkp65SKLc5gxjSAwLby3yPItpjKc41ZFiWk1CdbrmJ35gj2zXIUpO5kI0P8wTdsRPxhOTzkmOJMA7F7jQT1BS2GYbLbkdZdq0fB1zSL3L3QFYeHuEeUgaMSQEZLsfQxfk/Gq9fM2cfVF6rBHOmyKLuMAAAAAElFTkSuQmCC
!define SANITY img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAACeklEQVRoQ+2ZQU5bQQyGPe8hVWkT0mOgqlUldskNkos06aaLwIojlGzbHgTBCYA1C9hwiUYEWkQSI0cMekomE9vjlwBK1jO2P//2eObFwRv5uTfCARuQl6bkRpGQIje9DnKVogxW+3/MEmliSAIQAq0ZACWBpAIUoTLn4MPhb3U86o2WEEUgrToqkLIgPJAGRgwyaDUw+/SV29PqdVIYMcjfVgNzBkgokGHvGyJzBq8dhBMAtzQ5trzkIkVIjenGLIN858tc2Ugc0+ZlQBJ7OhAAmC0viVOfgX/733E0mUT7iGtXDULePYxzDqrKGWClShIITMaQf94FbtbURxhjYxrIk4OPJ+ciO4y4xEtEATw3e8BN7hzUjs9E9sTRRjaIHMdAij7WoZAIhILlwniwSp7Bu6NTsR+pWmIHUpBQQOS0btxXYhCNKrHs0vV926C3VCB0cWQ/BQU1ktJbKhCKrSwYBw7qJ/LTTw3iE23RM7OiaXooGcQHMWg3EQ0LzjmA+jF/0JqBzGZ10GoiQlonSXqmNJA5sHZDJRgXZmUgWsVePEgRLHZgvCqQ2JB9VSC3vS5OAGF8dTE3Ps1BrF5yoUFftF29voTBw+h52cpB6D3y3ui5W1Rm5SCUQs2TN6R0qSAU6LLyksLc7XVxHLgNUEL8SWauCBfEF3dMnWGvu3TqkypcCPIpHogcVQQ394VLSweRKqOFkvabWBEKbLjfQYx/INTGP90nhVCVVjHCMspMA5EMQgbw4AcO/98nKTANxAFUD/V/jqpKa9l0llBtZRlUfv5KjiPZwKKg41/aHdT6+j8+Qz5LA5GoYrF2A2KRRUsbG0Uss2lh6xFkswBC9e0BzQAAAABJRU5ErkJggg==
!define VERCEL img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABU0lEQVRoQ+2ZWwqDMBBFR92j4joU3IKgCxFdo6akoNjSVmcyNxWZgF+dPM49yfw0ISJHNxiJgVzMohm5mBAyI2YElIBdLVCw4mXNiDg60EQzAgpWvKwZORudc478l6bp2SmiOqgRf/h5np8HSxK/FW5AQbyJ/UDCwECqqqK+719AvKF3OC1HMJBvB0ZZgYD8Sn0YBirLUkvEtk50ENTDVwc58wYQ7VgVZN9uj+6O9ltRBTljA9WO1UDquqau645EwNqxGgjXxkqkdcVUQKQQHmYcRyqKgmXyU/HfQbTacTBIiI01WY12HATCabdHdyf0rQSBaNjQasdikKZpqG3bo6BZv2dZRsuysOZs3U/6/4i2jdB2LDKCgvAw0zRRnudsK5cDkbZjEQg7rggTDCRCyKwtzAgrrgjFZiRCyKwtzAgrrgjFZiRCyKwtzAgrrgjFtzHyAKakjAEBm5CuAAAAAElFTkSuQmCC
!define NEXT img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABm0lEQVRoQ92Z25LDMAhDt///0dtJpu4kDhgBimPaZ0x0LPCtrz/+7x9I+QJiXCGshIj4kbC0jkyCrHgNLKQpMugugCOYW5d3wAyIEBAKMhvADYOAPAkBA1kgq0A0IFXvCGQ1iCGMBrIqxAYjaq4IIsJIICu7oTZ/D1IF4uJKZZATzBGkkhuXEnsahPH9PUdLlHEjIyYz9rSv/ALIbggbZEvqcZfhyG0gHhgqiGcGpVtdZlNdHgR1hQWyr1p3ONKcs3IvC7IJ94jzxA6fh9iONAdQgWic+cY1A2TUL8uD9KdTrVdKgCAwJUGkEisDYrlSCgSFsfac4SM4+9CINLVWYiVAEFfKgFgw5qanBJxuiOghzzr9IrNKa/CPmN8FiboSWTBYrnzz9JcipDSitdyPY8CoIFFXInBZkJMJmWtqRDzLlYtuCWSmK9ElGQZ5CgbpUXHyNUfQOzejvDyuqHotkJnOWM0/1IqAPAHTl5ip0ww41A5Sv4xSO26wsD44cCJQRJP8Dyk4rXc5NB2EvbKFAJqI1GDBOY9L1G+/AToZcCqjfA/hAAAAAElFTkSuQmCC
!define GITHUB img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAACZElEQVRoQ+2YzUpCURDHJ/AZJNBcSJJIubBoUSs3iZCvEO0qyTfwI30Hoy8JcxFucivUE0RPIRYhIgjuXBhXuGCXe87MnHO4qFx3cubMf37zn+Px3o3ZbDaDNfhs+CBL5qLvyJIZAr4ja+1Ir9eDw4MDEuPvYECKowYZGa3NYJCq5xpnAkoLRBfASaUDpATy3e/Dfiql5YJosyoMG8S0C25AT40GnOZyrEaxQLyAsKs/yWTgpdUiw5BBvISwq6/c3MBVPk+C0QKx5rlSLsP93R1JTBT03GxCNpsFt2ZRzwwJROSGU4TrGnU/BQYFkRVHEeBYJdLaSybh/eNDmkoZJJ1Ow2u7zakTjdVpmhQEGxWvHLE6gGmtDAgGowyCdQidI0GA6ngpgVwXClAslVRrle4zDqKa0ASdSPvi8hKqtZqrhNCRZQSRnRMfxMQIiXKoTIPvyMo4sptIwHA4FNa7FvcIdsvquKVyPiw9pQvRLtS0Kzr/7bRATDqDQWBaUpDRaASJeBydFB1nxuMx7MRi2hrs5xG7aFkH3zodODo+di2uVCzC48MDWrgzAGsWCmIldBaNwWCilDFaBMHyoYfdTuYU/vz6gkgkMl92rvV/fiAQCEg7vhUKwXQ6JbtiDETkivXGMRQOw/nZGXS7XfQpbrFyqisUCLIjImeoIm6tp4Bw8pPOiKyTHDGOI9y8bBC3MeMeTFM5FnWVQGSFUDtJfelH/UVQBrEEJpMJbEej/7RUQaj7RGBaIHbS23odatXq/Cu1INsRajzmjBEQTMSLdR/Eiy5zNHxHON3yItZ3xIsuczT+ANqRwHq+fLT7AAAAAElFTkSuQmCC
!define DEVICONS https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/devicons
' uncomment the following line and comment the first to use locally
' !include C4_Container.puml
!include DEVICONS/google_cloud_platform.puml
LAYOUT_TOP_DOWN()
'LAYOUT_AS_SKETCH()
LAYOUT_WITH_LEGEND()
title Container diagram for Vercel Dashboard
Person(admin, "Administration", "Controls access.")
Person(developer, "Developer", "Develops the Studio.")
System_Boundary(c1, "Vercel Admin", "Cloud platform"){
Container_Ext(dashboard, "Project Dashboard", "Next", "Allows administrators and developers to deploy frontend projects from git repositories.", VERCEL)
}
System_Boundary(c2, "Vercel Deployment", "Cloud platform"){
Container_Ext(server, "Web server", "Next", "Allows administrators and developers to deploy frontend projects from git repositories.", VERCEL)
}
'ContainerDb_Ext(sanity_db, "Sanity Cloud Storage", "Google Cloud", "Stores metadata and files.", "SANITY")
Container_Ext(auth, "Github Authentication", "Github Cloud", "Authenticates editors.", "google_cloud_platform")
Container_Ext(git_repo, "Git repository", "Github Cloud", "Code repository.", "google_cloud_platform", GITHUB)
Rel_U(dashboard, auth, "Authenticates", "HTTPS")
Rel_L(dashboard, git_repo, "Fetches", "HTTPS")
Rel_R(dashboard, server, "Deploys", "HTTPS")
Rel_U(admin, dashboard, "Uses", "HTTPS")
Rel_U(developer, dashboard, "Uses", "HTTPS")
'Rel_R(studio, sanity_db, "Reads from and writes to", "HTTPS")
@enduml
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment