Skip to content

Container

    C4Container
    title Container diagram for Teamerr
      Person(flexworker, "Flexworker", "Temporary hired worker")
      Person(hiring-user,"Hiring company user","User from hiring company with different roles")
    System_Boundary(teamerr-system,"Teamerr system"){
    Container_Boundary(teamerr, "Teamerr") {
        Container(caddy, "Webserver,reverse proxy","Node,Caddy,Docker container", "Proxying requests, implements SSL, holds minified React SPA/PWA")
        Container(be, "Backend API","Python,DRF,Docker Container", "Provide REST API for frontend to consume")
        Container(celery, "Celery Worker","Python,Celery,Docker Container", "Worker to perform async tasks")
        Rel(flexworker,caddy,"Access PWA")
        Rel(hiring-user,caddy,"Access Webapp")
        BiRel(caddy,be,"Forwards requests to API")
        BiRel(be,postgresql, "Read/Write data")
        BiRel(be,mysolution, "Consume REST API")
        BiRel(be,s3, "Read write data")
        BiRel(be,redis, "Read write data")
    }
    Container_Boundary(storages, "storages"){
            ContainerDb(redis, "Cache, Pub/Sub","Redis,Docker Container", "Cache data for performance, Pub/Sub queue for celery workers")
            ContainerDb(postgresql, "Database","Postgresql,Docker Container", "Main data storage")
        }
        }
    System_Boundary(external_system,"External Systems"){
            System_Ext(mysolution, "Mysolution", "External ERP system based on salesforce")
         System_Ext('google', "Google auth", "Social authorization")
         ContainerDb(s3,"Object storage", "Cloudflare R2 to store files")
    }
    UpdateLayoutConfig($c4ShapeInRow="4", $c4BoundaryInRow="2")