cad.johnf.work - Browser-Based 3D CAD

Building My Own CAD Platform: From Late Night Inspiration to cad.johnf.work
"What if I just... built my own?"
That's exactly what I was thinking when I was following Yacine's DingCAD progress on X. Instead of diving deeper into learning how to use his platform, something clicked around midnight. Next thing I knew, it was 3am and I was knee-deep in manifold.js, cooking up my own little CAD platform.
The Foundation: What's Working Now
The basics are up and running at cad.johnf.work:
- Primitive shapes
- Transform controls for moving, rotating, and scaling objects
- A materials system with multiple options
- 2D sketch mode that extrudes into 3D – and the sketch stays editable
Timeline and Version Control
I also implemented a branching timeline feature – think Git for 3D models, except you can watch the whole thing play back. You can jump to any point in your model's history and branch off in a completely new direction. The UI is admittedly a mess right now (okay, it's really a mess), but the core idea is there.
The vision is to eventually export not just your model, but a timelapse video showing the entire design process. Imagine sharing not just what you built, but how you built it.
Developer Shenanigans
Because I can't help myself, I threw in a command line interface. Press /
to open it, ESC
to close. Is it easier than clicking buttons? Probably not. But it's fun to have, and it shows the browser console output.
I've also switched to my own custom ana.js for analytics, moving away from the GA4 plague and even PostHog because I have too many projects and they wanted money to track them all. Fortunately, nobody is really trying to use this thing, yet..
The Tech Stack
It's pretty insane how fast you can ship something like this now:
- manifold.js handles the heavy lifting
- three.js makes everything look pretty
- zustand for state management
- Still running on Replit (one of the few projects we haven't migrated to our self-managed VPS yet)
What's Next: The 3D Printing Pipeline
The endgame here is to get a Bambu Labs X1 (or similar) and use this tool for the entire design-to-print pipeline. The plan is to:
- Add proper scaling and measurements (because apparently that's useful in CAD software)
- Create a canvas mode with highlighted build areas for different 3D printers
- Make the model space match the exact dimensions of whatever printer we get
- Clean up that branching timeline UI before it drives me insane
- Maybe add an infinite canvas mode for notes and random stuff
The Reality Check
I'll be honest – the app is pretty clunky behind the scenes. There's no help menu, so I'm literally the only person who knows what works and what doesn't. Never got boolean unions working properly (though got surprisingly far). And yeah, might end up using Onshape or something else once we actually get the printer.
But that's not really the point. Sometimes you build things just to see if you can. Sometimes the best way to understand something is to build it yourself. And sometimes, you just need a project that keeps you up until 3am, excited about what feature you'll add next.
This project is long overdue for me to pick back up with newer tools, fix some bugs, and get it properly working before we set up that 3D printer in the garage. Until then, cad.johnf.work remains my quirky little corner of the internet where primitives reign supreme and the timeline branches like a mad scientist's notebook.
✌️