@startuml
skinparam componentStyle rectangle
package HomePC {
component ObsidianDesktop
database "Pc File System" as PcFileSystem
component FolderSyncDesktop
ObsidianDesktop --> PcFileSystem : edit
PcFileSystem <-- FolderSyncDesktop : monitor
}
package Mobile {
component ObsidianMobile
database "Mobile File System" as MobileFileSystem
component FolderSyncMobile
component NtfyApp
ObsidianMobile --> MobileFileSystem : edit
MobileFileSystem <-- FolderSyncMobile : monitor
}
package Server {
database Nextcloud
database "Quartz Content Folder" as Content
database "Quartz Publish Folder" as Publish
package "systemd service" as ChangeDetector {
component entr
component Quartz
entr --> Quartz : call
Quartz --> Publish : publish site files
}
component NextcloudDesktop
package Docker {
component GatewayNginx
component QuartzNginx
}
Publish <-- QuartzNginx : serve
}
package Internet {
component NtfyService
}
package OutsideWorld {
component WebBrowser
}
entr --> NtfyService : call
FolderSyncDesktop --> Nextcloud : sync
FolderSyncMobile --> Nextcloud : sync
NextcloudDesktop --> Nextcloud : monitor
Content <-- NextcloudDesktop : sync
Content --> entr : change detected
WebBrowser --> GatewayNginx
GatewayNginx --> QuartzNginx : proxy
NtfyService --> NtfyApp : push notify
@enduml