Materializr
오픈소스 파라메트릭 3D CAD로 제약 스케치·솔리드 모델·나사·SVG·텍스트 조각·STL/STEP 내보내기를 지원합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Build 3D models with natural language.
Chat3D is an AI-powered prompt-to-CAD workspace. Describe a part in plain English, and Chat3D generates production-ready 3D models (STL, STEP, 3MF) using an agent-based LLM pipeline and Build123d under the hood. Preview results in-browser, iterate through conversation, and download files when ready.README 전문 보기 ↗Build 3D models with natural language.
Chat3D is an AI-powered prompt-to-CAD workspace. Describe a part in plain English, and Chat3D generates production-ready 3D models (STL, STEP, 3MF) using an agent-based LLM pipeline and Build123d under the hood. Preview results in-browser, iterate through conversation, and download files when ready.
The UI is organized into three persistent panes so you never lose context:
| Contexts | Thread | 3D Preview |
|---|---|---|
| All your chat contexts in one sidebar. Switch between projects instantly. | The full conversation with generated code, output files, and download links. | Interactive 3D preview powered by Three.js. Rotate, zoom, and inspect geometry in real time. |
Browser (React + Three.js + Tailwind)
|
| REST API + SSE
v
Express API Server
|
|-- PostgreSQL 16 + pgvector (users, chats, workbench, knowledge, experiments)
|-- Redis 7 (SSE event bus, notifications)
|-- LLM providers (OpenAI / Anthropic / xAI / DeepSeek / Bedrock / Minimax / Ollama)
|
|-- Build123d Rendering Service (Python, 2 replicas)
| |-> STL / STEP / 3MF files
|
|-- Screenshot Service (Pyrender, 2 replicas)
|-> Multi-angle screenshots for VLM evaluation
| Layer | Technology |
|---|---|
| Frontend | React 18, TypeScript, Vite, Tailwind CSS 4, shadcn/ui, Three.js, Recharts, i18next |
| Backend | Express, TypeScript, Prisma (PostgreSQL 16 + pgvector) |
| LLM abstraction | Vercel AI SDK (OpenAI, Anthropic, xAI, DeepSeek, Amazon Bedrock, Minimax, Ollama) |
| 3D rendering | Build123d (Python, containerized, 2 replicas) |
| Screenshots | Pyrender-based STL screenshot service (containerized, 2 replicas) |
| Vector search | pgvector with HNSW indexes for embeddings |
| Job queue | pg-boss (knowledge pipeline), in-memory queue (workbench batching) |
| Real-time | Server-Sent Events via Redis pub/sub + Web Push (VAPID) |
| Auth | JWT + bcrypt |
| Infrastructure | Docker Compose |
git clone https://github.com/kreuzhofer/chat3d-app.git
cd chat3d-app
npm install
cp example.env .env
Edit .env and set your LLM API keys and other configuration. See Environment Variables below.
docker compose up --build
This starts PostgreSQL, Redis, the Build123d rendering service, the backend API, and the frontend (nginx).
Navigate to http://localhost. On first launch, a setup wizard will guide you through creating the admin account.
Copy example.env to .env and configure:
| Variable | Purpose |
|---|---|
DB_PASSWORD | PostgreSQL password |
JWT_SECRET | Secret key for JWT signing |
BUILD123D_URL | Build123d service URL (default: http://build123d:80) |
SCREENSHOT_SERVICE_URL | Screenshot service URL (default: http://screenshot-service:80) |
QUERY_RENDER_MODE | live (default) or mock — controls real vs stubbed 3D rendering |
QUERY_LLM_MODE | live (default) or mock — controls real vs stubbed LLM calls |
FRONTEND_PORT | Host port for the frontend (default: 80) |
LOG_LEVEL | Logging level: fatal, error, warn, info (default), debug, trace, silent |
LOG_FORMAT | Log output format: json (default in Docker) or pretty (human-readable) |
LLM Provider Configuration: API keys, endpoint URLs, model assignments, and purpose mappings are all managed via the Admin UI → Providers tab, not environment variables.
See example.env for the full list including SMTP, Redis, concurrency, security, and worker configuration.
| Service | Purpose | Port |
|---|---|---|
postgres | PostgreSQL 16 database (pgvector) | 5432 |
redis | SSE event bus | 6379 |
build123d | Build123d Python rendering service (2 replicas) | internal |
screenshot-service | Pyrender STL screenshot service (2 replicas) | internal |
backend | Express API server (proxied via nginx, not exposed to host) | internal |
frontend | React SPA + API reverse proxy (nginx) | 80 |
account-deletion-worker | Scheduled cleanup of deactivated accounts | -- |
# Run backend in dev mode (requires postgres + redis running)
cd packages/backend && npm run dev
# Run frontend in dev mode
cd packages/frontend && npm run dev
# Run backend tests
npm --workspace @chat3d/backend run test
# Run frontend tests
npm --workspace @chat3d/frontend run test
# Typecheck
npm --workspace @chat3d/frontend run typecheck
For selective Docker rebuilds during development:
# Rebuild only the frontend
docker compose build frontend && docker compose up -d frontend
# Rebuild only the backend
docker compose build backend && docker compose up -d backend
chat3d-app/
packages/
shared/ # Shared TypeScript types (events, traces, domain models)
backend/ # Express API server (Prisma, 85+ service files)
prisma/ # Schema + migrations
src/
routes/ # 17 route files
services/ # Business logic (pipeline, eval, workbench, experiments, ...)
frontend/ # React SPA (Vite + Tailwind)
src/
components/ # 70+ components (chat, admin, gallery, workbench, UI primitives)
hooks/ # 12 custom hooks (SSE, streaming, scroll, pull-to-refresh)
api/ # 14 API client modules
services/
build123d/ # Build123d rendering container
screenshot-service/ # Pyrender STL screenshot container
workbench/ # Seed data for workbench categories and prompts
docker-compose.yml
All routes (except auth, setup, waitlist, and public) require Authorization: Bearer <token>. Admin routes require the admin role. 230+ endpoints total across 17 route files.
| Method | Path | Description |
|---|---|---|
POST | /api/setup/init | Initial setup (creates first admin) |
POST | /api/auth/login | Login (returns JWT) |
POST | /api/auth/register | Create account |
GET | /api/auth/me | Current user profile |
GET | /api/chat/contexts | List chat contexts |
POST | /api/chat/contexts | Create chat context |
GET | /api/chat/contexts/:id/items | Get chat items |
POST | /api/query/submit | Submit a modeling query (async) |
POST | /api/query/regenerate | Regenerate a previous response |
POST | /api/query/stop | Stop a running query |
POST | /api/query/re-render | Re-render with tweaked parameters |
GET | /api/events/stream | SSE event stream (real-time updates) |
GET/POST | /api/files/* | File upload, download, delete |
POST | /api/profile/* | Account management (password, email, delete, export) |
GET | /api/llm/models | List available LLM models |
GET | /health | Health check |
GET | /ready | Readiness check |
| Method | Path | Description |
|---|---|---|
GET | /api/public/config | Public app configuration |
GET | /api/public/gallery/categories | List gallery categories |
GET | /api/public/gallery/categories/:id/models | List models in category |
GET | /api/public/gallery/models/:id | Model detail |
GET | /api/public/gallery/search | Search gallery models |
GET | /api/public/gallery/models/:id/screenshot/:angle | Model screenshot |
GET | /api/public/gallery/models/:id/download/:format | Download model (stl/3mf/step/b123d) |
POST | /api/gallery/remix | Remix a gallery model into a new chat |
POST | /api/waitlist/join | Join the waitlist |
| Group | Endpoints | Description |
|---|---|---|
| Users | GET/PATCH/DELETE /api/admin/users/* | User management, activation, password reset |
| Waitlist | GET/PATCH/DELETE /api/admin/waitlist/* | Waitlist approvals and management |
| Settings | GET/PATCH /api/admin/settings | App-level configuration (waitlist, invitations) |
| LLM Providers | CRUD /api/admin/llm-providers/* | Provider configuration (API keys, endpoints) |
| LLM Models | CRUD /api/admin/llm-models/* | Model registration and capabilities |
| LLM Purposes | GET/PATCH /api/admin/llm-purposes/* | Purpose-to-model assignments |
| Generation Settings | GET/PATCH/DELETE /api/admin/generation-settings/* | Pipeline tuning knobs |
| Curation | GET/PATCH/POST /api/admin/curation/* | Candidate review, distillation, tagging, approval |
| Usage Analytics | GET /api/admin/usage/* | Token/cost analytics (summary, timeseries, export) |
| Pipeline Analytics | GET /api/admin/pipeline/* | Generation performance metrics and breakdowns |
| Workbench | CRUD /api/admin/workbench/* | Categories, prompts, examples, batch generation, embeddings, export/import |
| Experiments | CRUD /api/admin/experiments/* | Create, run, compare LLM model experiments |
| Backups | GET/DELETE /api/admin/backups/* | Database backup management |
All rights reserved.