@startuml

' load the C4 PlantUML template  
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml

' for the databse shape `ContainerDb`
!define ICONS https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/

LAYOUT_TOP_DOWN()
LAYOUT_WITH_LEGEND()

title C4 Container diagram for Raido

Person_Ext(PublicUser, "Public User", "[anonymous]")
Person(SpUser, "ServicePoint User", "[OIDC authenticated]")
System_Ext(SpInt, "ServicePoint\nIntegration", "[api-key authenticated]")
System_Ext(IdProvider, "ID Provider", "[Google / AAF / ORCiD]")
System_Ext(LocalHdlSvc, "Local Handle Service", "[ARDC DevOps]")


System_Boundary(raidoC1, "Raido") {
  Container(AppClient, "app-client", "Raido UI React/SPA") 
  Container(PubClient, "pub-client", "any web tech\ncurrently uses app-client") 
  
  Container(WebServer, "web server", "Cloudfront") 
  Container(ApiSvc, "api-svc", "Spring REST API") 
  ContainerDb(db, "Database", "RDS PostgreSQL")
}

 

Rel(PublicUser, PubClient, "Uses", "in browser")
Rel(SpUser, AppClient, "Uses", "in browser")
Rel(SpUser, IdProvider, "Identifies with", "HTTPS/OAuth2")
Rel(AppClient, WebServer, "Uses", "HTTPS")
Rel(PubClient, WebServer, "Uses", "HTTPS")
Rel(WebServer, ApiSvc, "Uses", "HTTPS")
Rel(SpInt, WebServer, "Uses", "HTTPS")
Rel(ApiSvc, db, "read/write", "postgres:5432")
Rel(ApiSvc, LocalHdlSvc, "mint", "HTTPS")
@enduml

