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

Add C4 diagrams for docs

parent fc4743d0
No related branches found
No related tags found
No related merge requests found
{
"C4_Include_Context": {
"scope": "plantuml",
"prefix": "Include C4 Context Diagram",
"body": [
"!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml"
],
"description": "Include C4 Context Diagram"
},
"C4_Include_Container": {
"scope": "plantuml",
"prefix": "Include C4 Container Diagram",
"body": [
"!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml"
],
"description": "Include C4 Container Diagram"
},
"C4_Include_Component": {
"scope": "plantuml",
"prefix": "Include C4 Component Diagram",
"body": [
"!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml"
],
"description": "Include C4 Component Diagram"
},
"C4_Include_Deployment": {
"scope": "plantuml",
"prefix": "Include C4 Deployment Diagram",
"body": [
"!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Deployment.puml"
],
"description": "Include C4 Deployment Diagram"
},
"C4_Include_Dynamic": {
"scope": "plantuml",
"prefix": "Include C4 Dynamic Diagram",
"body": [
"!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Dynamic.puml"
],
"description": "Include C4 Dynamic Diagram"
},
"C4_Person": {
"scope": "plantuml",
"prefix": "Person",
"body": [
"Person(${1:alias}, \"${2:label}\")"
],
"description": "Add Person to C4 diagram"
},
"C4_Person_Descr": {
"scope": "plantuml",
"prefix": "Person with Description",
"body": [
"Person(${1:alias}, \"${2:label}\", \"${3:description}\")"
],
"description": "Add Person with Description to C4 diagram"
},
"C4_Person_Ext": {
"scope": "plantuml",
"prefix": [
"External Person",
"Person (External)"
],
"body": [
"Person_Ext(${1:alias}, \"${2:label}\")"
],
"description": "Add External Person to C4 diagram"
},
"C4_Person_Ext_Descr": {
"scope": "plantuml",
"prefix": [
"External Person with Description",
"Person (External) with Description"
],
"body": [
"Person_Ext(${1:alias}, \"${2:label}\", \"${3:description}\")"
],
"description": "Add External Person with Description to C4 diagram"
},
"C4_Container": {
"scope": "plantuml",
"prefix": "Container",
"body": [
"Container(${1:alias}, \"${2:label}\", \"${3:technology}\")"
],
"description": "Add Container to C4 diagram"
},
"C4_Container_Descr": {
"scope": "plantuml",
"prefix": "Container with Description",
"body": [
"Container(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\")"
],
"description": "Add Container with Description to C4 diagram"
},
"C4_Container_Ext": {
"scope": "plantuml",
"prefix": [
"External Container",
"Container (External)"
],
"body": [
"Container_Ext(${1:alias}, \"${2:label}\", \"${3:technology}\")"
],
"description": "Add External Container to C4 diagram"
},
"C4_Container_Ext_Descr": {
"scope": "plantuml",
"prefix": [
"External Container with Description",
"Container (External) with Description"
],
"body": [
"Container_Ext(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\")"
],
"description": "Add External Container with Description to C4 diagram"
},
"C4_ContainerDb": {
"scope": "plantuml",
"prefix": "Database Container",
"body": [
"ContainerDb(${1:alias}, \"${2:label}\", \"${3:technology}\")"
],
"description": "Add Database Container to C4 diagram"
},
"C4_ContainerDb_Descr": {
"scope": "plantuml",
"prefix": "Database Container with Description",
"body": [
"ContainerDb(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\")"
],
"description": "Add Database Container with Description to C4 diagram"
},
"C4_ContainerDb_Ext": {
"scope": "plantuml",
"prefix": [
"External Database Container",
"Database Container (External)"
],
"body": [
"ContainerDb_Ext(${1:alias}, \"${2:label}\", \"${3:technology}\")"
],
"description": "Add External Database Container to C4 diagram"
},
"C4_ContainerDb_Ext_Descr": {
"scope": "plantuml",
"prefix": [
"External Database Container with Description",
"Database Container (External) with Description"
],
"body": [
"ContainerDb_Ext(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\")"
],
"description": "Add External Database Container with Description to C4 diagram"
},
"C4_ContainerQueue": {
"scope": "plantuml",
"prefix": "Queue Container",
"body": [
"ContainerQueue(${1:alias}, \"${2:label}\", \"${3:technology}\")"
],
"description": "Add Queue Container to C4 diagram"
},
"C4_ContainerQueue_Descr": {
"scope": "plantuml",
"prefix": "Queue Container with Description",
"body": [
"ContainerQueue(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\")"
],
"description": "Add Queue Container with Description to C4 diagram"
},
"C4_ContainerQueue_Ext": {
"scope": "plantuml",
"prefix": [
"External Queue Container",
"Queue Container (External)"
],
"body": [
"ContainerQueue_Ext(${1:alias}, \"${2:label}\", \"${3:technology}\")"
],
"description": "Add External Queue Container to C4 diagram"
},
"C4_ContainerQueue_Ext_Descr": {
"scope": "plantuml",
"prefix": [
"External Queue Container with Description",
"Queue Container (External) with Description"
],
"body": [
"ContainerQueue_Ext(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\")"
],
"description": "Add ExternalQueue Container with Description to C4 diagram"
},
"C4_Container_Boundary": {
"scope": "plantuml",
"prefix": [
"Container Boundary",
"Boundary for Container"
],
"body": [
"Container_Boundary(${1:alias}, \"${2:label}\"){",
"\t$0",
"}"
],
"description": "Add a Container Boundary to C4 diagram"
},
"C4_Component": {
"scope": "plantuml",
"prefix": "Component",
"body": [
"Component(${1:alias}, \"${2:label}\", \"${3:technology}\")"
],
"description": "Add Component to C4 diagram"
},
"C4_Component_Descr": {
"scope": "plantuml",
"prefix": "Component with Description",
"body": [
"Component(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\")"
],
"description": "Add Component with Description to C4 diagram"
},
"C4_Component_Ext": {
"scope": "plantuml",
"prefix": [
"External Component",
"Component (External)"
],
"body": [
"Component_Ext(${1:alias}, \"${2:label}\", \"${3:technology}\")"
],
"description": "Add External Component to C4 diagram"
},
"C4_Component_Ext_Descr": {
"scope": "plantuml",
"prefix": [
"External Component with Description",
"Component (External) with Description"
],
"body": [
"Component_Ext(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\")"
],
"description": "Add External Component with Description to C4 diagram"
},
"C4_ComponentDb": {
"scope": "plantuml",
"prefix": "Database Component",
"body": [
"ComponentDb(${1:alias}, \"${2:label}\", \"${3:technology}\")"
],
"description": "Add Database Component to C4 diagram"
},
"C4_ComponentDb_Descr": {
"scope": "plantuml",
"prefix": "Database Component with Description",
"body": [
"ComponentDb(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\")"
],
"description": "Add Database Component with Description to C4 diagram"
},
"C4_ComponentDb_Ext": {
"scope": "plantuml",
"prefix": [
"External Database Component",
"Database Component (External)"
],
"body": [
"ComponentDb_Ext(${1:alias}, \"${2:label}\", \"${3:technology}\")"
],
"description": "Add External Database Component to C4 diagram"
},
"C4_ComponentDb_Ext_Descr": {
"scope": "plantuml",
"prefix": [
"External Database Component with Description",
"Database Component (External) with Description"
],
"body": [
"ComponentDb_Ext(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\")"
],
"description": "Add External Database Component with Description to C4 diagram"
},
"C4_ComponentQueue": {
"scope": "plantuml",
"prefix": "Queue Component",
"body": [
"ComponentQueue(${1:alias}, \"${2:label}\", \"${3:technology}\")"
],
"description": "Add Queue Component to C4 diagram"
},
"C4_ComponentQueue_Descr": {
"scope": "plantuml",
"prefix": "Queue Component with Description",
"body": [
"ComponentQueue(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\")"
],
"description": "Add Queue Component with Description to C4 diagram"
},
"C4_ComponentQueue_Ext": {
"scope": "plantuml",
"prefix": [
"External Queue Component",
"Queue Component (External)"
],
"body": [
"ComponentQueue_Ext(${1:alias}, \"${2:label}\", \"${3:technology}\")"
],
"description": "Add External Queue Component to C4 diagram"
},
"C4_ComponentQueue_Ext_Descr": {
"scope": "plantuml",
"prefix": [
"External Queue Component with Description",
"Queue Component (External) with Description"
],
"body": [
"ComponentQueue_Ext(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\")"
],
"description": "Add External Queue Component with Description to C4 diagram"
},
"C4_System": {
"scope": "plantuml",
"prefix": "System",
"body": [
"System(${1:alias}, \"${2:label}\")"
],
"description": "Add System to C4 diagram"
},
"C4_System_Descr": {
"scope": "plantuml",
"prefix": "System with Description",
"body": [
"System(${1:alias}, \"${2:label}\", \"${3:description}\")"
],
"description": "Add System with Description to C4 diagram"
},
"C4_System_Ext": {
"scope": "plantuml",
"prefix": [
"External System",
"System (External)"
],
"body": [
"System_Ext(${1:alias}, \"${2:label}\")"
],
"description": "Add External System to C4 diagram"
},
"C4_System_Ext_Descr": {
"scope": "plantuml",
"prefix": [
"External System with Description",
"System (External) with Description"
],
"body": [
"System_Ext(${1:alias}, \"${2:label}\", \"${3:description}\")"
],
"description": "Add External System with Description to C4 diagram"
},
"C4_SystemDb": {
"scope": "plantuml",
"prefix": "Database System",
"body": [
"SystemDb(${1:alias}, \"${2:label}\")"
],
"description": "Add Database System to C4 diagram"
},
"C4_SystemDb_Descr": {
"scope": "plantuml",
"prefix": "Database System with Description",
"body": [
"SystemDb(${1:alias}, \"${2:label}\", \"${3:description}\")"
],
"description": "Add Database System with Description to C4 diagram"
},
"C4_SystemDb_Ext": {
"scope": "plantuml",
"prefix": [
"External Database System",
"Database System (External)"
],
"body": [
"SystemDb_Ext(${1:alias}, \"${2:label}\")"
],
"description": "Add External Database System to C4 diagram"
},
"C4_SystemDb_Ext_Descr": {
"scope": "plantuml",
"prefix": [
"External Database System with Description",
"Database System (External) with Description"
],
"body": [
"SystemDb_Ext(${1:alias}, \"${2:label}\", \"${3:description}\")"
],
"description": "Add External Database System with Description to C4 diagram"
},
"C4_SystemQueue": {
"scope": "plantuml",
"prefix": "Queue System",
"body": [
"SystemQueue(${1:alias}, \"${2:label}\")"
],
"description": "Add Queue System to C4 diagram"
},
"C4_SystemQueue_Descr": {
"scope": "plantuml",
"prefix": "Queue System with Description",
"body": [
"SystemQueue(${1:alias}, \"${2:label}\", \"${3:description}\")"
],
"description": "Add Queue System with Description to C4 diagram"
},
"C4_SystemQueue_Ext": {
"scope": "plantuml",
"prefix": [
"External Queue System",
"Queue System (External)"
],
"body": [
"SystemQueue_Ext(${1:alias}, \"${2:label}\")"
],
"description": "Add External Queue System to C4 diagram"
},
"C4_SystemQueue_Ext_Descr": {
"scope": "plantuml",
"prefix": [
"External Queue System with Description",
"Queue System (External) with Description"
],
"body": [
"SystemQueue_Ext(${1:alias}, \"${2:label}\", \"${3:description}\")"
],
"description": "Add External Queue System with Description to C4 diagram"
},
"C4_System_Boundary": {
"scope": "plantuml",
"prefix": [
"System Boundary",
"Boundary for System"
],
"body": [
"System_Boundary(${1:alias}, \"${2:label}\"){",
"\t$0",
"}"
],
"description": "Add a System Boundary to C4 diagram"
},
"C4_Enterprise_Boundary": {
"scope": "plantuml",
"prefix": [
"Enterprise Boundary",
"Boundary for Enterprise"
],
"body":[
"Enterprise_Boundary(${1:alias}, \"${2:label}\"){",
"\t$0",
"}"
],
"description": "Add an Enterprise Boundary to C4 diagram"
},
"C4_Relationship": {
"scope": "plantuml",
"prefix": "Relationship",
"body": [
"Rel(${1:from_alias}, ${2:to_alias}, \"${3:label}\")"
],
"description": "Add unidirectional Relationship to C4 diagram"
},
"C4_Relationship_Techn": {
"scope": "plantuml",
"prefix": "Relationship with Technology",
"body": [
"Rel(${1:from_alias}, ${2:to_alias}, \"${3:label}\", \"${4:technology}\")"
],
"description": "Add unidirectional Relationship with Technology to C4 diagram"
},
"C4_Relationship_Bi": {
"scope": "plantuml",
"prefix": "Bidirectional Relationship",
"body": [
"BiRel(${1:from_alias}, ${2:to_alias}, \"${3:label}\")"
],
"description": "Add bidirectional Relationship to C4 diagram"
},
"C4_Relationship_Bi_Techn": {
"scope": "plantuml",
"prefix": "Bidirectional Relationship with Technology",
"body": [
"BiRel(${1:from_alias}, ${2:to_alias}, \"${3:label}\", \"${4:technology}\")"
],
"description": "Add bidirectional Relationship with Technology to C4 diagram"
},
"C4_Relationship_Index": {
"scope": "plantuml",
"prefix": "Relationship with Index",
"body": [
"RelIndex(${1:index}, ${2:from_alias}, ${3:to_alias}, \"${4:label}\")"
],
"description": "Add unidirectional Relationship to C4 Dynamic Diagram"
},
"C4_Relationship_Index_Techn": {
"scope": "plantuml",
"prefix": "Relationship with Technology and Index",
"body": [
"RelIndex(${1:index}, ${2:from_alias}, ${3:to_alias}, \"${4:label}\", \"${5:technology}\")"
],
"description": "Add unidirectional Relationship with Technology to C4 Dynamic Diagram"
},
"C4_Layout_Right": {
"scope": "plantuml",
"prefix": "Layout to Right side",
"body": [
"Lay_R(${1:from_alias}, ${2:to_alias})"
],
"description": "Add hidden layout line to put {to} to the right of {from}"
},
"C4_Layout_Left": {
"scope": "plantuml",
"prefix": "Layout to Left side",
"body": [
"Lay_L(${1:from_alias}, ${2:to_alias})"
],
"description": "Add hidden layout line to put {to} to the left of {from}"
},
"C4_Boundary": {
"scope": "plantuml",
"prefix": "Boundary",
"body": [
"Boundary(${1:alias}, \"${2:label}\"){",
"\t$0",
"}"
],
"description": "Add a generic boundary to C4 diagram."
},
"C4_Boundary_Type": {
"scope": "plantuml",
"prefix": [
"Boundary with type"
],
"body": [
"Boundary(${1:alias}, \"${2:label}\", \"${3:type}\"){",
"\t$0",
"}"
],
"description": "Add a generic boundary to C4 diagram."
},
"C4_Deployment_Node": {
"scope": "plantuml",
"prefix": "Deployment Node",
"body": [
"Deployment_Node(${1:alias}, \"${2:label}\"){",
"\t$0",
"}"
],
"description": "Add a deployment node to C4 diagram."
},
"C4_Deployment_Node_Type": {
"scope": "plantuml",
"prefix": [
"Deployment Node with type"
],
"body": [
"Deployment_Node(${1:alias}, \"${2:label}\", \"${3:type}\"){",
"\t$0",
"}"
],
"description": "Add a deployment node to C4 diagram."
},
"C4_Dynamic_Increment": {
"scope": "plantuml",
"prefix": [
"Increment index"
],
"body": [
"increment(${1:count})"
],
"description": "Increment index of C4 Dynamic Diagram."
},
"C4_Dynamic_Set_Index": {
"scope": "plantuml",
"prefix": [
"Set index"
],
"body": [
"setIndex(${1:value})"
],
"description": "Set index of C4 Dynamic Diagram"
},
"C4_Hide_Stereotype": {
"scope": "plantuml",
"prefix": [
"Hide stereotype",
"No stereotype"
],
"body": [
"HIDE_STEREOTYPE()"
],
"description": "Hide stereotypes from C4 diagram.."
},
"C4_Layout_With_Legend": {
"scope": "plantuml",
"prefix": [
"Layout with legend",
"Legend layout"
],
"body": [
"LAYOUT_WITH_LEGEND()"
],
"description": "Add legend to C4 diagram."
},
"C4_Layout_Left_Right": {
"scope": "plantuml",
"prefix": [
"Layout left to right",
"Left to right layout"
],
"body": [
"LAYOUT_LEFT_RIGHT()"
],
"description": "Left to right layout for C4 diagram."
},
"C4_Layout_Top_Down": {
"scope": "plantuml",
"prefix": [
"Layout top down",
"Top down layout"
],
"body": [
"LAYOUT_TOP_DOWN()"
],
"description": "Top down layout for C4 diagram."
},
"C4_Layout_As_Sketch": {
"scope": "plantuml",
"prefix": [
"Layout as sketch",
"Sketch layout"
],
"body": [
"LAYOUT_AS_SKETCH()"
],
"description": "Sketch layout for C4 diagram."
}
}
\ No newline at end of file
......@@ -2,19 +2,9 @@
Universitetsbiblioteket i Bergens repositorium for Sanity.io redigeringsklient og Next.js frontend. Nansen utstillingen er et samarbeid mellom biblioteket og prosjektet [Arven etter Nansen](https://arvenetternansen.com/). Utstillingen ble laget i perioden 2020-21.
## Struktur
## Documentation
Repositoriet består av to mapper, `studio` og `web`. `studio` inneholder koden for å kjøre [Sanity Studio](https://www.sanity.io/docs/sanity-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.
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.
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.
`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.
## Sanity Manage
[Sanity Manage](https://www.sanity.io/manage)
See [the docs](./docs/README.md)
## Deployment
......
# Muna system
WIP! Nansen is based on the Muna software architecture. Muna is documented using the [C4 model](https://c4model.com/).
## Context
Software architecture overview.
![](./diagrams/context.svg)
## Container
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).
### 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.
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.
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.
![](./diagrams/container_studio.svg)
### Sanity Manage
[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.
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
@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
' !include C4_Container.puml
LAYOUT_TOP_DOWN()
'LAYOUT_AS_SKETCH()
LAYOUT_WITH_LEGEND()
Person(editor, "Editor", "Creator of website.")
System_Boundary(c1, "studio", "React SPA"){
Container(studio, "Studio", "React 16+", "Allows editor to create content.")
}
ContainerDb_Ext(sanity_db, "Sanity Cloud Storage", "Google Cloud", "Stores metadata and files.")
Rel(editor, studio, "Uses", "HTTPS")
Rel_R(studio, sanity_db, "Reads from and writes to", "HTTPS")
@enduml
\ No newline at end of file
@startuml "context"
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml
' uncomment the following line and comment the first to use locally
' !include C4_Context.puml
AddSystemTag("s", )
LAYOUT_TOP_DOWN()
' LAYOUT_AS_SKETCH()
LAYOUT_WITH_LEGEND()
Person_Ext(visitor, "Visitor", "A visitor of Nansen.")
Person(editor, "Editor", "Creator of website.")
Person(developer, "Developer", "Developer of system.")
' Enterprise_Boundary(c0, "UiB Library") {}
System(studio, "Sanity Studio", "Allows editors to create content.", $sprite="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==")
SystemDb_Ext(sanity, "Sanity Cloud Storage", "Proprietary DB on top of Google Cloud PostgreSQL", $sprite="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==")
SystemDb_Ext(sanityManage, "Sanity Manage", "Sanity backend for projects, datasets, configs and access.", $sprite="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==")
System(website, "Website", "Frontend with static generated pages and APIs.", $sprite="img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABm0lEQVRoQ92Z25LDMAhDt///0dtJpu4kDhgBimPaZ0x0LPCtrz/+7x9I+QJiXCGshIj4kbC0jkyCrHgNLKQpMugugCOYW5d3wAyIEBAKMhvADYOAPAkBA1kgq0A0IFXvCGQ1iCGMBrIqxAYjaq4IIsJIICu7oTZ/D1IF4uJKZZATzBGkkhuXEnsahPH9PUdLlHEjIyYz9rSv/ALIbggbZEvqcZfhyG0gHhgqiGcGpVtdZlNdHgR1hQWyr1p3ONKcs3IvC7IJ94jzxA6fh9iONAdQgWic+cY1A2TUL8uD9KdTrVdKgCAwJUGkEisDYrlSCgSFsfac4SM4+9CINLVWYiVAEFfKgFgw5qanBJxuiOghzzr9IrNKa/CPmN8FiboSWTBYrnzz9JcipDSitdyPY8CoIFFXInBZkJMJmWtqRDzLlYtuCWSmK9ElGQZ5CgbpUXHyNUfQOzejvDyuqHotkJnOWM0/1IqAPAHTl5ip0ww41A5Sv4xSO26wsD44cCJQRJP8Dyk4rXc5NB2EvbKFAJqI1GDBOY9L1G+/AToZcCqjfA/hAAAAAElFTkSuQmCC")
System(proxy, "Proxy", "Reverse proxy for serving Nansen with UiB domain.")
System(deployment, "Vercel", "Deploys studio and website.", $sprite="img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABU0lEQVRoQ+2ZWwqDMBBFR92j4joU3IKgCxFdo6akoNjSVmcyNxWZgF+dPM49yfw0ISJHNxiJgVzMohm5mBAyI2YElIBdLVCw4mXNiDg60EQzAgpWvKwZORudc478l6bp2SmiOqgRf/h5np8HSxK/FW5AQbyJ/UDCwECqqqK+719AvKF3OC1HMJBvB0ZZgYD8Sn0YBirLUkvEtk50ENTDVwc58wYQ7VgVZN9uj+6O9ltRBTljA9WO1UDquqau645EwNqxGgjXxkqkdcVUQKQQHmYcRyqKgmXyU/HfQbTacTBIiI01WY12HATCabdHdyf0rQSBaNjQasdikKZpqG3bo6BZv2dZRsuysOZs3U/6/4i2jdB2LDKCgvAw0zRRnudsK5cDkbZjEQg7rggTDCRCyKwtzAgrrgjFZiRCyKwtzAgrrgjFZiRCyKwtzAgrrgjFtzHyAKakjAEBm5CuAAAAAElFTkSuQmCC")
System_Ext(marcusManifest, "Marcus manifest", "Temporary API for Marcus IIIF manifests.")
System(git, "GitHub", "Version control", $sprite="img:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAACZElEQVRoQ+2YzUpCURDHJ/AZJNBcSJJIubBoUSs3iZCvEO0qyTfwI30Hoy8JcxFucivUE0RPIRYhIgjuXBhXuGCXe87MnHO4qFx3cubMf37zn+Px3o3ZbDaDNfhs+CBL5qLvyJIZAr4ja+1Ir9eDw4MDEuPvYECKowYZGa3NYJCq5xpnAkoLRBfASaUDpATy3e/Dfiql5YJosyoMG8S0C25AT40GnOZyrEaxQLyAsKs/yWTgpdUiw5BBvISwq6/c3MBVPk+C0QKx5rlSLsP93R1JTBT03GxCNpsFt2ZRzwwJROSGU4TrGnU/BQYFkRVHEeBYJdLaSybh/eNDmkoZJJ1Ow2u7zakTjdVpmhQEGxWvHLE6gGmtDAgGowyCdQidI0GA6ngpgVwXClAslVRrle4zDqKa0ASdSPvi8hKqtZqrhNCRZQSRnRMfxMQIiXKoTIPvyMo4sptIwHA4FNa7FvcIdsvquKVyPiw9pQvRLtS0Kzr/7bRATDqDQWBaUpDRaASJeBydFB1nxuMx7MRi2hrs5xG7aFkH3zodODo+di2uVCzC48MDWrgzAGsWCmIldBaNwWCilDFaBMHyoYfdTuYU/vz6gkgkMl92rvV/fiAQCEg7vhUKwXQ6JbtiDETkivXGMRQOw/nZGXS7XfQpbrFyqisUCLIjImeoIm6tp4Bw8pPOiKyTHDGOI9y8bBC3MeMeTFM5FnWVQGSFUDtJfelH/UVQBrEEJpMJbEej/7RUQaj7RGBaIHbS23odatXq/Cu1INsRajzmjBEQTMSLdR/Eiy5zNHxHON3yItZ3xIsuczT+ANqRwHq+fLT7AAAAAElFTkSuQmCC")
System_Ext(marcus, "Marcus", "Content provider")
System_Ext(kulturnav, "Kulturnav", "Content provider")
System_Ext(nb, "NB.no", "Content provider")
Rel_R(studio, sanity, "Read/Write", "HTTPS")
Rel_L(website, sanity, "Read", "HTTPS")
Rel_U(studio, marcus, "Imports", "HTTPS")
Rel_U(studio, kulturnav, "Imports", "HTTPS")
Rel_U(studio, nb, "Imports", "HTTPS")
Rel_R(website, marcusManifest, "Loads")
Rel_U(proxy, website, "Reverse proxy")
Rel_U(visitor, proxy, "Enjoys")
Rel_U(editor, studio, "Creates content")
Rel_R(developer, git, "Pushes code")
Rel_L(developer, sanityManage, "Manages Sanity")
Rel_D(developer, deployment, "Manages deployment")
Rel_D(git, deployment, "Triggers build", "Webhook")
Rel_D(deployment, studio, "Serves", "HTTPS")
Rel_D(deployment, website, "Serves", "HTTPS")
@enduml
\ No newline at end of file
@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Deployment.puml
' uncomment the following line and comment the first to use locally
' !include C4_Deployment.puml
AddElementTag("fallback", $bgColor="#c0c0c0")
AddRelTag("fallback", $textColor="#c0c0c0", $lineColor="#438DD5")
WithoutPropertyHeader()
' calculated legend is used (activated in last line)
' LAYOUT_WITH_LEGEND()
title Deployment Diagram for Muna
Deployment_Node(vercel, "Vercel", "???", "Vercel cloud"){
AddProperty("Location", "Cloud")
Deployment_Node_R(bb2, "bigbank-web***\tx4", "Node", "A web server residing in the web server farm, accessed via F5 BIG-IP LTMs."){
Container(editor_web, "Single Page Application", "JavaScript and React", "Provides all of the content editing functionality to the editor via their web browser.")
}
AddProperty("Location", "Cloud")
Deployment_Node_R(bb3, "bigbank-web***\tx5", "Node", "A web server residing in the web server farm, accessed via F5 BIG-IP LTMs."){
Container(user_web, "Single Page Application", "JavaScript and React", "Provides all of the content editing functionality to the editor via their web browser.")
}
}
Deployment_Node(sanity, "Sanity", "???", "Google cloud"){
AddProperty("Location", "London")
Deployment_Node_L(sanitydb01, "sanity-db01", "PostgreSQL", "The primary database server."){
ContainerDb(db, "Database", "Relational Database Schema", "Stores content")
}
}
Deployment_Node(editor_device, "Editor's computer", "Mircosoft Windows, Apple macOS or mobile device"){
Deployment_Node(editor_browser, "Web Browser", "Google Chrome, Mozilla Firefox, Apple Safari or Microsoft Edge"){
Container(editor_spa, "Single Page Application", "JavaScript and React", "Provides all of the content editing functionality to the editor via their web browser.")
}
}
Deployment_Node(user_device, "Visitor's computer", "Mircosoft Windows, Apple macOS or mobile device"){
Deployment_Node(user_browser, "Web Browser", "Google Chrome, Mozilla Firefox, Apple Safari or Microsoft Edge"){
Container(user_spa, "Single Page Application", "JavaScript and React", "Provides the user with the content to their web browser.")
}
}
Rel_U(editor_web, editor_spa, "Delivers to the editors's web browser")
Rel_U(user_web, user_spa, "Delivers to the users's web browser")
SHOW_LEGEND()
@enduml
\ No newline at end of file
docs/diagrams/src/github.png

6.94 KiB

docs/diagrams/src/next.png

7.04 KiB

docs/diagrams/src/sanity.png

10.6 KiB

docs/diagrams/src/vercel.png

8.77 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment