workspace "IXOlist | Governanse | Business processes" { !identifiers hierarchical model { properties { "structurizr.groupSeparator" "/" } admin = person "Moderator" { # description \ # "The Moderator responds to proposal" perspectives { "Proposal Jurisdiction" "Moderators can Approve or reject the proposal within 72 hours" "Proposal Token Contract" "Moderators can Approve or reject the proposal within 72 hours" "Proposal Token" "Moderators can Approve or reject the proposal within 72 hours" } tags "Person" } user = person "Customer" { # description \ # "The user creates a Proposal" perspectives { "Proposal Jurisdiction" "If all the necessary conditions are met, the user may apply for the creation of a jurisdiction, a token contract, and a token" "Proposal Token Contract" "If all the necessary conditions are met, the user may apply for the creation of a jurisdiction, a token contract, and a token" "Proposal Token" "If all the necessary conditions are met, the user may apply for the creation of a jurisdiction, a token contract, and a token" } tags "Person" } owner-token_contract = person "Token Contract Owner" token-issuer = person "Token Issuer" { tags "Person" } account-a = softwareSystem "Account A" { tags "Main Account" } account-b = softwareSystem "Account B" { tags "Main Account" } account-token_contract = softwareSystem "Token contract account" { tags "Main Account" } group "IXOlist" { governance = softwareSystem "Governance" { description "Business processes" tags "Business processes softwaresystem" url "https://ixolist.netlify.app/apps/governance/" } } group "IXOlist" { group "Governance" { web3 = softwaresystem "Web3 authentication tool" { group "Transaction request prompt" { Wallet = container "Sign to proposal" { tags "Button" perspectives { "Proposal Jurisdiction" 1 } perspectives { "Proposal Token Contract" 1 } perspectives { "Proposal Token" 1 } } } group "Transaction request prompt" { web3-sign = container "Sign" { tags "Button" perspectives { "Proposal Jurisdiction" 1 } perspectives { "Proposal Token Contract" 1 } perspectives { "Proposal Token" 1 } } } tags "Architectures softwaresystem" } msig = softwareSystem "Msig" { tags "Contract" } enterprise_contract = softwareSystem "Enterprise" { tags "Contract" } jurisdiction-create = softwareSystem "Jurisdiction Create" { group "Create" { jurisdiction-create-create = container "Create" { tags "Button state" } } group "Jurisdiction Establishment" { jurisdiction-create-code = container "Code" { tags "Input Field" } jurisdiction-create-code-parent = container "Code parent" { tags "Input Field" } jurisdiction-create-name = container "Name" { tags "Input Field" } } group "Transaction data" { jurisdiction-create-submit = container "Submit" { tags "Button" } } group "Msig" { jurisdiction-create-approve = container "Approve" { tags "Button" } jurisdiction-create-execute = container "Execute" { tags "Button" } } tags "Architectures softwaresystem" } smart_contract-add = softwareSystem "Smart contract add on Jurisdiction" { group "Create" { smart_contract-add-create = container "Create" { tags "Button state" } } group "Smart contract add on Jurisdiction" { smart_contract-add-jurisdiction = container "Jurisdiction" { tags "Input Field" } smart_contract-add-token_contract = container "Token contract" { tags "Input Field" } smart_contract-add-type = container "Type" { tags "Input Field" } } group "Transaction data" { smart_contract-add-submit = container "Submit" { tags "Button" } } group "Msig" { smart_contract-add-approve = container "Approve" { tags "Button" } smart_contract-add-execute = container "Execute" { tags "Button" } } tags "Architectures softwaresystem" } token-create = softwareSystem "Token Create" { group "Create" { token-create-create = container "Create" { tags "Button state" } } group "Token Create" { token-create-issuer = container "Issuer" { tags "Input Field" } token-create-jurisdiction = container "Jurisdiction" { tags "Input Field" } token-create-maximum_supply = container "Maximum supply" { tags "Input Field" } token-create-precision = container "Precision" { tags "Input Field" } token-create-symbol = container "Symbol" { tags "Input Field" } token-create-token_contract = container "Token contract" { tags "Input Field" } } group "Transaction data" { token-create-submit = container "Submit" { tags "Button" } } group "Msig" { token-create-approve = container "Approve" { tags "Button" } token-create-execute = container "Execute" { tags "Button" } } tags "Architectures softwaresystem" } token_contract = softwareSystem "Token Contract" { tags "Contract" } } } "account-a" -> "jurisdiction-create.jurisdiction-create-create" "account-a" -> "smart_contract-add.smart_contract-add-create" "account-a" -> "token-create.token-create-create" "account-b" -> "jurisdiction-create.jurisdiction-create-approve" "account-b" -> "jurisdiction-create.jurisdiction-create-execute" "account-b" -> "smart_contract-add.smart_contract-add-approve" "account-b" -> "smart_contract-add.smart_contract-add-execute" "account-b" -> "token-create.token-create-approve" "account-b" -> "token-create.token-create-execute" "admin" -> "account-b" "user" -> "account-a" "owner-token_contract" -> "account-token_contract" "account-token_contract" -> "token-create.token-create-approve" "account-token_contract" -> "token-create.token-create-execute" "msig" -> "enterprise_contract" "msig" -> "token_contract" "web3.web3-sign" -> "msig" "jurisdiction-create.jurisdiction-create-create" -> "jurisdiction-create.jurisdiction-create-name" "jurisdiction-create.jurisdiction-create-create" -> "jurisdiction-create.jurisdiction-create-code-parent" "jurisdiction-create.jurisdiction-create-code" -> "jurisdiction-create.jurisdiction-create-submit" "jurisdiction-create.jurisdiction-create-code-parent" -> "jurisdiction-create.jurisdiction-create-submit" "jurisdiction-create.jurisdiction-create-name" -> "jurisdiction-create.jurisdiction-create-code" "jurisdiction-create.jurisdiction-create-submit" -> "web3.web3-sign" "jurisdiction-create.jurisdiction-create-approve" -> "web3.web3-sign" "jurisdiction-create.jurisdiction-create-execute" -> "web3.web3-sign" "smart_contract-add.smart_contract-add-create" -> "smart_contract-add.smart_contract-add-jurisdiction" "smart_contract-add.smart_contract-add-jurisdiction" -> "smart_contract-add.smart_contract-add-type" "smart_contract-add.smart_contract-add-type" -> "smart_contract-add.smart_contract-add-token_contract" "smart_contract-add.smart_contract-add-token_contract" -> "smart_contract-add.smart_contract-add-submit" "smart_contract-add.smart_contract-add-submit" -> "web3.web3-sign" "smart_contract-add.smart_contract-add-approve" -> "web3.web3-sign" "smart_contract-add.smart_contract-add-execute" -> "web3.web3-sign" "token-create.token-create-create" -> "token-create.token-create-jurisdiction" "token-create.token-create-jurisdiction" -> "token-create.token-create-symbol" "token-create.token-create-maximum_supply" -> "token-create.token-create-issuer" "token-create.token-create-precision" -> "token-create.token-create-maximum_supply" "token-create.token-create-symbol" -> "token-create.token-create-token_contract" "token-create.token-create-token_contract" -> "token-create.token-create-precision" "token-create.token-create-issuer" -> "token-create.token-create-submit" "token-create.token-create-submit" -> "web3.web3-sign" "token-create.token-create-approve" -> "web3.web3-sign" "token-create.token-create-execute" -> "web3.web3-sign" #!include \ # "./4-code/index.dsl" } views { properties { structurizr.sort created } systemLandscape "ixolist-governance-business_process-systemlandscape" { title "IXOlist | Governance | Business processes" include "governance" } #!include \ #"./4-code/index.dsl" #!include \ # "./5-deployment/index.dsl" dynamic "jurisdiction-create" "ixolist-governance-business_process-proposal-jurisdiction-create-dynamic" { title "IXOlist | Governance | Proposal - create # Jurisdiction" "user" -> "account-a" "account-a" -> "jurisdiction-create.jurisdiction-create-create" { { "jurisdiction-create.jurisdiction-create-create" -> "jurisdiction-create.jurisdiction-create-name" } { "jurisdiction-create.jurisdiction-create-create" -> "jurisdiction-create.jurisdiction-create-code-parent" } } "jurisdiction-create.jurisdiction-create-name" -> "jurisdiction-create.jurisdiction-create-code" { { "jurisdiction-create.jurisdiction-create-code" -> "jurisdiction-create.jurisdiction-create-submit" } { "jurisdiction-create.jurisdiction-create-code-parent" -> "jurisdiction-create.jurisdiction-create-submit" } } "jurisdiction-create.jurisdiction-create-submit" -> "web3.web3-sign" "web3.web3-sign" -> "msig" "admin" -> "account-b" "account-b" -> "jurisdiction-create.jurisdiction-create-approve" "jurisdiction-create.jurisdiction-create-approve" -> "web3.web3-sign" "account-b" -> "jurisdiction-create.jurisdiction-create-execute" "jurisdiction-create.jurisdiction-create-execute" -> "web3.web3-sign" "web3.web3-sign" -> "msig" "msig" -> "enterprise_contract" } dynamic "smart_contract-add" "ixolist-governance-business_process-proposal-smart_contract-add-dynamic" { title "IXOlist | Governance | Proposal - create # Smart Contract" "user" -> "account-a" "account-a" -> "smart_contract-add.smart_contract-add-create" "smart_contract-add.smart_contract-add-create" -> "smart_contract-add.smart_contract-add-jurisdiction" "smart_contract-add.smart_contract-add-jurisdiction" -> "smart_contract-add.smart_contract-add-type" "smart_contract-add.smart_contract-add-type" -> "smart_contract-add.smart_contract-add-token_contract" "smart_contract-add.smart_contract-add-token_contract" -> "smart_contract-add.smart_contract-add-submit" "smart_contract-add.smart_contract-add-submit" -> "web3.web3-sign" "web3.web3-sign" -> "msig" "admin" -> "account-b" "account-b" -> "smart_contract-add.smart_contract-add-approve" "smart_contract-add.smart_contract-add-approve" -> "web3.web3-sign" "account-b" -> "smart_contract-add.smart_contract-add-execute" "smart_contract-add.smart_contract-add-execute" -> "web3.web3-sign" "web3.web3-sign" -> "msig" "msig" -> "enterprise_contract" } dynamic "token-create" "ixolist-governance-business_process-proposal-token-create-dynamic" { title "IXOlist | Governance | Proposal - create # Token " "user" -> "account-a" "account-a" -> "token-create.token-create-create" "token-create.token-create-create" -> "token-create.token-create-jurisdiction" "token-create.token-create-jurisdiction" -> "token-create.token-create-symbol" "token-create.token-create-symbol" -> "token-create.token-create-token_contract" "token-create.token-create-token_contract" -> "token-create.token-create-precision" "token-create.token-create-precision" -> "token-create.token-create-maximum_supply" "token-create.token-create-maximum_supply" -> "token-create.token-create-issuer" "token-create.token-create-issuer" -> "token-create.token-create-submit" "token-create.token-create-submit" -> "web3.web3-sign" "web3.web3-sign" -> "msig" "owner-token_contract" -> "account-token_contract" "account-token_contract" -> "token-create.token-create-approve" "token-create.token-create-approve" -> "web3.web3-sign" "admin" -> "account-b" "account-b" -> "token-create.token-create-approve" "token-create.token-create-approve" -> "web3.web3-sign" "account-b" -> "token-create.token-create-execute" "token-create.token-create-execute" -> "web3.web3-sign" "web3.web3-sign" -> "msig" "msig" -> "token_contract" } styles { element "Input Field" { shape "box" width "450" height "150" background "white" opacity "100" } element "Input Field" { border "solid" strokeWidth "5" stroke " #e6e6e6" } element "Input Field" { description true metadata true # icon } element "Input Field" { fontSize "24" color "black" colour "black" } element "Button Rout" { shape "box" width "370" height "115" background "white" opacity "100" } element "Button Rout" { border "dashed" strokeWidth "0" stroke "black" } element "Button Rout" { description true metadata true # icon } element "Button Rout" { fontSize "16" color "black" } element "Info" { shape "box" width "370" height "250" background "white" opacity "100" } element "Info" { border "solid" strokeWidth "0" stroke "black" } element "Info" { description true metadata true # icon } element "Info" { fontSize "20" color "black" } element "Button" { shape "roundedbox" width "260" height "120" background "black" opacity "100" } element "Button" { border "solid" strokeWidth "0" # stroke "blue" } element "Button" { description true metadata true # icon } #!include \ # "./properties/index.dsl" element "Button" { fontSize "16" color "white" } element "Contract" { shape "Hexagon" width "350" height "100" background "white" # opacity "100" } element "Contract" { border "solid" strokeWidth "5" stroke "#9011bb" } element "Contract" { description true metadata true # icon } #!include \ # "./properties/index.dsl" element "Contract" { fontSize "26" color "#9011bb" } element "Main Account" { shape "Circle" width "200" height "75" background "#007acc" # opacity "100" } element "Main Account" { border "solid" strokeWidth "0" #stroke "black" } element "Main Account" { description true metadata true # icon } #!include \ # "./properties/index.dsl" element "Main Account" { fontSize "18" color "white" } element "Account" { shape "Circle" width "200" height "75" background "white" # opacity "100" } element "Account" { border "solid" strokeWidth "0" stroke "black" } element "Account" { description true metadata true # icon } #!include \ # "./properties/index.dsl" element "Account" { fontSize "18" color "black" } element "Type Transfer" { shape "box" width "450" height "305" background "white" opacity "100" } element "Type Transfer" { border "dashed" strokeWidth "0" stroke "black" } element "Type Transfer" { description true metadata true # icon } #!include \ # "./properties/index.dsl" element "Type Transfer" { fontSize "20" color "black" } element "Person" { shape "Person" width "200" height "200" background "#08427B" opacity "100" } element "Person" { border "solid" strokeWidth "0" stroke "#08427B" } element "Person" { description true metadata true # icon } #!include \ # "./properties/index.dsl" element "Person" { fontSize "16" color "white" } element "Business processes softwaresystem" { shape "RoundedBox" width "450" height "300" background "white" # opacity "100" } element "Business processes softwaresystem" { border "solid" strokeWidth "5" stroke "#11bb66" } element "Business processes softwaresystem" { description true metadata true # icon } #!include \ # "./properties/index.dsl" element "Business processes softwaresystem" { fontSize "26" color "#11bb66" } element "Button state" { shape "roundedbox" width "260" height "120" background "white" opacity "100" } element "Button state" { border "dashed" strokeWidth "0" stroke "black" } element "Button state" { description true metadata true # icon } element "Button state" { fontSize "16" color "black" } element "Select" { shape "box" width "350" height "175" background "white" opacity "100" } element "Select" { border "dashed" strokeWidth "0" stroke "black" } element "Select" { description true metadata true # icon } #!include \ # "./properties/index.dsl" element "Select" { fontSize "20" color "black" } element "Architectures softwaresystem" { shape "RoundedBox" width "450" height "300" background "white" # opacity "100" } element "Architectures softwaresystem" { border "solid" strokeWidth "5" stroke "black" } element "Architectures softwaresystem" { description true metadata true # icon } #!include \ # "./properties/index.dsl" element "Architectures softwaresystem" { fontSize "26" color "black" } relationship "123" { routing "Orthogonal" } } terminology { softwaresystem "Module" container "Action" component "Field" } } }