emmanuelballery/eb-plantumlbundle
A Symfony bundle that generates PlantUML diagrams from your Doctrine entities, making it easy to visualize and document your data model. Export class diagrams automatically to keep documentation in sync with your codebase.
Critical gate first: despite the brief framing this as a Laravel/PHP package, it is a Symfony bundle built on Doctrine ORM metadata. It has no service providers, no facades, no Laravel autodiscovery. For a Laravel/Eloquent codebase this is a non-starter — evaluate Mermaid, SchemaSpy, or a small Eloquent-metadata script instead. Everything below applies only to Symfony + Doctrine applications.
Adopt-pilot criteria:
plantuml.jar, PlantUML server, or Kroki).Look elsewhere when:
Default recommendation: decline as a dependency, run a time-boxed spike or treat it as a reference implementation for a small internal generator tied to your actual stack.
To executives: This is low-cost documentation automation for the platform team — it converts existing code structure into diagrams automatically, shortening onboarding and giving us a reliable picture of the domain model during planning and refactoring discussions. Licensing and integration cost are near zero. The caveat is significant and worth stating plainly: it's a small, unmaintained, zero-adoption open-source component built for Symfony, so it is a spike candidate, not a pipeline commitment. The strategic finding is that the capability is worth ~1–2 days of internal engineering — the package is one way to get there, and probably not the way we'll keep.
To engineering: It reads Doctrine entity metadata and emits PlantUML class/relationship diagrams via a console command — no annotations to maintain, no drift between code and diagrams. Run it locally or in CI, generate into var/ (gitignored; never commit .puml or .svg — they rot and produce unreviewable diffs), and publish rendered output as a CI artifact. Two rendering paths: PlantUML server (no local Java, needs network — often blocked in CI) or local plantuml.jar -tsvg (offline, deterministic, more setup). Treat it as a dev-only documentation utility, not a runtime dependency: wrap it in a Composer script so the generator is swappable without touching application code. Before any adoption, verify compatibility against our pinned symfony/* and doctrine/orm versions — version drift is the real risk, not functionality. If it installs cleanly, decide explicitly between require-dev, vendoring/forking, or extracting the logic into an internal script and dropping the package.
To design/QA: Expect accurate structure and complete relationship coverage, but plain output. Excellent for confirming the model is understood correctly; not a substitute for curated, annotated diagrams in external communications or customer-facing material.
How can I help you explore Laravel packages today?