Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Adam-CAD/CADAM

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

258 Commits
258 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CADAM Banner

⛮ The Open Source Text to CAD Web App ⛮

Stars Forks License: GPL v3 Node.js React Supabase OpenSCAD Website Discord Follow Zach Dive Follow Aaron Li Follow Dylan Anderson


✨ 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, .SCAD, or .DXF 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

🎬 Try it live: https://adam.new/cadam

📺 Screenshots

CADAM Screenshot 2

More screenshots
CADAM Screenshot 1
CADAM Screenshot 3

🚀 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 ^20.19.0 or >=22.12.0, with npm 10+
  • Supabase CLI
  • ngrok (for local webhook development)

🔧 Setting Up Environment Variables

1. Frontend Environment:

  • Copy .env.local.template to .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. Server Environment:

  • Add server-side keys to .env.local, including:
    ANTHROPIC_API_KEY="<Test Anthropic API Key>"
    OPENROUTER_API_KEY="<Test OpenRouter API Key>"
    OPENAI_API_KEY="<Test OpenAI API Key>"
    GOOGLE_API_KEY="<Test Google API Key>"
    FAL_KEY="<Test FAL API Key>"
    SUPABASE_SERVICE_ROLE_KEY="<Test Service Role Key>"
    BILLING_SERVICE_URL="<Test Billing Service URL>"
    BILLING_SERVICE_KEY="<Test Billing Service Key>"
    ENVIRONMENT="local"
    ADAM_URL="<Adam URL or dev URL>" # Checkout and portal redirect target
    WEBHOOK_BASE_URL="<Public TanStack App URL>" # Your app URL for /cadam/api callbacks
    NGROK_URL="<NGROK URL>" # Optional local Supabase Storage tunnel for provider-readable signed URLs
    

🌐 Setting Up ngrok for Local Development

CADAM uses public URLs for provider callbacks and local signed storage URLs:

  1. Install ngrok if you haven't already:

    npm install -g ngrok
    # or
    brew install ngrok
  2. Start an ngrok tunnel pointing to your TanStack Start dev server:

    ngrok http 3000
  3. Copy the generated ngrok URL (e.g., https://xxxx-xx-xx-xxx-xx.ngrok.io) and add it to your .env.local file:

    WEBHOOK_BASE_URL="https://xxxx-xx-xx-xxx-xx.ngrok.io"
    
  4. If a provider must fetch local Supabase Storage signed URLs, run a second tunnel to Supabase and set NGROK_URL to that URL.

  5. Ensure ENVIRONMENT="local" is set in the same file.

💻 Development Workflow

Install Dependencies

npm i

Start Supabase Services

npx supabase start
npm run dev

🛠️ Built With

  • Frontend: React 19 + TypeScript + TanStack Start + Vite
  • 3D Rendering: Three.js + React Three Fiber
  • CAD Engine: OpenSCAD WebAssembly
  • Backend: TanStack Start server routes + Supabase PostgreSQL/Auth/Storage
  • 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.

🌟 Star History

CADAM Star History

Live chart by RepoStars — click for the interactive version.


⭐ If you find CADAM useful, please consider giving it a star!

Stars

Made with 💙 for the 3D printing and CAD community

Morty Proxy This is a proxified and sanitized view of the page, visit original site.