All-in-one diagram-as-code playground. Python diagrams, PlantUML, Mermaid, Graphviz & D2 in one Docker container.
Welcome to dac, the all-in-one diagram-as-code playground with zero setup complexity.
dac brings together 5 professional diagram engines in a single Docker container with one Makefile. No npm, no pip, no dependency hell—just run make and get beautiful diagrams.
Diagram-as-code tools are powerful but scattered:
One container. One Makefile. All engines ready.
make run-container
make render-all
# Done! All 5 engines rendered and ready in ./output
✨ Zero Setup — Everything containerized, works on any system with Docker
🎯 Engine Comparison — Learn and compare all 5 engines side-by-side
🚀 CI/CD Ready — Perfect for automated documentation pipelines
📚 Well Documented — Curated examples for easy, medium, and complex diagrams
🔧 Simple Commands — Intuitive make targets, no cryptic CLI flags
git clone https://github.com/nosahama/dac.git
cd dac
make run-container
make doctor
make render-all
Open any PNG in ./output/ to see your diagrams!
make render engine=py filename=easy
make render engine=py filename=complex
make render engine=puml filename=medium
make render engine=puml filename=test_c4
make render engine=mermaid filename=easy
make render engine=dot filename=complex
make render engine=d2 filename=medium
| Engine | Best For | Learning Curve | Output Format |
|---|---|---|---|
| Python diagrams | Cloud/infrastructure | Moderate | PNG |
| PlantUML | UML, sequences, C4 | Low | PNG |
| Mermaid | Quick diagrams, docs | Very Low | PNG |
| Graphviz DOT | Precise layouts | Moderate | PNG |
| D2 | Modern styling | Low-Moderate | PNG + SVG |
# Generate architecture diagrams as part of docs build
make render engine=py filename=complex
# Commit output PNG to repo for consistency
# Render diagrams on every commit
make test # Verifies all engines work
# Try each engine with the same example
make render engine=py filename=easy
make render engine=puml filename=easy
make render engine=mermaid filename=easy
# Compare approaches and syntaxes
# Document your cloud architecture as code
make render engine=py filename=complex
# PNG automatically updated when infrastructure changes
dac/
├── diagrams/
│ ├── py/ # Python diagram source files
│ ├── uml/ # PlantUML source files
│ ├── mermaid/ # Mermaid source files
│ ├── dot/ # Graphviz DOT source files
│ └── d2/ # D2 source files
├── output/ # Generated PNG/SVG files
├── Makefile # Build commands
├── Dockerfile # Containerized environment
├── docs/
│ └── index.md # This file
└── README.md # Quick reference
| Command | Purpose |
|---|---|
make run-container |
Build and start the Docker container |
make doctor |
Verify all engines work correctly |
make list |
Show available examples |
make render engine=X filename=Y |
Render specific diagram |
make render-all |
Render every example |
make test |
Run full verification suite |
make stop-container |
Stop and clean up container |
# Full test suite - renders all examples and verifies output
make test
This ensures:
make list
# Render all Python examples
make render engine=py filename=easy && \
make render engine=py filename=medium && \
make render engine=py filename=complex
make doctor # Check if tools are installed correctly
make test # Run full suite and see which step fails
Creative Commons Zero v1.0 Universal (CC0) — Use freely with no attribution required.
make list to see available examplesmake doctor to diagnose issuesdiagrams/*/git clone https://github.com/nosahama/dac.gitmake run-containermake render-all./output/ for resultsdiagrams/*/ and re-rendermake targets in docs builds or CI/CDHappy diagramming! 🎨