From 7f8cf3098f22c03ee995cb377b8e42808c7f95e6 Mon Sep 17 00:00:00 2001 From: Fabian Clemenz Date: Mon, 14 Sep 2026 13:41:41 +0200 Subject: [PATCH] docs: add a five-frameworks image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The README and the docs home page opened with the bare ERD under a caption claiming five frameworks — the picture never showed them. Replace it with a composite: the same User/Order schema in SQLModel, SQLAlchemy, Django, Pydantic and dataclasses, converging on the one diagram they all produce. The snippets are trimmed from the runnable examples in `docs/examples/`, and the entity boxes use the primary/foreign-key colours `generator.py` emits, so the illustration matches real output rather than approximating it. `frameworks.svg` is the editable source and carries a header comment saying so, including the one-liner to re-export the PNG. Drop the now-unreferenced `docs/examples/erd.png`. --- CHANGELOG.md | 12 +++++ README.md | 2 + docs/examples/erd.png | Bin 4441 -> 0 bytes docs/examples/frameworks.png | Bin 0 -> 72737 bytes docs/examples/frameworks.svg | 89 +++++++++++++++++++++++++++++++++++ docs/frameworks/index.md | 2 +- docs/index.md | 2 +- 7 files changed, 105 insertions(+), 2 deletions(-) delete mode 100644 docs/examples/erd.png create mode 100644 docs/examples/frameworks.png create mode 100644 docs/examples/frameworks.svg diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f0515c..269b4e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- The README and the documentation home page now open with a "five frameworks, + one diagram" image — the same `User`/`Order` schema written in SQLModel, + SQLAlchemy, Django, Pydantic and dataclasses, converging on the ERD they all + produce. The previous image was the bare ERD under a caption claiming five + frameworks, which the picture itself never showed. The snippets are taken + from the runnable examples in `docs/examples/`, and the entity boxes use the + primary/foreign-key colours `generator.py` emits, so the illustration matches + real output. `docs/examples/frameworks.svg` is the editable source; the + now-unreferenced `docs/examples/erd.png` is removed. + ## [0.14.0] - 2026-09-14 ### Added diff --git a/README.md b/README.md index 2c4ecda..5e5c336 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,8 @@ The same `User` / `Order` schema in **SQLModel, SQLAlchemy 2.0, Django, Pydantic and dataclasses** — only the syntax differs. Each one produces the **identical** diagram: +![The same User/Order schema in SQLModel, SQLAlchemy, Django, Pydantic and dataclasses, all producing one ERD](https://raw.githubusercontent.com/devsuit-berlin/erdify/main/docs/examples/frameworks.png "Five frameworks, one diagram") + `erdify docs/examples/sqlmodel --inject README.md` keeps the diagram below in this file. It is Mermaid, so GitHub renders it directly — and a pre-commit hook runs the same command with `--check`, so it cannot go stale: diff --git a/docs/examples/erd.png b/docs/examples/erd.png deleted file mode 100644 index 681cef9414308f0a515557300b52527433506b47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4441 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 diff --git a/docs/examples/frameworks.png b/docs/examples/frameworks.png new file mode 100644 index 0000000000000000000000000000000000000000..b43632ccd3e9d80259bc09de756576354395fae3 GIT binary patch literal 72737 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℞GKjLM|Avv;J?H3*EH5wj*Oo3NkgFDk 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 + + +Five frameworks. One diagram. +erdify reads your model files with the standard library. No imports, no database. +erdify + + +SQLModel +class User(SQLModel, table=True): + id: int = Field(primary_key=True) + name: str + email: str + + +SQLAlchemy 2.0 +class User(Base): + __tablename__ = "user" + id: Mapped[int] = mapped_column( + primary_key=True) + + +Django +class User(models.Model): + name = models.CharField( + max_length=100) + email = models.EmailField() + + +Pydantic +class User(BaseModel): + id: int + name: str + email: str + + +dataclasses +@dataclass +class User: + id: int + name: str + + + + + + + + + + +user + +id +int +name +str +email +str + + +order + +id +int + +user_id +int +total +float + + + + +user_id +SQLModel · SQLAlchemy · Django · Pydantic · dataclasses · SQL DDL + diff --git a/docs/frameworks/index.md b/docs/frameworks/index.md index e163e27..be6a84c 100644 --- a/docs/frameworks/index.md +++ b/docs/frameworks/index.md @@ -17,7 +17,7 @@ see [SQL DDL](sql.md) for details. The snippets below all describe the **same** `User` / `Order` schema — only the syntax differs. Each one produces the **identical** diagram: -![Framework comparison ERD](../examples/erd.png "The same ERD from all five frameworks") +![The same User/Order schema in SQLModel, SQLAlchemy, Django, Pydantic and dataclasses, all producing one ERD](../examples/frameworks.png "Five frameworks, one diagram") !!! info diff --git a/docs/index.md b/docs/index.md index 4de94ce..1ed1202 100644 --- a/docs/index.md +++ b/docs/index.md @@ -7,7 +7,7 @@ description: "erdify generates PlantUML, Mermaid, JSON and HTML ER diagrams from **One ERD generator for every Python schema in your repository — parsed from source, with no imports, no database connection and no runtime dependencies.** -![Framework comparison ERD](examples/erd.png "The same ERD from all five frameworks") +![The same User/Order schema in SQLModel, SQLAlchemy, Django, Pydantic and dataclasses, all producing one ERD](examples/frameworks.png "Five frameworks, one diagram") The same two tables, written in SQLModel, SQLAlchemy 2.0, Django, Pydantic and dataclasses, all render to the same diagram.