-
-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Diagrams #547
Add Diagrams #547
Conversation
Do have a couple of questions:
|
Not really happy with the way Mermaid is rendering these diagrams. May look to moving away from their c4 https://mermaid.js.org/syntax/c4.html. Trying to avoid drawing this by hand. Last commit included updates for:
|
Just wrote my thought, keep in mind I had never seen a c4 diagram. Overall, I think those diagrams would make Kyoo more understandable for potential contributors. Thanks for taking the time to make those! I feel arrows directions sometimes are wrong, mixing both consume/produce makes is hard to know how data flows. On the scanner diagram:
For the transcoder, the API's only interaction with it is to proxy requests from the front (for example, when calling For the back diagram, there is no mention of postgres or meilisearch. Also, I don't know if mentioning all the others components (like scanner/front/autosync) makes sense. The backend is technically independent of those systems. |
Removing draft. Think the diagrams are in a good enough state to check in. I will definitely help maintain them in the future too. |
front_i1("kyoo_front") | ||
end | ||
block:transcoder_b:1 | ||
transcoder_i1("kyoo_transcoder") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why is this an half block?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Definitely have a desire for each component to be the same size. I do not see a way to do it within the block diagram atm.
block:scanner_b:1 | ||
columns 1 | ||
scanner_i1("kyoo_scanner") | ||
scanner_i2("kyoo_scanner*") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we should specify somehow that this is the matcher, don't you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I definitely agree. Lets create a matcher image and then update this diagram. These diagrams should be as close to what is actually deployed.
Ideally we should not be required specify docker args at deployment time.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think having a copy of an image with only the flag changing is a good way.
Even grapahana does that with a flag for reader/writter (I copied their way when doing that).
|
||
Person(user, "User") | ||
System(kyoo, "Kyoo", "") | ||
System_Ext(media, "MediaLibrary", "") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think defining those terms would be helpful
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can definitely add a glossary. These are software architecture diagrams, so there is some expectation of knowledge.
Mermaid is still working on adding a legends feature for c4 diagrams. If those were added I would describe the protocol and ports each relationship made.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we should add a few lines to explain what each services does. Transcoder seems obvious but at first glance we might not know that the front does SSR or what autosync does.
Really happy this merge request is opening this dialog Diagrams should be supplemental. More than happy to start working on Github pages docs with you. That would be a better place to describe each component in detail. |
Yes I agree with you but I don't want something too boilerplate-y. Having a doc too far from the code would either become outdated or not read. What do you think about having a short document containing a one line description of each service and their relations to each other (diagrams) and a readme per service which will be code focused (with mermaid if necessary). I started writing blogs for deep technical stuff about a service, I'll try to keep this going and linking them in the doc here! |
Adds several diagrams: