Skip to content

C4 model

Paweł Kłos edited this page Feb 26, 2022 · 6 revisions

The C4 model is created using the tool: https://structurizr.com/

C1 - General view C1

C2 - System view C2

C3 - Component view C3

 workspace {    
    model {
        user = person "User" {
            description "User with or without an account"
        }
 
         softwareSystem = softwareSystem "Weather platform" {
            desktopApp = container "Desktop application" {
                user -> this "Uses"
            }
            mobileApp = container "Mobile app" {
                user -> this "Uses"
            }
            ApiControler = container "Api - Controler" {
                InterfaceToDonwloadWeather = component "Interface to donwload weather" "1234" {
                    this -> desktopApp "Uses [json/https]"
                    this -> mobileApp "Uses [json/https]"
                }
                webapp3 = component "Reset Password" {
                    this -> desktopApp "Uses [json/https]"
                    this -> mobileApp "Uses [json/https]"
                }
                logIn = component "LogIn" {
                    this -> desktopApp "Uses [json/https]"
                    this -> mobileApp "Uses [json/https]"
                }
                CreateAcc = component "Create account" {
                    this -> desktopApp "Uses [json/https]"
                    this -> mobileApp "Uses [json/https]"
                }
                securyty = component "Security bridge" {
                    this -> webapp3 "Uses [json/https]"
                    this -> logIn "Uses [json/https]"
                    this -> CreateAcc "Uses [json/https]"
                }
                  DBinterfaceApi = component "Database interface" {
                    this -> securyty "Get data about user"
                }
                
                weatherReasoning = component "Weather inference based on your user profile" {
                    InterfaceToDonwloadWeather -> this "downloads and sends data from the weather profile"
                    
                    DBinterfaceApi -> this "Uses [json/https]"
                }
                
              
                
                desktopApp -> this "Reads from and writes to"
                mobileApp -> this "Reads from and writes to"
            }
            dataBase = container "Database" {
                this -> DBinterfaceApi "read/write"
                ApiControler -> this "Read/Write"
            }
        }
        
        softwareSystemm = softwareSystem "Weather API" {
                webapp2 = container "Web Application" {
                ApiControler -> this "Api Call"
                weatherReasoning -> this "Uses [json/https]"
            }
        }
        
  
        
        
    }
    views {
        systemContext softwareSystem {
            include *
            autolayout lr
        }

        container softwareSystem {
            include *
            autolayout lr
        }
        
        component ApiControler {
            include *
            autolayout lr
        }

        theme default
    }

}
Clone this wiki locally