Update WIP backend diagram

This commit is contained in:
Gabe Kangas 2023-02-23 12:35:55 -08:00
parent 38b8fd0065
commit 034e2a61bc
No known key found for this signature in database
GPG Key ID: 4345B2060657F330

View File

@ -47,21 +47,21 @@ subgraph VideoPipeline[Video Pipeline]
RTMPService[fa:fa-video RTMP Service] RTMPService[fa:fa-video RTMP Service]
end end
subgraph ChatService[fa:fa-comment Chat Service] subgraph ChatService[fa:fa-comment Chat\nService]
end end
subgraph Dependencies subgraph Dependencies
OutboundWebhooks[Outbound]
App{Application} App{AppController}
ChatService--->App ChatService--->App
Webhooks--->App Webhooks--->App
ActivityPubOutboundHandlers[fa:fa-hashtag ActivityPub\nOutbound]--->App
ConfigRepository(fa:fa-hard-drive Config Repository)--->App ConfigRepository(fa:fa-hard-drive Config\nRepository)--->App
UserRepository(fa:fa-hard-drive User Repository)--->App UserRepository(fa:fa-hard-drive User\nRepository)--->App
APRepository(fa:fa-hard-drive ActivityPub Repository)--->App NotificationsRepository(fa:fa-hard-drive Notifications\nRepository)--->App
NotificationsRepository(fa:fa-hard-drive Notifications Repository)--->App ChatRepository(fa:fa-hard-drive Chat\nRepository)
ChatRepository(fa:fa-hard-drive Chat Repository) APRepository(fa:fa-hard-drive ActivityPub\nRepository)
Database(fa:fa-hard-drive Database)--->ConfigRepository Database(fa:fa-hard-drive Database)--->ConfigRepository
Database--->UserRepository Database--->UserRepository
@ -70,33 +70,30 @@ subgraph Dependencies
ChatRepository-->ChatService ChatRepository-->ChatService
ApplicationState(fa:fa-list Application State)--->App ApplicationState(fa:fa-list Application\nState)--->App
GeoIP(fa:fa-globe GeoIP Lookup)--->App GeoIP(fa:fa-globe GeoIP\nLookup)--->App
Statistics(fa:fa-list Statistics)--->App Statistics(fa:fa-list Statistics)--->App
OutboundWebhooks[Outbound\nWebhooks]--->App
end end
subgraph VideoStorageProviders[Video Storage Providers] subgraph VideoStorageProviders[Video Storage Providers]
LocalStorage((fa:fa-hard-drive Local Storage)) LocalStorage((fa:fa-hard-drive Local\nStorage))
S3Storage((fa:fa-hard-drive S3 Storage)) S3Storage((fa:fa-hard-drive S3\nStorage))
end end
subgraph ActivityPub subgraph Authentication[Chat Authentication]
ActivityPubInboundHandlers[fa:fa-hashtag Inbound]
ActivityPubOutboundHandlers[fa:fa-hashtag Outbound]
end
subgraph Authentication
IndieAuth[fa:fa-key IndieAuth] IndieAuth[fa:fa-key IndieAuth]
FediAuth[fa:fa-key FediAuth] FediAuth[fa:fa-key FediAuth]
end end
subgraph Notifications subgraph Notifications[External Notifications]
DiscordNotifier[fa:fa-comment Discord] DiscordNotifier[fa:fa-comment Discord]
BrowserNotifier[fa:fa-browser Browser] BrowserNotifier[fa:fa-browser Browser]
end end
subgraph WebServer[Web Server] subgraph WebServer[Web Server]
ActivityPubHandlers[fa:fa-file ActivityPub Handlers] ActivityPubHandlers[fa:fa-file ActivityPub\nHandlers]
subgraph WebAssets[Web Assets] subgraph WebAssets[Web Assets]
EmbeddedStaticFiles((fa:fa-file Embedded\nStatic Assets)) EmbeddedStaticFiles((fa:fa-file Embedded\nStatic Assets))
@ -106,31 +103,31 @@ subgraph WebServer[Web Server]
end end
subgraph HTTPHandlers[fa:fa-browser HTTP Handlers] subgraph HTTPHandlers[fa:fa-browser HTTP Handlers]
AdminAPIs[Admin APIs] AdminAPIs[Admin\nAPIs]
ThirdPartyAPIs[3rd Party APIs] ThirdPartyAPIs[3rd Party\nAPIs]
WebSocket[WebSocket] WebSocket[WebSocket]
subgraph ChatAPIs[Chat APIs] subgraph ChatAPIs[Chat\nAPIs]
ChatUserRegistration[Chat User Registration] ChatUserRegistration[Chat User\nRegistration]
Emoji[Emojis] Emoji[Emojis]
subgraph ChatAuthAPIs[Chat Authentication] subgraph ChatAuthAPIs[Chat\nAuthentication]
FediAuth FediAuth
IndieAuth IndieAuth
end end
end end
subgraph VideoAPIs[fa:fa-video Video APIs] subgraph VideoAPIs[fa:fa-video Video APIs]
ViewerPing[Viewer Ping] ViewerPing[Viewer\nPing]
PlaybackMetrics[Playback health metrics] PlaybackMetrics[Playback\nHealth Metrics]
end end
ActivityPubHandlers ActivityPubHandlers
ApplicationConfig[Application Config] ApplicationConfig[Application\nConfig]
ApplicationStatus[Application Status] ApplicationStatus[Application\nStatus]
Directory[Directory API] Directory[Directory\nAPI]
Followers[Followers] Followers[Followers]
end end
end end
subgraph Streamer subgraph Streamer
BroadcastingSoftware>fa:fa-video BroadcastingSoftware] BroadcastingSoftware>fa:fa-video Broadcasting\nSoftware]
end end
%% All the services and packages require access %% All the services and packages require access
@ -139,25 +136,21 @@ App-.->HTTPHandlers
App-.->VideoPipeline App-.->VideoPipeline
App-.->ActivityPub App-.->ActivityPub
App-.->Authentication App-.->Authentication
App-.Stream went\nonline.->Notifications App-.->Notifications
App-.->DirectoryNotifier[Directory Notifier] App-.->DirectoryNotifier[Owncast\nDirectory]
LocalStorage--HLS-->OnDiskStaticFiles LocalStorage--HLS-->OnDiskStaticFiles
RTMPService>RTMP Ingest]--RTMP-->VideoTranscoder RTMPService>RTMP Ingest]--RTMP-->VideoTranscoder
VideoTranscoder--HLS-->VideoStorageProviders VideoTranscoder--HLS-->VideoStorageProviders
%% Viewers
VideoPlayer-->VideoStorageProviders
WebBrowser-->WebAssets
%% Streamers %% Streamers
BroadcastingSoftware--RTMP-->RTMPService BroadcastingSoftware--RTMP-->RTMPService
%% Style the nodes %% Style the nodes
%% Define reusable styles for node types %% Define reusable styles for node types
classDef bigtext font-weight:bold,font-size:20px classDef bigtext font-weight:bold,font-size:40px
classDef repository fill:#4F625B,color:#fff classDef repository fill:#4F625B,color:#fff
classDef webservice fill:#6082B6,color:#fff classDef webservice fill:#6082B6,color:#fff
classDef rtmp fill:#608200, color:#fff classDef rtmp fill:#608200, color:#fff
@ -191,5 +184,5 @@ class LocalStorage storage
class S3Storage storage class S3Storage storage
%% Customize the theme styles %% Customize the theme styles
%%{init: {'theme':'base', 'themeVariables': {'darkMode': true, 'lineColor': '#c3dafe', 'tertiaryTextColor': 'white', 'clusterBkg': '#2d3748', 'primaryTextColor': '#39373d', "edgeLabelBackground": "white", "fontFamily": "monospace"}}}%% %%{init: {'theme':'base', 'themeVariables': {'darkMode': true, 'lineColor': '#c3dafe', 'tertiaryTextColor': 'white', 'clusterBkg': '#2d3748', 'primaryTextColor': '#39373d', "edgeLabelBackground": "white", "fontFamily": "monospace", "fontSize": "30px"}}}%%
``` ```