Real World PlantUML
PlantUML is a useful tool for creating a UML diagram in plain text.
With this tool, you can create a wide variety of UMLs, from a simple flowchart to a complex diagram.
There are many websites that can teach you how to create a PlantUML diagram, but when you first start you might run into some problems,
- I can’t remember the exact syntax… :(
- How can I create a more complex diagram?
- Are there any templates I can use instead of starting from scratch?
I’ve created the website Real World PlantUML to solve all of these issues!
The website provides lots of UMLs with their rendered images, allowing you to browse just like a catalog. All of the UMLs have been gathered from GitHub public repositories.
Each UML is designated into one of 6 categories, and you can filter the UMLs by category.
If you’re curious about a specific component like “database”, the search box can help you find what you are looking for. Just enter the word “database” into the search box, and only diagrams containing databases will be displayed.
When you click a diagram, the source code is shown so you can use it as a reference or use it as a template to start creating your own UML.
Technical details
The website is built on top of Google App Engine with 4 microservices,
- web (Go Standard Env): user facing web application
- indexer (Go Standard Env): worker for building UML indexes
- syntax_checker (Java Flexible Env): web app for checking PlantUML syntax and detecting a diagram type
- renderer (Java Flexible Env): PlantUML rendering server.
I’m confident that the App Engine Flexible Environment is the best choice for rendering a PlantUML because it allows Graphviz to be installed to generate images. In other words, Flexible Env can do it because it‘s able to run any application, as long as the app is packaged into a Docker container.
The following diagram shows the overall architecture of the website.
Finally, the source code of the website is available on GitHub, so if you find a bug, please open an issue. Of course I happily welcome pull requests for new features :)
Enjoy creating your own PlantUML!