Quick update: DukoTools just crossed 138 free tools, up from 112.
The interesting part isn't the number. It's that most of those new
tools sat uncommitted in my working tree for weeks while I worked
through unrelated SEO fixes, and every time I touched a shared file
they were referenced in, the build silently depended on files that
didn't actually exist in git yet.
That's an easy trap: local dev works because the files are sitting
right there on disk. A fresh deploy doesn't have that luxury, and it
fails the moment it hits a reference to something that was never
actually committed.
The fix, once I understood the pattern: never let a shared file (like
a page router) reference a component before that component is fully
shipped, commit the component, its data entries, and its content
together, atomically, or not at all.
138 tools live now, PDF/image utilities, finance calculators,
developer tools, and a growing set of niche South Asian tools (Zakat,
WAPDA billing, CNIC validation, cricket stats).
Lesson that generalizes past this: "works on my machine" and "exists
in git" are not the same claim, and the gap between them only shows up
the moment someone else (or a clean CI environment) tries to build
from scratch.
That "works on my machine" vs "exists in git" gap is the same one that shows up when you hand a build to a stranger. Local green is not the same claim as "someone else can rebuild from the committed tree." Atomic ship of the component + its router entry + its data beats leaving half-wired files for weeks. A clean CI failure is kinder than a quiet prod miss.