One of the senior engineers at my job is a big fan of PlantUML, so I recommended it to one of the junior guys who needed a diagramming tool. I’ve been taking a look myself since I have never had a goto diagramming tool.
PlantUML is text based language. You can define structs and their relationships with other items. There are a lot of keywords, which can be a bit confusing, but it generates pretty good diagrams.
Here is the text for a system diagram and the image it generates below.
@startuml
actor actor [
a user
]
database postgres
queue celery
stack redis
node django [
Django webservice
]
node worker [
Turtle Detector
]
boundary boundary [
nginx
]
cloud cloud [
cloud
]
actor --> cloud
cloud --> boundary
boundary --> django
django --> postgres
django --> celery
celery -> worker
worker -> redis
redis --> django
@enduml
Here is the code for a smaller class relationship diagram.
@startuml
class User {
+customerId : String
~submissions : Submission[]
}
class Submission {
-size : int[][]
#image : int[][]
}
User <|-- Submission
class TurtleModel {
~model : Pytorch.GAN
}
@enduml