Tavotto
AI drew your research figure. Tavotto makes it publication-ready: edit matplotlib figures on a canvas, lay out in mm, check journal rules. Free, open source.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 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.