CADAM
CADAM is the open source text-to-CAD web application
Install / Use
/learn @Adam-CAD/CADAMREADME
✨ Features
- 🤖 AI-Powered Generation - Transform natural language and images into 3D models
- 🎛️ Parametric Controls - Interactive sliders for instant dimension adjustments
- 📦 Multiple Export Formats - Export as .STL or .SCAD files
- 🌐 Browser-Based - Runs entirely in your browser using WebAssembly
- 📚 Library Support - Includes BOSL, BOSL2, and MCAD libraries
🎯 Key Capabilities
| Feature | Description | | -------------------------- | ---------------------------------------------------- | | Natural Language Input | Describe your 3D model in plain English | | Image References | Upload images to guide model generation | | Real-time Preview | See your model update instantly with Three.js | | Parameter Extraction | Automatically identifies adjustable dimensions | | Smart Updates | Efficient parameter changes without AI re-generation | | Custom Fonts | Built-in Geist font support for text in models |
📸 Demo
<!-- Add demo GIFs or screenshots here --> <!-- Example format:  ### Example: Creating a parametric gear  -->🎬 Try it live: https://adam.new/cadam
📺 Screenshots
<img src="./public/screenshot-2.jpeg" alt="CADAM Screenshot 2" /> <details> <summary>More screenshots</summary> <br/> <img src="./public/screenshot-1.jpeg" alt="CADAM Screenshot 1" /> <br/> <img src="./public/screenshot-3.jpeg" alt="CADAM Screenshot 3" /> </details>🚀 Quick Start
# Clone the repository
git clone https://github.com/Adam-CAD/CADAM.git
cd CADAM
# Install dependencies
npm install
# Start Supabase
npx supabase start
npx supabase functions serve --no-verify-jwt
# Start the development server
npm run dev
📋 Prerequisites
- Node.js and npm
- Supabase CLI
- ngrok (for local webhook development)
🔧 Setting Up Environment Variables
1. Frontend Environment:
- Copy
.env.local.templateto.env.local - Update all required keys in
.env.local:VITE_SUPABASE_ANON_KEY="<Test Anon Key>" VITE_SUPABASE_URL='http://127.0.0.1:54321'
2. Supabase Functions Environment:
- Copy
supabase/functions/.env.templatetosupabase/functions/.env - Update all required keys in
supabase/functions/.env, including:ANTHROPIC_API_KEY="<Test Anthropic API Key>" ENVIRONMENT="local" NGROK_URL="<NGROK URL>" # Your ngrok tunnel URL, e.g., https://xxxx-xx-xx-xxx-xx.ngrok.io
🌐 Setting Up ngrok for Local Development
CADAM uses ngrok to send image URLs to Anthropic:
-
Install ngrok if you haven't already:
npm install -g ngrok # or brew install ngrok -
Start an ngrok tunnel pointing to your Supabase instance:
ngrok http 54321 -
Copy the generated ngrok URL (e.g., https://xxxx-xx-xx-xxx-xx.ngrok.io) and add it to your
supabase/functions/.envfile:NGROK_URL="https://xxxx-xx-xx-xxx-xx.ngrok.io" -
Ensure
ENVIRONMENT="local"is set in the same file.
💻 Development Workflow
Install Dependencies
npm i
Start Supabase Services
npx supabase start
npx supabase functions serve --no-verify-jwt
🛠️ Built With
- Frontend: React 18 + TypeScript + Vite
- 3D Rendering: Three.js + React Three Fiber
- CAD Engine: OpenSCAD WebAssembly
- Backend: Supabase (PostgreSQL + Edge Functions)
- AI: Anthropic Claude API
- Styling: Tailwind CSS + shadcn/ui
- Libraries: BOSL, BOSL2, MCAD
🤝 Contributing
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also open an issue.
See the CONTRIBUTING.md for instructions and code of conduct.
🙏 Credits
This app wouldn't be possible without the work of:
📄 License
This distribution is licensed under the GNU General Public License v3.0 (GPLv3). See LICENSE.
Components and attributions:
- Portions of this project are derived from
openscad-web-gui(GPLv3). - This distribution includes unmodified binaries from OpenSCAD WASM under
GPL v2 or later; distributed here under GPLv3 as part of the combined work.
See
src/vendor/openscad-wasm/SOURCE-OFFER.txt.
<div align="center">
⭐ If you find CADAM useful, please consider giving it a star!
Made with 💙 for the 3D printing and CAD community
</div>