diff --git a/docs/backend.md b/docs/backend.md index 04765b642..605f618fb 100644 --- a/docs/backend.md +++ b/docs/backend.md @@ -47,21 +47,21 @@ subgraph VideoPipeline[Video Pipeline] RTMPService[fa:fa-video RTMP Service] end -subgraph ChatService[fa:fa-comment Chat Service] +subgraph ChatService[fa:fa-comment Chat\nService] end subgraph Dependencies - OutboundWebhooks[Outbound] - App{Application} + App{AppController} ChatService--->App Webhooks--->App + ActivityPubOutboundHandlers[fa:fa-hashtag ActivityPub\nOutbound]--->App - ConfigRepository(fa:fa-hard-drive Config Repository)--->App - UserRepository(fa:fa-hard-drive User Repository)--->App - APRepository(fa:fa-hard-drive ActivityPub Repository)--->App - NotificationsRepository(fa:fa-hard-drive Notifications Repository)--->App - ChatRepository(fa:fa-hard-drive Chat Repository) + ConfigRepository(fa:fa-hard-drive Config\nRepository)--->App + UserRepository(fa:fa-hard-drive User\nRepository)--->App + NotificationsRepository(fa:fa-hard-drive Notifications\nRepository)--->App + ChatRepository(fa:fa-hard-drive Chat\nRepository) + APRepository(fa:fa-hard-drive ActivityPub\nRepository) Database(fa:fa-hard-drive Database)--->ConfigRepository Database--->UserRepository @@ -70,33 +70,30 @@ subgraph Dependencies ChatRepository-->ChatService - ApplicationState(fa:fa-list Application State)--->App - GeoIP(fa:fa-globe GeoIP Lookup)--->App + ApplicationState(fa:fa-list Application\nState)--->App + GeoIP(fa:fa-globe GeoIP\nLookup)--->App Statistics(fa:fa-list Statistics)--->App + OutboundWebhooks[Outbound\nWebhooks]--->App + end subgraph VideoStorageProviders[Video Storage Providers] - LocalStorage((fa:fa-hard-drive Local Storage)) - S3Storage((fa:fa-hard-drive S3 Storage)) + LocalStorage((fa:fa-hard-drive Local\nStorage)) + S3Storage((fa:fa-hard-drive S3\nStorage)) end -subgraph ActivityPub - ActivityPubInboundHandlers[fa:fa-hashtag Inbound] - ActivityPubOutboundHandlers[fa:fa-hashtag Outbound] -end - -subgraph Authentication +subgraph Authentication[Chat Authentication] IndieAuth[fa:fa-key IndieAuth] FediAuth[fa:fa-key FediAuth] end -subgraph Notifications +subgraph Notifications[External Notifications] DiscordNotifier[fa:fa-comment Discord] BrowserNotifier[fa:fa-browser Browser] end subgraph WebServer[Web Server] - ActivityPubHandlers[fa:fa-file ActivityPub Handlers] + ActivityPubHandlers[fa:fa-file ActivityPub\nHandlers] subgraph WebAssets[Web Assets] EmbeddedStaticFiles((fa:fa-file Embedded\nStatic Assets)) @@ -106,31 +103,31 @@ subgraph WebServer[Web Server] end subgraph HTTPHandlers[fa:fa-browser HTTP Handlers] - AdminAPIs[Admin APIs] - ThirdPartyAPIs[3rd Party APIs] + AdminAPIs[Admin\nAPIs] + ThirdPartyAPIs[3rd Party\nAPIs] WebSocket[WebSocket] - subgraph ChatAPIs[Chat APIs] - ChatUserRegistration[Chat User Registration] + subgraph ChatAPIs[Chat\nAPIs] + ChatUserRegistration[Chat User\nRegistration] Emoji[Emojis] - subgraph ChatAuthAPIs[Chat Authentication] + subgraph ChatAuthAPIs[Chat\nAuthentication] FediAuth IndieAuth end end subgraph VideoAPIs[fa:fa-video Video APIs] - ViewerPing[Viewer Ping] - PlaybackMetrics[Playback health metrics] + ViewerPing[Viewer\nPing] + PlaybackMetrics[Playback\nHealth Metrics] end ActivityPubHandlers - ApplicationConfig[Application Config] - ApplicationStatus[Application Status] - Directory[Directory API] + ApplicationConfig[Application\nConfig] + ApplicationStatus[Application\nStatus] + Directory[Directory\nAPI] Followers[Followers] end end subgraph Streamer - BroadcastingSoftware>fa:fa-video BroadcastingSoftware] + BroadcastingSoftware>fa:fa-video Broadcasting\nSoftware] end %% All the services and packages require access @@ -139,25 +136,21 @@ App-.->HTTPHandlers App-.->VideoPipeline App-.->ActivityPub App-.->Authentication -App-.Stream went\nonline.->Notifications -App-.->DirectoryNotifier[Directory Notifier] +App-.->Notifications +App-.->DirectoryNotifier[Owncast\nDirectory] LocalStorage--HLS-->OnDiskStaticFiles RTMPService>RTMP Ingest]--RTMP-->VideoTranscoder VideoTranscoder--HLS-->VideoStorageProviders -%% Viewers -VideoPlayer-->VideoStorageProviders -WebBrowser-->WebAssets - %% Streamers BroadcastingSoftware--RTMP-->RTMPService %% Style the nodes %% 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 webservice fill:#6082B6,color:#fff classDef rtmp fill:#608200, color:#fff @@ -191,5 +184,5 @@ class LocalStorage storage class S3Storage storage %% 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"}}}%% ```