Procedural animated triangle-mesh jQuery plugin published on eager.io at age 15

The personal blog I built at fourteen needed an animated low-poly hero background. Webflow couldn't produce it from inside its editor, and I didn't have the JavaScript knowledge at the time to build it myself. So I deferred it and kept the problem in mind.
A year later I had the skills. Instead of building it as a one-off script embedded in the blog, I built it as a distributable jQuery plugin — because if this was a problem I had, others had it too, and distributing the solution is more useful than keeping it private.
The algorithm seeds random points across a canvas element, connects them into a Delaunay triangle mesh, assigns each triangle a colour from a configurable gradient palette, and animates the mesh by continuously nudging point positions each frame. The result is a slowly shifting low-poly background that doesn't repeat and doesn't feel mechanical.
Publishing on eager.io meant meeting their manifest format — a curated plugin platform that required a proper plugin descriptor before they would list it. Eager.io later became Cloudflare Apps, which gives some indication of the quality bar they were applying. Writing the manifest — describing what the plugin does, what options it accepts, how it integrates — forced the same discipline that writing a README forces: you have to understand your own work well enough to explain it to someone who wasn't there when you built it.
The plugin is single-file, no bundler, vanilla ES5 JavaScript following the standard jQuery plugin pattern. A method registers on $.fn and accepts an options object. The HTML5 Canvas 2D API handles all rendering. The whole thing is the kind of small, self-contained, completely-finished piece of software that is harder to ship than it sounds.
This was the first piece of software I released publicly, for anyone to use. The 3D RAD game was shown to friends. The blog had readers. This had users I would never meet, solving a problem they had the same way I had it.
That shift — from building for yourself to building for strangers — is the one that changes how you think about defaults, edge cases, and documentation. A tool you build for yourself can have rough edges you know how to avoid. A tool you distribute to strangers cannot. Trianglify was where I first felt that pressure, at fifteen.
Did this resonate?