mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-24 02:02:36 -04:00
update diagram
This commit is contained in:
parent
2b144174a8
commit
085f2c27a0
64
DIAGRAMS.md
64
DIAGRAMS.md
@ -6,17 +6,19 @@ C4 stands for Context, Container, Component, Code.
|
|||||||
C4Context
|
C4Context
|
||||||
|
|
||||||
title Context diagram for Kyoo System
|
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(kyoo, "Kyoo", "Self-hosted media server focused on video content.")
|
||||||
System_Ext(systemC, "MediaLibrary", "External Media Source")
|
System_Ext(media, "MediaLibrary", "")
|
||||||
System_Ext(systemB, "ContentDatabase", "External Content Database")
|
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(kyoo, content, "fetches metadata, title screen, backgrounds, etc")
|
||||||
Rel(systemA, systemC, "media content source")
|
Rel(kyoo, media, "media content source")
|
||||||
|
Rel(kyoo, tracker, "update tracking")
|
||||||
|
|
||||||
UpdateLayoutConfig($c4ShapeInRow="2", $c4BoundaryInRow="1")
|
UpdateLayoutConfig($c4ShapeInRow="2", $c4BoundaryInRow="1")
|
||||||
```
|
```
|
||||||
@ -32,22 +34,24 @@ C4 stands for Context, Container, Component, Code.
|
|||||||
Container(backend, "backend")
|
Container(backend, "backend")
|
||||||
Container(scanner, "scanner")
|
Container(scanner, "scanner")
|
||||||
Container(autosync, "autosync")
|
Container(autosync, "autosync")
|
||||||
Container(shareq, "sharequeue")
|
Container(sharem, "sharemessage")
|
||||||
Container(transcoder, "transcoder")
|
Container(transcoder, "transcoder")
|
||||||
}
|
}
|
||||||
|
|
||||||
System_Ext(media, "MediaLibrary", "External Media Source")
|
System_Ext(media, "MediaLibrary", "")
|
||||||
System_Ext(content, "ContentDatabase", "External Content Database")
|
System_Ext(content, "ContentDatabase", "")
|
||||||
|
System_Ext(tracker, "ActivityTracker", "")
|
||||||
|
|
||||||
Rel(user, frontend, "/")
|
Rel(user, frontend, "/")
|
||||||
Rel(user, backend, "/api")
|
Rel(user, backend, "/api")
|
||||||
Rel(frontend, backend, "")
|
Rel(frontend, backend, "")
|
||||||
Rel(backend, shareq, "")
|
Rel(backend, sharem, "")
|
||||||
Rel(backend, media, "")
|
Rel(backend, media, "")
|
||||||
Rel(backend, transcoder, "")
|
Rel(backend, transcoder, "")
|
||||||
Rel(autosync, shareq, "")
|
Rel(autosync, sharem, "")
|
||||||
Rel(autosync, media, "")
|
Rel(autosync, media, "")
|
||||||
Rel(scanner, shareq, "")
|
Rel(autosync, tracker, "")
|
||||||
|
Rel(scanner, sharem, "")
|
||||||
Rel(scanner, media, "")
|
Rel(scanner, media, "")
|
||||||
Rel(scanner, content, "")
|
Rel(scanner, content, "")
|
||||||
Rel(transcoder, media, "")
|
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")
|
Component(frontend_c1, "kyoo_front", "typescript, node.js", "Static Content")
|
||||||
}
|
}
|
||||||
|
|
||||||
Container_Boundary(shareq, "sharequeue") {
|
Container_Boundary(sharem, "sharemessage") {
|
||||||
ComponentQueue(shareq_q1, "autosync", "RabbitMQ", "NEEDS DESCRIPTION. i.e dead letter queue")
|
ComponentQueue(sharem_e1, "events.watched", "RabbitMQ, Exchange", "")
|
||||||
ComponentQueue(shareq_q2, "scanner", "RabbitMQ", "NEEDS DESCRIPTION. i.e dead letter queue")
|
ComponentQueue(sharem_e2, "events.resource", "RabbitMQ, Exchange", "")
|
||||||
ComponentQueue(shareq_q3, "scanner.rescan", "RabbitMQ", "NEEDS DESCRIPTION. i.e dead letter queue")
|
ComponentQueue(sharem_q1, "autosync", "RabbitMQ, Queue", "")
|
||||||
|
ComponentQueue(sharem_q2, "scanner.rescan", "RabbitMQ, Queue", "")
|
||||||
}
|
}
|
||||||
|
|
||||||
Container_Boundary(autosync, "autosync") {
|
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") {
|
Container_Boundary(scanner, "scanner") {
|
||||||
Component(scanner_c2, "kyoo_scanner", "python, python3.12", "matcher. no clue")
|
Component(scanner_c2, "kyoo_scanner", "python, python3.12", "matcher. no clue")
|
||||||
Component(scanner_c1, "kyoo_scanner", "python, python3.12", "no clue")
|
Component(scanner_c1, "kyoo_scanner", "python, python3.12", "no clue")
|
||||||
|
ComponentQueue(scanner_q1, "scanner", "RabbitMQ", "")
|
||||||
}
|
}
|
||||||
|
|
||||||
Container_Boundary(transcoder, "transcoder") {
|
Container_Boundary(transcoder, "transcoder") {
|
||||||
@ -112,26 +118,38 @@ Ideally this would be per component drill down, instead of global
|
|||||||
}
|
}
|
||||||
|
|
||||||
Container_Boundary(content, "ContentDatabase") {
|
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, "/")
|
Container_Boundary(tracker, "ActivityTracker") {
|
||||||
Rel(user, backend_c2, "/api")
|
Component_Ext(tracker_c1, "TrackerProvider", "API", "simkl")
|
||||||
|
}
|
||||||
|
|
||||||
|
Rel(user, frontend_c1, "")
|
||||||
|
Rel(user, backend_c2, "")
|
||||||
|
|
||||||
Rel(backend_c1, backend_db1, "Managed schema")
|
Rel(backend_c1, backend_db1, "Managed schema")
|
||||||
Rel(backend_c2, backend_db1, "")
|
Rel(backend_c2, backend_db1, "")
|
||||||
Rel(backend_c2, backend_db2, "")
|
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, backend_c3, "")
|
||||||
Rel(backend_c2, media_c1, "")
|
Rel(backend_c2, media_c1, "")
|
||||||
Rel(backend_c2, transcoder_c1, "")
|
Rel(backend_c2, transcoder_c1, "")
|
||||||
|
|
||||||
Rel(autosync_c1, media_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, content_c1, "Fetch media metadata")
|
||||||
|
Rel(scanner_c1, scanner_q1, "consumes")
|
||||||
Rel(scanner_c2, content_c1, "Fetch media metadata")
|
Rel(scanner_c2, content_c1, "Fetch media metadata")
|
||||||
Rel(scanner_c2, backend_c2, "Pushes 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_c1, media_c1, "")
|
||||||
Rel(scanner_c2, 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_c2, "")
|
||||||
Rel(transcoder_c1, transcoder_c3, "")
|
Rel(transcoder_c1, transcoder_c3, "")
|
||||||
|
|
||||||
|
Rel(sharem_e1, sharem_q1, "bound")
|
||||||
|
|
||||||
BiRel(backend_c2, scanner_c1, "Request/Push media metadata")
|
BiRel(backend_c2, scanner_c1, "Request/Push media metadata")
|
||||||
|
|
||||||
```
|
```
|
||||||
|
Loading…
x
Reference in New Issue
Block a user