diff --git a/docs/README.md b/docs/README.md index 76cfe41c5f33a9a92cfb7e08f85f3ba1d3c68237..786e140ae43865b3b2d0eacc259c68409428979f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -12,15 +12,15 @@ Software architecture overview. Software systems that makes up the whole Muna software architecture. -Repositoriet består av to mapper, `studio` og `web`. `studio` inneholder koden for å kjøre [Sanity Studio](https://www.sanity.io/docs/sanity-studio). +The repository contains two folders, `studio` and `web`. `studio` contains the code for running the [Sanity Studio](https://www.sanity.io/docs/sanity-studio). ### Studio -Studio er en SPA React applikasjon, open source og kan tilpasses. Datamodellen lages i `studio/schemas` og defineres av bruker, se [Content modelling](https://www.sanity.io/docs/content-modelling) og [Schema types](https://www.sanity.io/docs/schema-types) for detaljer. +The Studio is a React Single Page Application. It is Open Source and can be customized with plugins and React components. The data model is defined in `studio/schemas`. The studio comes without a schema as default, but there are starter schemas, see [Content modelling](https://www.sanity.io/docs/content-modelling) and [Schema types](https://www.sanity.io/docs/schema-types) for details. -Studio er utvidet med én større plugin. `import-tool` er en "tool" som lar brukere søke i Marcus.uib.no, NB.no og Kulturnav.org. Objekter eller autoritetsdata kan importeres til Studio der de kan refereres til i tekst eller i andre sammenhenger. +The Studio have one major custom plugin. The `import-tool` is a "tool" for searching Marcus.uib.no, NB.no and Kulturnav.org. Objects or authority data can be imported to the Studio where they can be refered to in text and from othere documents in the studio. -Studio henter og lagrer data hos Sanity og det er derfor ikke nødvendig å ha en lokal database for utvikling eller tyngre driftsopplegg for produksjon. +The database is not Open Source and runs in the Google Cloud. The Studio communicates with the backend via an API. It is not necessary to run a local database when developing. Theres is also no need to run a production database.  @@ -28,10 +28,12 @@ Studio henter og lagrer data hos Sanity og det er derfor ikke nødvendig å ha e [Sanity Manage](https://www.sanity.io/manage) + ### Web -`web` inneholder en [Next.js](https://nextjs.org/) applikasjon. Next.js er valgt fordi den kombinerer statisk genererte sider, klient-side applikasjoner eller en kombinasjon. +`web` contains a [Next.js](https://nextjs.org/) application. Next.js was chosen because it supports SSR, SSG and client side rendering and lets the app combine all three strategies. + ## Deployment WIP! diff --git a/docs/diagrams/container_studio.svg b/docs/diagrams/container_studio.svg index ffd54766d1e7172dcc473eb0f5d9397fd51dcd46..fbc669849a1528d35f80a3c05b4fb4d52aa8ac8d 100644 --- a/docs/diagrams/container_studio.svg +++ b/docs/diagrams/container_studio.svg @@ -12,7 +12,7 @@ reverse link kulturnav to studio--><path d="M424.25,108.6132 C424.25,142.3222 42 reverse link nb to studio--><path d="M278.839,106.9112 C303.623,140.7082 339.188,189.2062 368.942,229.7792 " fill="none" id="nb-backto-studio" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="274.03,100.3542,276.3408,108.5798,281.1796,105.0321,274.03,100.3542" 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="317.25" y="143.3008">Imports</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="318.75" y="157.4336">[HTTPS]</text><!--MD5=[6abbe4392671860e427461947b6bf905] reverse link auth to studio--><path d="M217.993,306.1992 C255.581,306.1992 297.2,306.1992 333.151,306.1992 " fill="none" id="auth-backto-studio" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="209.538,306.1992,217.538,309.1992,217.538,303.1992,209.538,306.1992" 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="227.75" y="284.8008">Authenticates</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="247.75" y="298.9336">[HTTPS]</text><!--MD5=[a8ab28810acd8767e45cc9cc38f0d5d3] reverse link studio to editor--><path d="M424.25,390.7612 C424.25,418.9912 424.25,449.9082 424.25,475.8692 " fill="none" id="studio-backto-editor" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="424.25,382.4872,421.25,390.4872,427.25,390.4872,424.25,382.4872" 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="433.25" y="427.3008">Uses</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="425.25" y="441.4336">[HTTPS]</text><!--MD5=[ea2686605855d5759ae23d8a630a3097] -link studio to sanity_db--><path d="M515.496,306.1992 C567.813,306.1992 633.799,306.1992 688.76,306.1992 " fill="none" id="studio-to-sanity_db" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="696.786,306.1992,688.786,303.1992,688.786,309.1992,696.786,306.1992" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="140" x="533.5" y="270.8008">Reads from and writes</text><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="13" x="599" y="284.9336">to</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="582.5" y="299.0664">[HTTPS]</text><rect fill="#FFFFFF" height="129.418" rx="5" ry="5" style="stroke:#FFFFFF;stroke-width:1.0;" width="146" x="737" y="609.0195"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="51" x="743" y="629.5547">Legend</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="798" y="629.5547"/><rect fill="#08427B" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="743" y="632.5078"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="48" x="747" y="646.043">person</text><rect fill="#1168BD" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="743" y="648.9961"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="47" x="747" y="662.5313">system</text><rect fill="#438DD5" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="743" y="665.4844"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="65" x="747" y="679.0195">container</text><rect fill="#686868" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="743" y="681.9727"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="109" x="747" y="695.5078">external person</text><rect fill="#999999" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="743" y="698.4609"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="108" x="747" y="711.9961">external system</text><rect fill="#B3B3B3" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="743" y="714.9492"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="126" x="747" y="728.4844">external container</text><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="743" x2="877" y1="616.0195" y2="616.0195"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="743" x2="877" y1="632.5078" y2="632.5078"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="743" x2="877" y1="648.9961" y2="648.9961"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="743" x2="877" y1="665.4844" y2="665.4844"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="743" x2="877" y1="681.9727" y2="681.9727"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="743" x2="877" y1="698.4609" y2="698.4609"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="743" x2="877" y1="714.9492" y2="714.9492"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="743" x2="877" y1="731.4375" y2="731.4375"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="743" x2="743" y1="616.0195" y2="731.4375"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="877" x2="877" y1="616.0195" y2="731.4375"/><!--MD5=[7f2db1270497352100b410f43d89c7c1] +link studio to sanity_db--><path d="M515.496,306.1992 C567.813,306.1992 633.799,306.1992 688.76,306.1992 " fill="none" id="studio-to-sanity_db" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="696.786,306.1992,688.786,303.1992,688.786,309.1992,696.786,306.1992" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="140" x="533.5" y="270.8008">Reads from and writes</text><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="13" x="599" y="284.9336">to</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="582.5" y="299.0664">[HTTPS]</text><rect fill="#FFFFFF" height="129.418" rx="5" ry="5" style="stroke:#FFFFFF;stroke-width:1.0;" width="146" x="737" y="609.0195"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="51" x="743" y="629.5547">Legend</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="798" y="629.5547"/><rect fill="#08427B" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="743" y="632.5078"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="48" x="747" y="646.043">person</text><rect fill="#1168BD" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="743" y="648.9961"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="47" x="747" y="662.5313">system</text><rect fill="#438DD5" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="743" y="665.4844"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="65" x="747" y="679.0195">container</text><rect fill="#686868" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="743" y="681.9727"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="109" x="747" y="695.5078">external person</text><rect fill="#999999" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="743" y="698.4609"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="108" x="747" y="711.9961">external system</text><rect fill="#B3B3B3" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="743" y="714.9492"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="126" x="747" y="728.4844">external container</text><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="743" x2="877" y1="616.0195" y2="616.0195"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="743" x2="877" y1="632.5078" y2="632.5078"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="743" x2="877" y1="648.9961" y2="648.9961"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="743" x2="877" y1="665.4844" y2="665.4844"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="743" x2="877" y1="681.9727" y2="681.9727"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="743" x2="877" y1="698.4609" y2="698.4609"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="743" x2="877" y1="714.9492" y2="714.9492"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="743" x2="877" y1="731.4375" y2="731.4375"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="743" x2="743" y1="616.0195" y2="731.4375"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="877" x2="877" y1="616.0195" y2="731.4375"/><!--MD5=[7509da3c57806d0cfb4dbd0908c55481] @startuml "container_studio" !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml ' uncomment the following line and comment the first to use locally @@ -668,7 +668,7 @@ 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: UTF-8 +Default Encoding: US-ASCII Language: nb Country: NO --></g></svg> \ No newline at end of file diff --git a/docs/diagrams/context.svg b/docs/diagrams/context.svg index 749c42051e4816dde861b8399b10554bb689f907..bea626da5f5ca1be3b315420138b94fa67d6fd7c 100644 --- a/docs/diagrams/context.svg +++ b/docs/diagrams/context.svg @@ -23,7 +23,7 @@ reverse link sanityManage to developer--><path d="M254.628,79.5 C296.497,79.5 34 link developer to deployment--><path d="M487.539,139.792 C497.902,163.914 510.987,191.665 525.25,215.5 C529.817,223.132 534.92,230.872 540.229,238.446 " fill="none" id="developer-to-deployment" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="545.152,245.346,542.9486,237.091,538.064,240.5753,545.152,245.346" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="133" x="526.25" y="203.6016">Manages deployment</text><!--MD5=[b4bf5123ce98b2bfa5411a06ee70fdd3] link git to deployment--><path d="M702.838,140.563 C692.546,164.542 679.544,191.984 665.25,215.5 C660.58,223.182 655.348,230.955 649.897,238.549 " fill="none" id="git-to-deployment" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="644.84,245.463,651.9843,240.7769,647.1414,237.2348,644.84,245.463" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="88" x="684.25" y="196.6016">Triggers build</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="61" x="697.75" y="210.7344">[Webhook]</text><!--MD5=[f32e73e884822034bce307502ffb89bc] link deployment to studio--><path d="M551.041,367.693 C528.054,399.716 499.571,439.394 475.149,473.415 " fill="none" id="deployment-to-studio" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="470.321,480.14,477.423,475.3901,472.5485,471.8915,470.321,480.14" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="40" x="533.25" y="410.6016">Serves</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="530.25" y="424.7344">[HTTPS]</text><!--MD5=[548e49d211da9842714f8e4a5326adfd] -link deployment to website--><path d="M701.562,367.228 C767.773,404.08 852.44,451.204 918.852,488.168 " fill="none" id="deployment-to-website" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="926.037,492.167,920.5064,485.6545,917.5879,490.8969,926.037,492.167" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="40" x="814.25" y="410.6016">Serves</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="811.25" y="424.7344">[HTTPS]</text><rect fill="#FFFFFF" height="96.4414" rx="5" ry="5" style="stroke:#FFFFFF;stroke-width:1.0;" width="129" x="1264.25" y="1048.3203"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="51" x="1270.25" y="1068.8555">Legend</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="1325.25" y="1068.8555"/><rect fill="#08427B" height="16.4883" style="stroke:none;stroke-width:1.0;" width="117" x="1270.25" y="1071.8086"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="48" x="1274.25" y="1085.3438">person</text><rect fill="#1168BD" height="16.4883" style="stroke:none;stroke-width:1.0;" width="117" x="1270.25" y="1088.2969"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="47" x="1274.25" y="1101.832">system</text><rect fill="#686868" height="16.4883" style="stroke:none;stroke-width:1.0;" width="117" x="1270.25" y="1104.7852"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="109" x="1274.25" y="1118.3203">external person</text><rect fill="#999999" height="16.4883" style="stroke:none;stroke-width:1.0;" width="117" x="1270.25" y="1121.2734"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="108" x="1274.25" y="1134.8086">external system</text><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="1270.25" x2="1387.25" y1="1055.3203" y2="1055.3203"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="1270.25" x2="1387.25" y1="1071.8086" y2="1071.8086"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="1270.25" x2="1387.25" y1="1088.2969" y2="1088.2969"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="1270.25" x2="1387.25" y1="1104.7852" y2="1104.7852"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="1270.25" x2="1387.25" y1="1121.2734" y2="1121.2734"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="1270.25" x2="1387.25" y1="1137.7617" y2="1137.7617"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="1270.25" x2="1270.25" y1="1055.3203" y2="1137.7617"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="1387.25" x2="1387.25" y1="1055.3203" y2="1137.7617"/><!--MD5=[5f76f462303d967854b0946bc397fe6b] +link deployment to website--><path d="M701.562,367.228 C767.773,404.08 852.44,451.204 918.852,488.168 " fill="none" id="deployment-to-website" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="926.037,492.167,920.5064,485.6545,917.5879,490.8969,926.037,492.167" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="40" x="814.25" y="410.6016">Serves</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="811.25" y="424.7344">[HTTPS]</text><rect fill="#FFFFFF" height="96.4414" rx="5" ry="5" style="stroke:#FFFFFF;stroke-width:1.0;" width="129" x="1264.25" y="1048.3203"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="51" x="1270.25" y="1068.8555">Legend</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="1325.25" y="1068.8555"/><rect fill="#08427B" height="16.4883" style="stroke:none;stroke-width:1.0;" width="117" x="1270.25" y="1071.8086"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="48" x="1274.25" y="1085.3438">person</text><rect fill="#1168BD" height="16.4883" style="stroke:none;stroke-width:1.0;" width="117" x="1270.25" y="1088.2969"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="47" x="1274.25" y="1101.832">system</text><rect fill="#686868" height="16.4883" style="stroke:none;stroke-width:1.0;" width="117" x="1270.25" y="1104.7852"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="109" x="1274.25" y="1118.3203">external person</text><rect fill="#999999" height="16.4883" style="stroke:none;stroke-width:1.0;" width="117" x="1270.25" y="1121.2734"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="108" x="1274.25" y="1134.8086">external system</text><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="1270.25" x2="1387.25" y1="1055.3203" y2="1055.3203"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="1270.25" x2="1387.25" y1="1071.8086" y2="1071.8086"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="1270.25" x2="1387.25" y1="1088.2969" y2="1088.2969"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="1270.25" x2="1387.25" y1="1104.7852" y2="1104.7852"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="1270.25" x2="1387.25" y1="1121.2734" y2="1121.2734"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="1270.25" x2="1387.25" y1="1137.7617" y2="1137.7617"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="1270.25" x2="1270.25" y1="1055.3203" y2="1137.7617"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="1387.25" x2="1387.25" y1="1055.3203" y2="1137.7617"/><!--MD5=[4397d51ce5f8a98568559ec7409e818a] @startuml "context" !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml @@ -671,7 +671,7 @@ 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: UTF-8 +Default Encoding: US-ASCII Language: nb Country: NO --></g></svg> \ No newline at end of file diff --git a/docs/diagrams/deployment.svg b/docs/diagrams/deployment.svg index 926fe02995e528325b83ee989ef45017d5b14855..d6e6bd5758cd0b3dd191d8be8490a23908ea52a4 100644 --- a/docs/diagrams/deployment.svg +++ b/docs/diagrams/deployment.svg @@ -35,7 +35,7 @@ link sanitydb_api to vercel_web_next_app--><path d="M534.578,721.6792 C451.914,7 link vercel_manifest_next_app_api to user_spa--><path d="M704.197,1394.7952 C710.762,1518.6342 713.295,1756.8102 655,1948.1992 C638.564,2002.1612 607.17,2057.0872 579.351,2099.1622 " fill="none" id="vercel_manifest_next_app_api-to-user_spa" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="574.741,2106.0672,581.6775,2101.0787,576.687,2097.7478,574.741,2106.0672" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="134" x="709" y="1772.3008">Delivers manifests to</text><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="76" x="740" y="1786.4336">the web app</text><!--MD5=[ad8991972e27f13a04d2c98d133680a5] link sanitydb_api to editor_spa--><path d="M751.193,701.8792 C866.37,715.2992 1044.15,755.4792 1134,875.1992 C1302.96,1100.3292 1245.09,1234.5892 1175,1507.1992 C1158.83,1570.0952 1124.38,1634.0502 1092.89,1683.5942 " fill="none" id="sanitydb_api-to-editor_spa" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="1088.47,1690.4872,1095.3117,1685.3695,1090.2596,1682.1327,1088.47,1690.4872" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="123" x="1245" y="1307.3008">Delivers data to the</text><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="74" x="1271.5" y="1321.4336">editor's SPA</text><!--MD5=[c67d2ea51f4794abc67302be1f562ab8] link db_production to sanitydb_api--><path d="M825.856,420.8892 C790.406,473.6892 741.944,545.8592 703.817,602.6292 " fill="none" id="db_production-to-sanitydb_api" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="699.22,609.4792,706.1691,604.5082,701.187,601.1647,699.22,609.4792" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="146" x="803" y="466.3008">Delivers data to the api</text><!--MD5=[3bb2387e5d7dc74763ef16e0fa2b5e59] -link db_test to sanitydb_api--><path d="M629.543,420.8892 C632.131,473.2592 635.66,544.6792 638.456,601.2492 " fill="none" id="db_test-to-sanitydb_api" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="638.863,609.4792,641.4592,601.3392,635.4668,601.6392,638.863,609.4792" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="146" x="633" y="466.3008">Delivers data to the api</text><rect fill="#FFFFFF" height="63.4648" rx="5" ry="5" style="stroke:#FFFFFF;stroke-width:1.0;" width="106" x="1252" y="2295.1992"/><rect height="16.4883" style="stroke:none;stroke-width:1.0;fill:none;" width="94" x="1258" y="2302.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="51" x="1258" y="2315.7344">Legend</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="1313" y="2315.7344"/><rect fill="#438DD5" height="16.4883" style="stroke:none;stroke-width:1.0;" width="94" x="1258" y="2318.6875"/><text fill="#3C7FC0" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="9" x="1262" y="2332.2227">▯</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="1275" y="2332.2227"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="65" x="1279" y="2332.2227">container</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="1352" y="2332.2227"/><rect fill="#FFFFFF" height="16.4883" style="stroke:none;stroke-width:1.0;" width="94" x="1258" y="2335.1758"/><text fill="#A2A2A2" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="9" x="1262" y="2348.7109">▯</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="1275" y="2348.7109"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="35" x="1279" y="2348.7109">node</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="1322" y="2348.7109"/><line style="stroke:#00000000;stroke-width:1.0;" x1="1258" x2="1352" y1="2302.1992" y2="2302.1992"/><line style="stroke:#00000000;stroke-width:1.0;" x1="1258" x2="1352" y1="2318.6875" y2="2318.6875"/><line style="stroke:#00000000;stroke-width:1.0;" x1="1258" x2="1352" y1="2335.1758" y2="2335.1758"/><line style="stroke:#00000000;stroke-width:1.0;" x1="1258" x2="1352" y1="2351.6641" y2="2351.6641"/><line style="stroke:#00000000;stroke-width:1.0;" x1="1258" x2="1258" y1="2302.1992" y2="2351.6641"/><line style="stroke:#00000000;stroke-width:1.0;" x1="1352" x2="1352" y1="2302.1992" y2="2351.6641"/><!--MD5=[5b2874ef070dd52911e10b352035c1af] +link db_test to sanitydb_api--><path d="M629.543,420.8892 C632.131,473.2592 635.66,544.6792 638.456,601.2492 " fill="none" id="db_test-to-sanitydb_api" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="638.863,609.4792,641.4592,601.3392,635.4668,601.6392,638.863,609.4792" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="146" x="633" y="466.3008">Delivers data to the api</text><rect fill="#FFFFFF" height="63.4648" rx="5" ry="5" style="stroke:#FFFFFF;stroke-width:1.0;" width="106" x="1252" y="2295.1992"/><rect height="16.4883" style="stroke:none;stroke-width:1.0;fill:none;" width="94" x="1258" y="2302.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="51" x="1258" y="2315.7344">Legend</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="1313" y="2315.7344"/><rect fill="#438DD5" height="16.4883" style="stroke:none;stroke-width:1.0;" width="94" x="1258" y="2318.6875"/><text fill="#3C7FC0" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="9" x="1262" y="2332.2227">▯</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="1275" y="2332.2227"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="65" x="1279" y="2332.2227">container</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="1352" y="2332.2227"/><rect fill="#FFFFFF" height="16.4883" style="stroke:none;stroke-width:1.0;" width="94" x="1258" y="2335.1758"/><text fill="#A2A2A2" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="9" x="1262" y="2348.7109">▯</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="1275" y="2348.7109"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="35" x="1279" y="2348.7109">node</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="1322" y="2348.7109"/><line style="stroke:#00000000;stroke-width:1.0;" x1="1258" x2="1352" y1="2302.1992" y2="2302.1992"/><line style="stroke:#00000000;stroke-width:1.0;" x1="1258" x2="1352" y1="2318.6875" y2="2318.6875"/><line style="stroke:#00000000;stroke-width:1.0;" x1="1258" x2="1352" y1="2335.1758" y2="2335.1758"/><line style="stroke:#00000000;stroke-width:1.0;" x1="1258" x2="1352" y1="2351.6641" y2="2351.6641"/><line style="stroke:#00000000;stroke-width:1.0;" x1="1258" x2="1258" y1="2302.1992" y2="2351.6641"/><line style="stroke:#00000000;stroke-width:1.0;" x1="1352" x2="1352" y1="2302.1992" y2="2351.6641"/><!--MD5=[2616a38c66e0497318496e2ef705b0c5] @startuml "deployment" !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Deployment.puml ' uncomment the following line and comment the first to use locally @@ -917,7 +917,7 @@ 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: UTF-8 +Default Encoding: US-ASCII Language: nb Country: NO --></g></svg> \ No newline at end of file diff --git a/docs/diagrams/sanity_manage.svg b/docs/diagrams/sanity_manage.svg new file mode 100644 index 0000000000000000000000000000000000000000..7b81743a510d783ac4bff06fe49cb8ea6c1658a8 --- /dev/null +++ b/docs/diagrams/sanity_manage.svg @@ -0,0 +1,672 @@ +<?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="823px" preserveAspectRatio="none" style="width:933px;height:823px;background:#FFFFFF;" version="1.1" viewBox="0 0 933 823" width="933px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacing" textLength="324" x="298" y="17.4023">Container diagram for Sanity Manage</text><!--MD5=[84dda40acb3410cad7262261daba2aaf] +cluster c1--><rect fill="#FFFFFF" height="220" style="stroke:#444444;stroke-width:1.0;stroke-dasharray:7.0,7.0;" width="214" x="345.25" y="240.1992"/><text fill="#444444" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="49" x="427.75" y="257.668">Sanity</text><text fill="#444444" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="48" x="428.25" y="272.6445">[System]</text><!--MD5=[de33f1692ae77e01f0ec53f7118825ca] +entity studio--><rect fill="#438DD5" height="152.4414" style="stroke:#3C7FC0;stroke-width:1.5;" width="182" x="361.25" y="292.1992"/><image height="50" width="50" x="427.25" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABjklEQVR4Xu2YzU7CQBRGeSoTJa4NaHwNxY2LwsqXplI0rpBLwEzOtGXa3tuZxjnJ2c39+SgNtLNZJpPJdGVXvB5CrY6yPjpcsqvsNzpcaIj79SpOIC6iJeeYwuHacp4J5eLWG2wh56qzDQzCOqEqXrxzTbJWnWtBeL4O1jTJOjUkxMnHuTe0z2DWU55X4y9IzVXh2RC+N29eH8oaFdwgbphqwG8AF6c8rwKDbB9u7IZZ4gU5y3PJwwCuu+XddAJx+SZZlyRc+po/T/M0g3HRPsrfHPaNAhcb4mfMe0s+US6kIeeMglWYchHpCnERDaPeQ+Xxu86FhlguI4Zxka8Il+sqeyaBfMJcNET2SY7QK8a6pOHykw0iMMAkg+yL1em5hiFMgvDJjfJ8F9w+h+f7uEG+FB93owYRWRMCe5gHETiwTta0IVeR9Zce0YOEBKrON3ebZiEucKCV5kEEDrWQM02oNv5gTTnPHC6gIWeMxuHj3Vumj9U6YggXLhaqvMhmr6Rof9Pe/19AJpP55/wCwk7g9HfTvaAAAAAASUVORK5CYII=" y="302.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="52" x="426.25" y="367.668">Studio</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="70" x="417.25" y="382.6445">[React 16+]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="454.25" y="398.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="154" x="375.25" y="415.1992">Allows editor to create</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="56" x="424.25" y="431.6875">content.</text><!--MD5=[026b3f9ae447cd6258ef99d33f5de6cf] +entity editor--><rect fill="#08427B" height="119.8203" style="stroke:#073B6F;stroke-width:1.5;" width="136" x="384.25" y="545.1992"/><image height="48" width="48" x="428.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="555.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="49" x="427.75" y="618.668">Editor</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="454.25" y="635.5781"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="112" x="398.25" y="652.0664">Content creator.</text><!--MD5=[79a439086b036a57b90a01d7b2f8bbd1] +entity admin--><rect fill="#08427B" height="119.8203" style="stroke:#073B6F;stroke-width:1.5;" width="143" x="7" y="545.1992"/><image height="48" width="48" x="54.5" 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="555.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="123" x="17" y="618.668">Administration</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="80.5" y="635.5781"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="111" x="25" y="652.0664">Controls access.</text><!--MD5=[23e4898078453906b079a6bea7d1245c] +entity developer--><rect fill="#08427B" height="119.8203" style="stroke:#073B6F;stroke-width:1.5;" width="164" x="185.25" y="545.1992"/><image height="48" width="48" x="243.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="555.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="82" x="226.25" y="618.668">Developer</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="269.25" y="635.5781"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="140" x="199.25" y="652.0664">Develops the Studio.</text><!--MD5=[5c683ad15008a9a9805032348b8a26c3] +entity manage--><rect fill="#B3B3B3" height="168.9297" style="stroke:#A6A6A6;stroke-width:1.5;" width="197" x="19" y="283.6992"/><image height="50" width="50" x="92.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="293.6992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="64" x="85.5" y="359.168">Manage</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="70" x="82.5" y="374.1445">[React 16+]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="119.5" y="390.2109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="111" x="62" y="406.6992">Controls access,</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="173" x="29" y="423.1875">environment variales and</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="50" x="92.5" y="439.6758">tokens.</text><!--MD5=[3d74be2a757051a7059b41e555fce061] +entity sanity_db--><path d="M725,305.6992 C725,295.6992 825.5,295.6992 825.5,295.6992 C825.5,295.6992 926,295.6992 926,305.6992 L926,430.6523 C926,440.6523 825.5,440.6523 825.5,440.6523 C825.5,440.6523 725,440.6523 725,430.6523 L725,305.6992 " fill="#B3B3B3" style="stroke:#A6A6A6;stroke-width:1.5;"/><path d="M725,305.6992 C725,315.6992 825.5,315.6992 825.5,315.6992 C825.5,315.6992 926,315.6992 926,305.6992 " fill="none" style="stroke:#A6A6A6;stroke-width:1.5;"/><image height="50" width="50" x="800.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="319.6992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="168" x="741.5" y="385.168">Sanity Cloud Storage</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="85" x="783" y="400.1445">[Google Cloud]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="827.5" y="416.2109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="177" x="739" y="432.6992">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="351" y="28.1992"/><image height="48" width="48" x="428.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="38.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="183" x="361" y="101.668">Google Authentication</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="85" x="410" y="116.6445">[Google Cloud]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="454.5" y="132.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="150" x="379.5" y="149.1992">Authenticates editors.</text><!--MD5=[6abbe4392671860e427461947b6bf905] +reverse link auth to studio--><path d="M452.25,170.9062 C452.25,208.6152 452.25,254.2482 452.25,292.0232 " fill="none" id="auth-backto-studio" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="452.25,162.4932,449.25,170.4932,455.25,170.4932,452.25,162.4932" 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="453.25" y="205.3008">Authenticates</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="473.25" y="219.4336">[HTTPS]</text><!--MD5=[e3532b4aefcfb0e1f91f27d99991ee2d] +reverse link manage to studio--><path d="M224.106,368.1992 C268.213,368.1992 318.807,368.1992 361.125,368.1992 " fill="none" id="manage-backto-studio" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="215.949,368.1992,223.949,371.1992,223.949,365.1992,215.949,368.1992" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="68" x="253.75" y="346.8008">Authorizes</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="264.75" y="360.9336">[HTTPS]</text><!--MD5=[a8ab28810acd8767e45cc9cc38f0d5d3] +reverse link studio to editor--><path d="M452.25,452.3292 C452.25,482.9792 452.25,517.0502 452.25,545.1422 " fill="none" id="studio-backto-editor" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="452.25,444.2012,449.25,452.2012,455.25,452.2012,452.25,444.2012" 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="461.25" y="496.3008">Uses</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="453.25" y="510.4336">[HTTPS]</text><!--MD5=[a2d49c088148fce478f1003513336c13] +reverse link manage to admin--><path d="M102.0751,460.6382 C97.3755,488.9562 92.323,519.4002 88.0854,544.9342 " fill="none" id="manage-backto-admin" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="103.3902,452.7132,99.122,460.1147,105.0412,461.0962,103.3902,452.7132" 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="107.25" y="496.3008">Uses</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="99.25" y="510.4336">[HTTPS]</text><!--MD5=[5438fff696e73acb3045c7a398ac6443] +reverse link manage to developer--><path d="M174.921,459.5502 C193.192,488.1742 212.914,519.0732 229.421,544.9342 " fill="none" id="manage-backto-developer" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="170.557,452.7132,172.3328,461.0706,177.3902,457.8422,170.557,452.7132" 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="219.25" y="496.3008">Uses</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="211.25" y="510.4336">[HTTPS]</text><!--MD5=[ea2686605855d5759ae23d8a630a3097] +link studio to sanity_db--><path d="M543.496,368.1992 C595.813,368.1992 661.799,368.1992 716.76,368.1992 " fill="none" id="studio-to-sanity_db" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="724.786,368.1992,716.786,365.1992,716.786,371.1992,724.786,368.1992" style="stroke:#666666;stroke-width:1.0;"/><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="140" x="561.5" y="332.8008">Reads from and writes</text><text fill="#666666" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="13" x="627" y="346.9336">to</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="610.5" y="361.0664">[HTTPS]</text><rect fill="#FFFFFF" height="129.418" rx="5" ry="5" style="stroke:#FFFFFF;stroke-width:1.0;" width="146" x="765" y="678.0195"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="51" x="771" y="698.5547">Legend</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="826" y="698.5547"/><rect fill="#08427B" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="771" y="701.5078"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="48" x="775" y="715.043">person</text><rect fill="#1168BD" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="771" y="717.9961"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="47" x="775" y="731.5313">system</text><rect fill="#438DD5" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="771" y="734.4844"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="65" x="775" y="748.0195">container</text><rect fill="#686868" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="771" y="750.9727"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="109" x="775" y="764.5078">external person</text><rect fill="#999999" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="771" y="767.4609"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="108" x="775" y="780.9961">external system</text><rect fill="#B3B3B3" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="771" y="783.9492"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="126" x="775" y="797.4844">external container</text><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="771" x2="905" y1="685.0195" y2="685.0195"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="771" x2="905" y1="701.5078" y2="701.5078"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="771" x2="905" y1="717.9961" y2="717.9961"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="771" x2="905" y1="734.4844" y2="734.4844"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="771" x2="905" y1="750.9727" y2="750.9727"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="771" x2="905" y1="767.4609" y2="767.4609"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="771" x2="905" y1="783.9492" y2="783.9492"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="771" x2="905" y1="800.4375" y2="800.4375"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="771" x2="771" y1="685.0195" y2="800.4375"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="905" x2="905" y1="685.0195" y2="800.4375"/><!--MD5=[3433fc57d0e57ae035d7c9c33553f369] +@startuml "sanity_manage" +!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 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 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 Sanity Manage + +Person(editor, "Editor", "Content creator.") +Person(admin, "Administration", "Controls access.") +Person(developer, "Developer", "Develops the Studio.") + +System_Boundary(c1, "Sanity", "React SPA"){ + + Container(studio, "Studio", "React 16+", "Allows editor to create content.", "SANITY") + +} +Container_Ext(manage, "Manage", "React 16+", "Controls access, environment variales and tokens.", "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") + +Rel_U(studio, auth, "Authenticates", "HTTPS") +Rel_L(studio, manage, "Authorizes", "HTTPS") + +Rel_U(editor, studio, "Uses", "HTTPS") +Rel_U(admin, manage, "Uses", "HTTPS") +Rel_U(developer, manage, "Uses", "HTTPS") + +Rel_R(studio, sanity_db, "Reads from and writes to", "HTTPS") + +@enduml + +@startuml "sanity_manage" + + + + + + + + + + + + + + +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 Sanity Manage + +rectangle "<$person>\n==Editor\n\n Content creator." <<person>> as editor +rectangle "<$person>\n==Administration\n\n Controls access." <<person>> as admin +rectangle "<$person>\n==Developer\n\n Develops the Studio." <<person>> as developer + +rectangle "==Sanity\n<size:12>[System]</size>" <<React SPA>><<boundary>> as c1 { + + rectangle "<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==Studio\n//<size:12>[React 16+]</size>//\n\n Allows editor to create content." <<container>> as studio + +} +rectangle "<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==Manage\n//<size:12>[React 16+]</size>//\n\n Controls access, environment variales and tokens." <<external_container>> as manage +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 + +studio -UP->> auth : **Authenticates**\n//<size:12>[HTTPS]</size>// +studio -LEFT->> manage : **Authorizes**\n//<size:12>[HTTPS]</size>// + +editor -UP->> studio : **Uses**\n//<size:12>[HTTPS]</size>// +admin -UP->> manage : **Uses**\n//<size:12>[HTTPS]</size>// +developer -UP->> manage : **Uses**\n//<size:12>[HTTPS]</size>// + +studio -RIGHT->> sanity_db : **Reads from and writes to**\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/container_studio_manage.puml b/docs/diagrams/src/container_studio_manage.puml new file mode 100644 index 0000000000000000000000000000000000000000..d6fe038f7324a0a28c97db3dac94583763adc16e --- /dev/null +++ b/docs/diagrams/src/container_studio_manage.puml @@ -0,0 +1,40 @@ +@startuml "sanity_manage" +!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 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 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 Sanity Manage + +Person(editor, "Editor", "Content creator.") +Person(admin, "Administration", "Controls access.") +Person(developer, "Developer", "Develops the Studio.") + +System_Boundary(c1, "Sanity", "React SPA"){ + + Container(studio, "Studio", "React 16+", "Allows editor to create content.", "SANITY") + +} +Container_Ext(manage, "Manage", "React 16+", "Controls access, environment variales and tokens.", "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") + +Rel_U(studio, auth, "Authenticates", "HTTPS") +Rel_L(studio, manage, "Authorizes", "HTTPS") + +Rel_U(editor, studio, "Uses", "HTTPS") +Rel_U(admin, manage, "Uses", "HTTPS") +Rel_U(developer, manage, "Uses", "HTTPS") + +Rel_R(studio, sanity_db, "Reads from and writes to", "HTTPS") + +@enduml \ No newline at end of file diff --git a/docs/diagrams/src/container_web.puml b/docs/diagrams/src/container_web.puml new file mode 100644 index 0000000000000000000000000000000000000000..17e9658e0253a1e0b7184ceb034238fd48543034 --- /dev/null +++ b/docs/diagrams/src/container_web.puml @@ -0,0 +1,30 @@ +@startuml "web" +!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 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 NEXT img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABm0lEQVRoQ92Z25LDMAhDt///0dtJpu4kDhgBimPaZ0x0LPCtrz/+7x9I+QJiXCGshIj4kbC0jkyCrHgNLKQpMugugCOYW5d3wAyIEBAKMhvADYOAPAkBA1kgq0A0IFXvCGQ1iCGMBrIqxAYjaq4IIsJIICu7oTZ/D1IF4uJKZZATzBGkkhuXEnsahPH9PUdLlHEjIyYz9rSv/ALIbggbZEvqcZfhyG0gHhgqiGcGpVtdZlNdHgR1hQWyr1p3ONKcs3IvC7IJ94jzxA6fh9iONAdQgWic+cY1A2TUL8uD9KdTrVdKgCAwJUGkEisDYrlSCgSFsfac4SM4+9CINLVWYiVAEFfKgFgw5qanBJxuiOghzzr9IrNKa/CPmN8FiboSWTBYrnzz9JcipDSitdyPY8CoIFFXInBZkJMJmWtqRDzLlYtuCWSmK9ElGQZ5CgbpUXHyNUfQOzejvDyuqHotkJnOWM0/1IqAPAHTl5ip0ww41A5Sv4xSO26wsD44cCJQRJP8Dyk4rXc5NB2EvbKFAJqI1GDBOY9L1G+/AToZcCqjfA/hAAAAAElFTkSuQmCC + +!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 Web site + +Person(user, "Visitor", "Happy reader.") + +System_Boundary(c1, "next", "Next app"){ + + Container(web, "Next", "React 16+", "SSG web application.", "NEXT") + +} +'ContainerDb_Ext(sanity_db, "Sanity Cloud Storage", "Google Cloud", "Stores metadata and files.", "SANITY") + +Rel_U(user, web, "Uses", "HTTPS") + +@enduml \ No newline at end of file diff --git a/docs/diagrams/web.svg b/docs/diagrams/web.svg new file mode 100644 index 0000000000000000000000000000000000000000..7229c772879ae395ce90a4fa4d30c54490064aa1 --- /dev/null +++ b/docs/diagrams/web.svg @@ -0,0 +1,640 @@ +<?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="588px" preserveAspectRatio="none" style="width:280px;height:588px;background:#FFFFFF;" version="1.1" viewBox="0 0 280 588" width="280px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacing" textLength="271" x="2" y="17.4023">Container diagram for Web site</text><!--MD5=[84dda40acb3410cad7262261daba2aaf] +cluster c1--><rect fill="#FFFFFF" height="204" style="stroke:#444444;stroke-width:1.0;stroke-dasharray:7.0,7.0;" width="198" x="45.5" y="28.1992"/><text fill="#444444" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="35" x="127" y="45.668">next</text><text fill="#444444" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="48" x="120.5" y="60.6445">[System]</text><!--MD5=[08af8945a84acfe1eabc0963aa87c412] +entity web--><rect fill="#438DD5" height="135.9531" style="stroke:#3C7FC0;stroke-width:1.5;" width="166" x="61.5" y="80.1992"/><image height="50" width="50" x="119.5" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABfUlEQVR4XtWOAY7DIAwE+/9P36mVEm0HQ7wcTriRRmo9hvB6recn4bbwoa6Pwses8jb44QrL4QerXQ4/cKfL4MVP+Sd42dNOwUt20YKHd9KCh3czBQ/t6hAu7+wQLu9uCJf+iw1cuEOFLesXjI4K25UKW9YvGB0VtisVNscTBkfCPlJhczxhcIzgTk+FzfEDh64R3OmpsDl+4NC1B/ciFTbXZuA6grtUYXNtBq5K9H+kwubaDFyV0SxSYXNtBq5KNHvDM9Eem2szcFUyc3cnazNwVZyW6Y7NwFUZtTejzubaDFwVtqs+aq7NwFVhy+z05o4nDI4KW7TzJuqcOZ4wOCps2b1o5njC4KiwUYVt1gYuZFXYIhW2GRu4kFVhi1TYZgzhUsYDzkcqbI5duFipwpZ1CJerVNgyXsIDlSpsI9PwYKUKW08LHq70gPPIKXhJlQpbb8+Gl1WpsLFPw0urPOjNl8DLqzzQ3yXww6u9HT5glY/Bh8y6FXzcyKX8AqAq6Wv25cYoAAAAAElFTkSuQmCC" y="90.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="36" x="126.5" y="155.668">Next</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="70" x="109.5" y="170.6445">[React 16+]</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="146.5" y="186.7109"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="142" x="75.5" y="203.1992">SSG web application.</text><!--MD5=[8fc3522a43f8c7199df5e09e5bb0188e] +entity user--><rect fill="#08427B" height="119.8203" style="stroke:#073B6F;stroke-width:1.5;" width="120" x="84.5" y="310.1992"/><image height="48" width="48" x="120.5" 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="320.1992"/><text fill="#FFFFFF" font-family="sans-serif" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="53" x="118" y="383.668">Visitor</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="146.5" y="400.5781"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="96" x="98.5" y="417.0664">Happy reader.</text><!--MD5=[3c8194be897d119737f0a87f1b26a7c9] +reverse link web to user--><path d="M144.5,224.5522 C144.5,252.4272 144.5,283.6092 144.5,309.8632 " fill="none" id="web-backto-user" style="stroke:#666666;stroke-width:1.0;"/><polygon fill="#666666" points="144.5,216.4022,141.5,224.4022,147.5,224.4022,144.5,216.4022" 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="153.5" y="261.3008">Uses</text><text fill="#666666" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="46" x="145.5" y="275.4336">[HTTPS]</text><rect fill="#FFFFFF" height="129.418" rx="5" ry="5" style="stroke:#FFFFFF;stroke-width:1.0;" width="146" x="81.5" y="443.0195"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="51" x="87.5" y="463.5547">Legend</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="0" x="142.5" y="463.5547"/><rect fill="#08427B" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="87.5" y="466.5078"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="48" x="91.5" y="480.043">person</text><rect fill="#1168BD" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="87.5" y="482.9961"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="47" x="91.5" y="496.5313">system</text><rect fill="#438DD5" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="87.5" y="499.4844"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="65" x="91.5" y="513.0195">container</text><rect fill="#686868" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="87.5" y="515.9727"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="109" x="91.5" y="529.5078">external person</text><rect fill="#999999" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="87.5" y="532.4609"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="108" x="91.5" y="545.9961">external system</text><rect fill="#B3B3B3" height="16.4883" style="stroke:none;stroke-width:1.0;" width="134" x="87.5" y="548.9492"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="126" x="91.5" y="562.4844">external container</text><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="87.5" x2="221.5" y1="450.0195" y2="450.0195"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="87.5" x2="221.5" y1="466.5078" y2="466.5078"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="87.5" x2="221.5" y1="482.9961" y2="482.9961"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="87.5" x2="221.5" y1="499.4844" y2="499.4844"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="87.5" x2="221.5" y1="515.9727" y2="515.9727"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="87.5" x2="221.5" y1="532.4609" y2="532.4609"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="87.5" x2="221.5" y1="548.9492" y2="548.9492"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="87.5" x2="221.5" y1="565.4375" y2="565.4375"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="87.5" x2="87.5" y1="450.0195" y2="565.4375"/><line style="stroke:#FFFFFF;stroke-width:1.0;" x1="221.5" x2="221.5" y1="450.0195" y2="565.4375"/><!--MD5=[237f1ae16b48c183a7e8710bf279b30e] +@startuml "web" +!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 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 NEXT img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABm0lEQVRoQ92Z25LDMAhDt///0dtJpu4kDhgBimPaZ0x0LPCtrz/+7x9I+QJiXCGshIj4kbC0jkyCrHgNLKQpMugugCOYW5d3wAyIEBAKMhvADYOAPAkBA1kgq0A0IFXvCGQ1iCGMBrIqxAYjaq4IIsJIICu7oTZ/D1IF4uJKZZATzBGkkhuXEnsahPH9PUdLlHEjIyYz9rSv/ALIbggbZEvqcZfhyG0gHhgqiGcGpVtdZlNdHgR1hQWyr1p3ONKcs3IvC7IJ94jzxA6fh9iONAdQgWic+cY1A2TUL8uD9KdTrVdKgCAwJUGkEisDYrlSCgSFsfac4SM4+9CINLVWYiVAEFfKgFgw5qanBJxuiOghzzr9IrNKa/CPmN8FiboSWTBYrnzz9JcipDSitdyPY8CoIFFXInBZkJMJmWtqRDzLlYtuCWSmK9ElGQZ5CgbpUXHyNUfQOzejvDyuqHotkJnOWM0/1IqAPAHTl5ip0ww41A5Sv4xSO26wsD44cCJQRJP8Dyk4rXc5NB2EvbKFAJqI1GDBOY9L1G+/AToZcCqjfA/hAAAAAElFTkSuQmCC + +!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 Web site + +Person(user, "Visitor", "Happy reader.") + +System_Boundary(c1, "next", "Next app"){ + + Container(web, "Next", "React 16+", "SSG web application.", "NEXT") + +} +'ContainerDb_Ext(sanity_db, "Sanity Cloud Storage", "Google Cloud", "Stores metadata and files.", "SANITY") + +Rel_U(user, web, "Uses", "HTTPS") + +@enduml + +@startuml "web" + + + + + + + + + + + + + + +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 Web site + +rectangle "<$person>\n==Visitor\n\n Happy reader." <<person>> as user + +rectangle "==next\n<size:12>[System]</size>" <<Next app>><<boundary>> as c1 { + + rectangle "<img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABm0lEQVRoQ92Z25LDMAhDt///0dtJpu4kDhgBimPaZ0x0LPCtrz/+7x9I+QJiXCGshIj4kbC0jkyCrHgNLKQpMugugCOYW5d3wAyIEBAKMhvADYOAPAkBA1kgq0A0IFXvCGQ1iCGMBrIqxAYjaq4IIsJIICu7oTZ/D1IF4uJKZZATzBGkkhuXEnsahPH9PUdLlHEjIyYz9rSv/ALIbggbZEvqcZfhyG0gHhgqiGcGpVtdZlNdHgR1hQWyr1p3ONKcs3IvC7IJ94jzxA6fh9iONAdQgWic+cY1A2TUL8uD9KdTrVdKgCAwJUGkEisDYrlSCgSFsfac4SM4+9CINLVWYiVAEFfKgFgw5qanBJxuiOghzzr9IrNKa/CPmN8FiboSWTBYrnzz9JcipDSitdyPY8CoIFFXInBZkJMJmWtqRDzLlYtuCWSmK9ElGQZ5CgbpUXHyNUfQOzejvDyuqHotkJnOWM0/1IqAPAHTl5ip0ww41A5Sv4xSO26wsD44cCJQRJP8Dyk4rXc5NB2EvbKFAJqI1GDBOY9L1G+/AToZcCqjfA/hAAAAAElFTkSuQmCC>\n==Next\n//<size:12>[React 16+]</size>//\n\n SSG web application." <<container>> as web + +} + +user -UP->> web : **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