From d08cd6a5dc385153f17694806bb7729bb337d168 Mon Sep 17 00:00:00 2001 From: tarjelavik <Tarje.Lavik@ub.uib.no> Date: Fri, 17 Sep 2021 14:17:06 +0200 Subject: [PATCH] Add Vercel container diagram --- docs/README.md | 6 +- docs/diagrams/component_studio.svg | 16 +- docs/diagrams/container_vercel.svg | 685 ++++++++++++++++++++++++ docs/diagrams/src/component_studio.puml | 2 +- docs/diagrams/src/container_vercel.puml | 50 ++ 5 files changed, 749 insertions(+), 10 deletions(-) create mode 100644 docs/diagrams/container_vercel.svg create mode 100644 docs/diagrams/src/container_vercel.puml diff --git a/docs/README.md b/docs/README.md index f73d1b9..01b39a1 100644 --- a/docs/README.md +++ b/docs/README.md @@ -45,4 +45,8 @@ Documentation of custom Studio plugins. WIP! - \ No newline at end of file + + +### Vercel + + diff --git a/docs/diagrams/component_studio.svg b/docs/diagrams/component_studio.svg index ce38226..5ed7559 100644 --- a/docs/diagrams/component_studio.svg +++ b/docs/diagrams/component_studio.svg @@ -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] 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 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 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 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="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 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 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 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] -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] -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 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] +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="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=[fad32fe7eff3261b3d1a5eb3a35bfab4] @startuml "component_studio" !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml ' uncomment the following line and comment the first to use locally @@ -34,7 +34,7 @@ LAYOUT_WITH_LEGEND() 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") Container_Ext(auth, "Google Authentication", "Google Cloud", "Authenticates editors.", "google_cloud_platform") @@ -727,7 +727,7 @@ endlegend 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 rectangle "<$google_cloud_platform>\n==Google Authentication\n//<size:12>[Google Cloud]</size>//\n\n Authenticates editors." <<external_container>> as auth diff --git a/docs/diagrams/container_vercel.svg b/docs/diagrams/container_vercel.svg new file mode 100644 index 0000000..dfabf84 --- /dev/null +++ b/docs/diagrams/container_vercel.svg @@ -0,0 +1,685 @@ +<?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 diff --git a/docs/diagrams/src/component_studio.puml b/docs/diagrams/src/component_studio.puml index c9a82b1..154104f 100644 --- a/docs/diagrams/src/component_studio.puml +++ b/docs/diagrams/src/component_studio.puml @@ -17,7 +17,7 @@ LAYOUT_WITH_LEGEND() 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") Container_Ext(auth, "Google Authentication", "Google Cloud", "Authenticates editors.", "google_cloud_platform") diff --git a/docs/diagrams/src/container_vercel.puml b/docs/diagrams/src/container_vercel.puml new file mode 100644 index 0000000..17874b5 --- /dev/null +++ b/docs/diagrams/src/container_vercel.puml @@ -0,0 +1,50 @@ +@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 -- GitLab