@startuml
skinparam component {
backgroundcolor<<module>> white
}
skinparam queue {
backgroundcolor<<service>> white
}
skinparam package {
backgroundcolor<<core>> lightgreen
}
skinparam database {
backgroundcolor<<drupal>> lightblue
}
skinparam cloud {
backgroundcolor<<plugins>> #F4676B
}
database Content <<drupal>> {
card content [
Each and every content entity
on a Drupal site can be
published to digital signage.
]
}
package "Digital Signage Core" <<core>> as core {
component "DS Content Settings" <<module>> {
database contentsettings [
**Content Entity**
Automatically embedded into each
other content entity on the site
using entity inline form.
Stores properties for each entity
to determine **where** and **how**
they should be published on
platform devices.
]
agent contentevents [
**Event Subscriber**
Reacts on each create, update and delete
event of each entity and if it's published
on any platform device, marks all those
devices due for a schedule update.
]
}
frame "Integration Framework" {
component Device <<module>> {
database devices [
**Content Entity**
**Bundles**: one for each platform
**Create and delete**: only by sync
**Edit**: extra fields can be added
]
}
component Platform <<module>> {
agent platform [
**Plugin Manager**
Provides the interface for each
specific platform and allows
generic implemenation of all
the processes in DS Core.
]
}
component Schedule <<module>> {
database schedules [
**Content Entity**
Represents a sequence of content
entities and is assigned to one or
many devices.
]
agent schedulegenerator [
**Schedule Generator Framework**
Schedules are generated automatically
driven by the content properties.
The generator is implemented as a plugin
so that custom plugins can be installed
to implement custom rules.
]
agent defaultgenerator [
**Default Generator**
--
This is delivered with the
Digital Signage Core.
The documentation for this
generator can be found [[schedules here]].
]
}
}
queue Crons <<service>> {
agent devicesynccron [
**Synchronize Devices**
]
agent scheduleupdatecron [
**Update Schedules**
]
agent publishschedulecron [
**Publish Schedules**
]
}
}
cloud "Digital Signage Platforms" as platforms <<plugins>> {
component signageos [
**signageOS**
--
[[https://www.signageos.io]]: Web Site
[[https://docs.signageos.io]]: API
[[https://box.signageos.io]]: Dashboard
]
component screenfood [
**Screenfood**
--
[[https://www.screenfoodnet.com]]: Web Site
]
component others [
**More platforms**
--
Each new platform is very simple to integrate
]
}
Platform --(0 signageos
Platform --(0 screenfood
Platform --(0 others
Content --> contentevents
contentevents --> devices
platform --> devicesynccron
devicesynccron --> devices
devices --> scheduleupdatecron
scheduleupdatecron --> schedules
schedules --> publishschedulecron
publishschedulecron --> platform
signageos --[hidden] screenfood
screenfood --[hidden] others
@enduml