@startuml

skinparam packageStyle rect
skinparam interface {
  backgroundColor black
}
package "Application Development Framework" #lightgreen {
  package "Telematics" {}
  package "Dynamic Mapping" {}
  package "In Vehicle Infomatics" {}
  package "ADAS" {}

}

top to bottom direction
package adc  #dddddd {
    package "Cloud Connected Car" #lightblue {
      package "Ingestion Engine" { }
      package "Annotation Engine" #lightgreen { }
      package "Streaming Engine" #lightgreen { }
      package "AI Framework" #lightgreen { }
      package "Raw Storage" { }
      package "Secondary Storage" { }
      package "Analytics" #lightgreen { }
    }


    package "Connection Services" #ffffaa {
      package "Notification Gateway" #lightgreen { }
      package "Application Store" #lightgreen { }
      package "API Gateways" #lightgreen { }
      package "Data Coordinator" { }
      package "Feedback Gateway" #lightgreen { }
      package "Data Exchange" { }
    }
}

package "Alert Systems" { }
package "External Systems" { }
package "Data Centers" { }
package "Automobile" { }

"Automobile" --> "Cloud Connected Car"
"Data Coordinator" ---> "Data Centers"
"Data Exchange" --> "External Systems"
"Notification Gateway" ---> "Alert Systems"
"Automobile" --> "Ingestion Engine"
"Ingestion Engine" --> "Streaming Engine"
"Streaming Engine" --> "Notification Gateway"
"Streaming Engine" --> "Feedback Gateway"
"Feedback Gateway" --> "Automobile"
"Ingestion Engine" --> "Annotation Engine"
"Annotation Engine" --> "Secondary Storage"
"Annotation Engine" --> "Analytics"
"Annotation Engine" --> "AI Framework"
"Secondary Storage" --> "AI Framework"
"AI Framework" --> "Secondary Storage"
"Ingestion Engine" --> "Raw Storage"
"API Gateways" --> "Data Exchange"
"Secondary Storage" --> "API Gateways"
"Raw Storage" --> "Data Coordinator"
"Secondary Storage" --> "Data Coordinator"
"Analytics" --> "Secondary Storage"
"Analytics" --> "AI Framework"

@enduml

