mirror of
https://github.com/ZSeven-W/openpencil.git
synced 2026-05-31 19:04:29 +07:00
The world's first open-source AI-native vector design tool and the first to feature concurrent Agent Teams. Design-as-Code. Turn prompts into UI directly on the live canvas. A modern alternative to Pencil.
agentagent-teamaiclaudeclaude-codecodexfimgaflutterhtmlmcpopencodeopenpencilpencilreactreact-nativesvelteuivibecodingvibedesignvue
Add floating AI assistant panel with streaming chat, design keyword detection, and automatic PenNode JSON extraction to canvas. Server endpoints use Anthropic SDK (with API key) or Claude Agent SDK (local OAuth) as fallback. Panel supports minimize, drag-to-snap, and quick action presets. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .vscode | ||
| public | ||
| server/api/ai | ||
| src | ||
| .cta.json | ||
| .gitignore | ||
| bun.lock | ||
| CLAUDE.md | ||
| components.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| vite.config.ts | ||
OpenPencil
Open-source vector design tool with a Design-as-Code philosophy. An alternative to Pencil.dev.
Features
- Canvas: Infinite canvas with pan (Space+drag / middle mouse / Hand tool) and zoom (scroll wheel), smart guides & snapping
- Drawing tools: Rectangle, Ellipse, Line, Frame, Text
- Property editing: Position, size, rotation, fill (solid + gradient), stroke, corner radius, opacity, effects (shadow, blur)
- Layer panel: Tree view, drag reorder, visibility toggle, lock, context menu, selection sync, rename
- Undo/Redo: Full history with batched drag operations (Cmd+Z / Cmd+Shift+Z)
- Clipboard: Copy, cut, paste, duplicate (Cmd+C/X/V/D)
- Grouping: Group / ungroup selected elements (Cmd+G / Cmd+Shift+G)
- File operations: Save/open .pen files (JSON-based, Git-friendly), auto-save support
- Export: PNG and SVG export with scale options (Cmd+Shift+E)
- Code generation: Generate React+Tailwind or HTML+CSS code from designs (Cmd+Shift+C)
- AI assistant: Built-in AI chat panel for design assistance (Cmd+J)
- Keyboard shortcuts: Tool keys (V/R/O/L/T/F/H), Delete, arrow nudge, bracket keys for z-order, Cmd+A select all
Tech Stack
- Framework: TanStack Start (React 19, SSR, file-based routing)
- Canvas: Fabric.js v7
- State: Zustand v5
- Styling: Tailwind CSS v4
- Icons: Lucide React
- Runtime: Bun
- Build: Vite 7
Getting Started
bun install
bun --bun run dev
Open http://localhost:3000 and click "New Design" to enter the editor.
Scripts
| Command | Description |
|---|---|
bun --bun run dev |
Start dev server on port 3000 |
bun --bun run build |
Production build |
bun --bun run preview |
Preview production build |
bun --bun run test |
Run tests (Vitest) |
Project Structure
src/
canvas/ # Fabric.js canvas engine, drawing, sync, guides
components/
editor/ # Editor layout, toolbar
panels/ # Layer panel, property panel, AI chat, code panel
shared/ # Reusable UI (ColorPicker, NumberInput, ExportDialog, etc.)
hooks/ # Keyboard shortcuts
services/
ai/ # AI chat service, prompts, design generation
codegen/ # React and HTML code generators
stores/ # Zustand stores (canvas, document, history, AI)
types/ # PenDocument/PenNode types, style types
utils/ # File operations, export, node clone, syntax highlight
routes/ # TanStack Router pages (/, /editor)
server/
api/ # Server-side API endpoints
Roadmap
- Component system (reusable components with instances & overrides)
- Design variables/tokens with CSS sync
- Path / pen tool
- Boolean operations (union, subtract, intersect)
- Multi-page support
- Collaborative editing
License
MIT