mirror of
				https://github.com/zoriya/Kyoo.git
				synced 2025-10-31 10:37:13 -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