Blog — Engineering
Releases, architecture notes, and the reasoning behind the decisions.
-
We Almost Named It `with`
Zerotal 1.3.0 replaced BaseModelWith(...) with Model.using(...). The interesting part is not the refactor — it is why the obvious name was the wrong one, and what it costs a framework to spend a word.
Engineering Read -
The Case of the Vanishing @expose
A build error insisted an action was not @exposed. It was. The trail led out of the framework, through a fifteen-line repro with no Zerotal code in it, to a decorator defect in the runtime itself — and to how a framework should behave when the ground moves.
Engineering Read -
The Model Is the Only Place the Rule Lives
An ORM's real job is not writing your SQL — it is being the one place a fact about your data is stated. Zerotal's ORM guards mass assignment by default, lets a model own its own lookup, rejects illegal state transitions, and tells you about an N+1 before your users do.
Engineering Read -
Shipping a framework with no build step
Zerotal packages publish TypeScript source, not compiled output. What that buys, what it costs, and why Bun finally makes it a reasonable trade.
Engineering Read