I love force directed graphs. They bring me joy. I bumped into a really neat proprietary SVG force directed graph library. Unable to find it as open-source I tasked Gemini Pro 2.5 to build one. Within the confines of lunchtime we had a plain, but working SVG graph library. What happened over the next week was an exercise in seeing how far we could go with vibe coding. Check out the finished project page. and the code: SVG-Graph-Network.
That "lunchtime project" didn't stay a simple toy. By that first evening, the library was becoming more usable. We had a new dataset, light/dark modes, collapsible legends, and multiple node shapes.
Then, on Thursday, the project hit its inflection point.
We'd just added comprehensive mobile and touch support. The physics kept running while dragging nodes. It was becoming obvious the next steps involed... well... a lot of steps so it was time to draft up and commit to the repo a roadmap.
This was the moment "vibe coding" collided with "best practices." The project, which had zero users, was suddenly slated for a full architectural overhaul.
The initial code was a 1,500-line monolithic "God Object." It worked, but it wasn't best practices, or even good practices.
So, we did the "unnecessary" thing and tore it down to the studs.
Friday Claude Code was quite busy. I effectively put Claude into a loop of migrate, test, repeat and we completed the TypeScript migration while adding tests the whole way. By the end of Friday we had implemented professional-grade APIs for core data and bulk operations. The roadmap was updated and our: "Production Readiness Upgrade" in our roadmap went from 4/10 → 7/10
In 24 hours, the project had gone from a toy to a serious library. We immediately added 38 new methods for selection, highlighting, and camera control.
Then we added the real professional infrastructure:
At this point the project was looking good, but Claude created some "God Objects" during the refactor that did not pass an audit prompt. Sunday was the day we paid the technical debt we had just incurred.
We didn't just refactor one God Object; we hunted down all of them.
By the end of the day, we had 466 passing tests, and the architecture was clean, testable, and maintainable.
The sprint finished on Tuesday with a final, crucial commit: we wrote the documentation, which included a section honestly recommending against using this for most production systems. It points everyone to D3.js, Cytoscape, and the other giants.
Because making yet another graphing library was never the point (xkcd 927?).
This was about the joy of the craft. It was an exercise in seeing how far a developer-AI pair could push a "vibe" and still land on a foundation of rock-solid, professional-grade best practices.
We "shipped" it on Wednesday by building the GitHub Pages site and, in a final act of dogfooding, using the library itself to visualize its own internal module dependencies.
At the end of the day? It's a graph library that hopefully nobody uses. But for me, it was a one-week, 100 commit experiment to seeing if humans and AI can build things right when pushing the envolope of what is possible.