diff --git a/CHANGELOG.md b/CHANGELOG.md index 269b4e0..a3a3c69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,9 +14,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 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 + from the runnable examples in `docs/examples/`, and it is drawn in the devsuit + brand palette. `docs/examples/frameworks.svg` is the editable source; the now-unreferenced `docs/examples/erd.png` is removed. ## [0.14.0] - 2026-09-14 diff --git a/docs/examples/frameworks.png b/docs/examples/frameworks.png index b43632c..f5f5107 100644 Binary files a/docs/examples/frameworks.png and b/docs/examples/frameworks.png differ diff --git a/docs/examples/frameworks.svg b/docs/examples/frameworks.svg index d7d8261..a741ba0 100644 --- a/docs/examples/frameworks.svg +++ b/docs/examples/frameworks.svg @@ -2,88 +2,101 @@ Five frameworks, one diagram - used by README.md, docs/index.md and docs/frameworks/index.md. - Edit this file directly; it is the source. The snippets are trimmed from - the runnable examples in docs/examples/*, and the key colours match the - !define block PlantUMLGenerator emits (#b8861b primary, #8c8c8c foreign). - After editing, re-export the PNG at 1600x840, e.g. + Edit this file directly; it is the source. The snippets are trimmed from the + runnable examples in docs/examples/*. + + Palette: the devsuit brand tokens. + #10172e dsbackgrounddark ground + #192346 dsbluedark panels + #4150aa dsblue convergence lines + #18b4e0 dsbluelight accent, primary keys + #a064d2 dspurple foreign keys + #eceff1 / #cfd8dc / #607d8b / #455a64 dsgrey 10 / 20 / 60 / 80 + + After editing, re-export the PNG at 1600x840: uv run --group docs python -c "import cairosvg; cairosvg.svg2png(\ url='docs/examples/frameworks.svg',\ write_to='docs/examples/frameworks.png',\ output_width=1600, output_height=840)" --> - -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 + + +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 + + +PK +id +int +name +str +email +str + + + +order + + +PK +id +int + + +FK +user_id +int +total +float + + + +user_id +SQLModel · SQLAlchemy · Django · Pydantic · dataclasses · SQL DDL