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 | ||||
| 
 | ||||
|       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") | ||||
| 
 | ||||
| ``` | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user