From 085f2c27a0a19b591adbd9271e366df4c0d3fd8a Mon Sep 17 00:00:00 2001 From: Arlan Lloyd Date: Wed, 19 Jun 2024 21:47:58 +0000 Subject: [PATCH] update diagram --- DIAGRAMS.md | 64 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 22 deletions(-) diff --git a/DIAGRAMS.md b/DIAGRAMS.md index 8fea3727..7c061d84 100644 --- a/DIAGRAMS.md +++ b/DIAGRAMS.md @@ -6,17 +6,19 @@ C4 stands for Context, Container, Component, Code. C4Context title Context diagram for Kyoo System - Person(userA, "User A") + Person(user, "User") - System(systemA, "Kyoo", "Self-hosted media server focused on video content.") - System_Ext(systemC, "MediaLibrary", "External Media Source") - System_Ext(systemB, "ContentDatabase", "External Content Database") + System(kyoo, "Kyoo", "Self-hosted media server focused on video content.") + System_Ext(media, "MediaLibrary", "") + System_Ext(content, "ContentDatabase", "Media Info. Artwork, etc.") + System_Ext(tracker, "ActivityTracker", "") - Rel(userA, systemA, "watches") + Rel(user, kyoo, "watches") - Rel(systemA, systemB, "fetches metadata, title screen, backgrounds, etc") - Rel(systemA, systemC, "media content source") + Rel(kyoo, content, "fetches metadata, title screen, backgrounds, etc") + Rel(kyoo, media, "media content source") + Rel(kyoo, tracker, "update tracking") UpdateLayoutConfig($c4ShapeInRow="2", $c4BoundaryInRow="1") ``` @@ -32,22 +34,24 @@ C4 stands for Context, Container, Component, Code. Container(backend, "backend") Container(scanner, "scanner") Container(autosync, "autosync") - Container(shareq, "sharequeue") + Container(sharem, "sharemessage") Container(transcoder, "transcoder") } - System_Ext(media, "MediaLibrary", "External Media Source") - System_Ext(content, "ContentDatabase", "External Content Database") + System_Ext(media, "MediaLibrary", "") + System_Ext(content, "ContentDatabase", "") + System_Ext(tracker, "ActivityTracker", "") Rel(user, frontend, "/") Rel(user, backend, "/api") Rel(frontend, backend, "") - Rel(backend, shareq, "") + Rel(backend, sharem, "") Rel(backend, media, "") Rel(backend, transcoder, "") - Rel(autosync, shareq, "") + Rel(autosync, sharem, "") Rel(autosync, media, "") - Rel(scanner, shareq, "") + Rel(autosync, tracker, "") + Rel(scanner, sharem, "") Rel(scanner, media, "") Rel(scanner, content, "") Rel(transcoder, media, "") @@ -83,19 +87,21 @@ Ideally this would be per component drill down, instead of global Component(frontend_c1, "kyoo_front", "typescript, node.js", "Static Content") } - Container_Boundary(shareq, "sharequeue") { - ComponentQueue(shareq_q1, "autosync", "RabbitMQ", "NEEDS DESCRIPTION. i.e dead letter queue") - ComponentQueue(shareq_q2, "scanner", "RabbitMQ", "NEEDS DESCRIPTION. i.e dead letter queue") - ComponentQueue(shareq_q3, "scanner.rescan", "RabbitMQ", "NEEDS DESCRIPTION. i.e dead letter queue") + Container_Boundary(sharem, "sharemessage") { + ComponentQueue(sharem_e1, "events.watched", "RabbitMQ, Exchange", "") + ComponentQueue(sharem_e2, "events.resource", "RabbitMQ, Exchange", "") + ComponentQueue(sharem_q1, "autosync", "RabbitMQ, Queue", "") + ComponentQueue(sharem_q2, "scanner.rescan", "RabbitMQ, Queue", "") } Container_Boundary(autosync, "autosync") { - Component(autosync_c1, "kyoo_autosync", "python, python3.12", "no clue") + Component(autosync_c1, "kyoo_autosync", "python, python3.12", "") } Container_Boundary(scanner, "scanner") { Component(scanner_c2, "kyoo_scanner", "python, python3.12", "matcher. no clue") Component(scanner_c1, "kyoo_scanner", "python, python3.12", "no clue") + ComponentQueue(scanner_q1, "scanner", "RabbitMQ", "") } Container_Boundary(transcoder, "transcoder") { @@ -112,26 +118,38 @@ Ideally this would be per component drill down, instead of global } Container_Boundary(content, "ContentDatabase") { - Component_Ext(content_c1, "tmdb/tvdb", "Rest API", "Content Provider") + Component_Ext(content_c1, "ContentProvider", "API", "tmdb or tvdb") } - Rel(user, frontend_c1, "/") - Rel(user, backend_c2, "/api") + Container_Boundary(tracker, "ActivityTracker") { + Component_Ext(tracker_c1, "TrackerProvider", "API", "simkl") + } + + Rel(user, frontend_c1, "") + Rel(user, backend_c2, "") Rel(backend_c1, backend_db1, "Managed schema") Rel(backend_c2, backend_db1, "") Rel(backend_c2, backend_db2, "") + Rel(backend_c2, sharem_q2, "produces") + Rel(backend_c2, sharem_e1, "produces") + Rel(backend_c2, sharem_e2, "produces") Rel(backend_c2, backend_c3, "") Rel(backend_c2, media_c1, "") Rel(backend_c2, transcoder_c1, "") Rel(autosync_c1, media_c1, "") + Rel(autosync_c1, tracker_c1, "") + Rel(autosync_c1, sharem_q1, "consumes") - Rel(frontend_c1, backend_c2, "Frontend->Backend. Why?") + Rel(frontend_c1, backend_c2, "") Rel(scanner_c1, content_c1, "Fetch media metadata") + Rel(scanner_c1, scanner_q1, "consumes") Rel(scanner_c2, content_c1, "Fetch media metadata") Rel(scanner_c2, backend_c2, "Pushes media metadata") + Rel(scanner_c2, scanner_q1, "produces") + Rel(scanner_c2, sharem_q2, "consumes") Rel(scanner_c1, media_c1, "") Rel(scanner_c2, media_c1, "") @@ -139,6 +157,8 @@ Ideally this would be per component drill down, instead of global Rel(transcoder_c1, transcoder_c2, "") Rel(transcoder_c1, transcoder_c3, "") + Rel(sharem_e1, sharem_q1, "bound") + BiRel(backend_c2, scanner_c1, "Request/Push media metadata") ```