@startuml container_diagram
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml

LAYOUT_WITH_LEGEND()

Person(user, "User", "Uses the web application to submit requests and view detections.")
Container(webApp, "Web App", "Browser-based", "Allows users to submit images and view detection results.")
Container(api, "API", "FastAPI", "Accepts and processes requests from the Web App.")
Container(svc, "PlasticDetectionService", "Service", "Processes images and returns detection results.")
Container(model, "PlasticDetectionModel", "CNN", "Detects plastic in images.")
System_Ext(sh, "Satellite Data API", "Sentinel Hub")
System_Ext(s3, "Storage", "AWS S3")
System_Ext(rds, "Database", "AWS RDS")
System_Ext(runpod, "Cloud GPU", "RunPod")

Rel(user, webApp, "Uses")
Rel(webApp, api, "Submits requests to", "HTTPS")
Rel(api, svc, "Triggers requests to")
Rel(api, sh, "Searches satellite data from")
Rel(svc, rds, "Reads from and writes to")
Rel(svc, model, "Uses")
Rel(svc, s3, "Stores images in")
Rel_R(api, rds, "Reads from and writes to")
Rel(svc, sh, "Downloads satellite data from")
Rel(model, runpod, "Runs on")

@enduml
