Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

CanvasAnvil

AI-powered multi-canvas creation for diagrams, interior design, presentations and images.

version license React TypeScript Vite workspaces PRs welcome

Canvases | PPT Showcase | Video Tutorial | Skills | Quick Start | Recent Updates | Chinese

⭐ If CanvasAnvil helps your workflow, please star the repo and fork it for your own canvas experiments.

CanvasAnvil brings diagramming, interior design, presentation production and free-form image work into one workspace, in Chinese or English.

🔷 Diagram Canvas

Turn structured prompts into clear diagrams for research, systems, delivery plans, and teaching maps, then keep refining layout, labels, and node relationships in one place.

Showcase

Diagram example: academic research framework
Academic Research Framework
Diagram example: intelligent Q&A system architecture
Intelligent Q&A System Architecture
Diagram example: project implementation roadmap
Project Implementation Roadmap
Diagram example: course design mind map
Course Design Mind Map

🏠 Interior Design Canvas

Move from concept framing to drawable outputs by combining planning boards, 2D layouts, render briefs, and material-list delivery in one workflow.

Showcase

CAD renovation plan layout
Renovation Plan Layout
CAD floor finish plan
Floor Finish Plan
CAD reflected ceiling plan
Reflected Ceiling Plan
CAD wall setting out plan
Wall Setting-Out Plan
CAD MEP plan
MEP Coordination Plan
CAD elevation index and interior elevations
Elevation Index + Interior Elevations
CAD detail drawings
Detail Drawings

📑 PPT Canvas

Generate full presentations through a controlled pipeline: outline first, visual production second, then export as PDF or image-based PPT. The deck template sets the style and colour palette; each slide gets a layout of its own.

Showcase

AI content creation workflow deck preview AI Content Creation Workflow Intelligent collaboration growth deck preview Intelligent Collaboration Growth
AI-driven business innovation deck preview AI-Driven Business Innovation Low-carbon smart campus transformation deck preview Low-Carbon Smart Campus Transformation

🖌️ Free Canvas

A whiteboard for images: describe a picture in one sentence and it lands on the board. Circle what to change, write a note beside it, press the wand, and a new version appears next to the original. Every version is kept, and the version strip shows what each one changed and when.

Showcase

Free Canvas: an image from one sentence
An Image from One Sentence
Free Canvas: marking up the image
Mark It Up on the Board
Free Canvas: a new version from the marks
A New Version from the Marks
Free Canvas: comparing versions
Compare the Versions

🎨 Creative Canvases

WorkspaceFocusTypical output
Diagramstructured diagram generation and partial editingflowcharts, architecture diagrams, logic diagrams
Interior Designinterior planning, drawing coordination, and delivery packagingconcept boards, 2D drawings, render briefs, material lists
PPTstructured presentation generation and exportpresentations, pitch decks, report slides
Free Canvastext-to-image and edit-by-annotation on a whiteboardposters, illustrations, revised versions of an image

🌐 Online Access

Current online access URL:

Video Tutorial

One walkthrough per canvas on Bilibili (narrated in Chinese). In the app, the Tutorials button at the top of the home page plays them in place.

A whole architecture diagram from one sentence, and edits that touch only what you name
🔷 Diagram · A whole architecture diagram from one sentence, and edits that touch only what you name
A full set of renovation drawings from one request, plus a 3D walkthrough
🏠 Interior Design · A full set of renovation drawings from one request, plus a 3D walkthrough
An 8-slide deck from one sentence, with 200+ templates to choose from
📑 PPT · An 8-slide deck from one sentence, with 200+ templates to choose from
Circle a spot and only that changes; the rest of the image stays put
🖌️ Free Canvas · Circle a spot and only that changes; the rest of the image stays put

🧰 Skills

CanvasAnvil includes dedicated local skills for each canvas so workflows stay opinionated, repeatable, and easier to maintain.

  • diagram-skill · Diagram generation and packaging Outputs clean diagram assets and skips standalone HTML preview by default.
  • cad-skill · Interior-delivery workflow Exports drawing bundles and a CSV material list for downstream delivery.
  • ppt-skill · Full presentation production Enforces outline review before generation and supports editable PPT, PDF, and image-based PPT output.

All skills use the host text model by default. Only image generation requires explicit provider configuration. Editable PPTX export uses the host model too: the agent rebuilds the slides step by step following skill/ppt-skill/references/editable-pptx-workflow.md, with the scripts in the skill's editable/ folder; it also needs PowerPoint and the Python packages in editable/requirements.txt.

🚀 Quick Start

  1. Install dependencies
npm install
  1. Start local development
npm run dev

Default URL: http://127.0.0.1:8001

CanvasAnvil deploys as a single service. See deploy/README.md for detailed deployment configuration.

  1. Run type checks
npm run check
  1. Build for production
npm run build

🧪 Common Commands

  • npm run dev: start the app on 8001
  • npm run check: run TypeScript checks
  • npm run lint: run ESLint
  • npm test: run the test suite
  • npm run build: build the production bundle

📝 Development Notes

  • Every model call uses the OpenAI HTTP protocol. To use another vendor, point the base URL in Settings at their OpenAI-compatible endpoint — there is no provider list to pick from.
  • AI configuration is read from local app settings; the text and image channels are configured separately.
  • Local development depends on the API service for /api/chat and /api/ppt-ai.
  • After changing local API route wiring in vite.config.ts, restart the dev server.
  • server/** uses relative imports: vite.config.ts imports the dev middleware so npm run dev serves the API in-process, and Vite loads its own config through plain Node, which does not know the @/ alias.
  • Set PROMPT_LOG_DIR to write assembled prompts to disk; it is off by default because the log contains the user's content.

📚 Docs

🗓️ Recent updates

2026-11-06

✨ New

  • Editable PPTX export for the PPT canvas

    • The export menu has a new "Export Editable PPTX", next to "Export PDF" and "Export Image PPT".
    • Exported decks used to be one picture per slide. Now every slide comes back as layers you can edit, from bottom to top:
      • Clean base: the background with text, cards and icons removed; gradients, waves, buildings and other background art stay in this layer;
      • Native shapes: card frames, dividers, dots, rings, bars and arrows are PowerPoint's own shapes, so their colour, size and corner radius can be changed directly;
      • Icons and illustrations: redrawn by the image model after the original, on transparent backgrounds, to move, resize or replace one by one;
      • Editable text: titles, body text and lists sit in text boxes, keeping their position, size, colour and weight.
    • Slides in one style share a single base, and icons and cards repeated across slides are drawn once, so the whole deck stays consistent.
  • Export settings

    • Pages: lists every slide by number and title; select all, none or page by page to export only what you need.
    • Rework rounds: up to 3–10 per page, default 3. Each finished page is checked against the original (overall similarity, local differences, text position and size, green fringes left from cut-outs); a page that fails is fixed and checked again, and a page that passes stops early instead of using up its rounds.
    • A count out of range snaps to the nearest allowed value.
  • Export run panel

    • Once started, a fixed-height panel opens under the export button and scrolls through the whole run as it happens, like an agent at work.
    • Seven steps in order: read text → plan backgrounds → draw clean backgrounds → analyse elements → draw icons and illustrations → rebuild pages → write the PPTX, each with its state (waiting, running, done or failed) and time taken.
    • Under each step, timestamped details such as "page 1: 12 text blocks read", "base g1 shared by pages 1 and 2", "page 2: round 1 failed (similarity 78.5, 6 problems), fixing".
    • "Rebuild pages" is grouped by page, so pages built side by side keep their progress apart.
    • The step and page in progress open by themselves and fold away when done; anything you opened or closed yourself stays as you left it. When the panel is full it scrolls, following the newest line unless you have scrolled up to read.
    • Intermediate results open with a click: the clean bases, icon sheets, every sliced icon and illustration, every page's preview after each round and the check images with problem areas marked all show as thumbnails that open full size.
  • editable_pptx export mode in ppt-skill

    • Coding agents such as Claude Code and Codex can export a deck as editable PPTX, with the same steps and checks as the app.
    • The host agent makes the judgments itself: planning the base groups, analysing each page's elements, writing each page's compose spec and fixing what the checks find. No separate chat model to configure.
    • editable/editable_run.py does the mechanical steps (OCR, image calls with retries, aspect checks, slicing by drawings, composition, PowerPoint previews, checks, merge), run in order init → base → analysis → assets → page / check → merge; the full workflow is in references/editable-pptx-workflow.md.
    • It reads the same slide manifest as the image PPT, converting JPG, WebP and other formats; the run folder keeps the bases, asset sheets and every round's previews and checks.
    • The skill carries every script and rule doc it needs, independent of the app's code, so it works on its own.
    • The image model comes from the skill's config/image-provider.json, the same file the other export modes use.
    • SKILL.md and references/export-modes.md describe when to use the mode, its steps, settings and requirements, and the agent warns the user up front that it takes a while.

⚡ Improved

  • During an export, collapse the run panel to a timer pill beside the export button (showing the time so far) and keep editing; click the pill to open it again.
  • When the export finishes the panel closes and the file downloads; if it fails, the panel stays open with the step that failed and why.
  • A page refresh, closing and reopening the page, or a server restart picks a running export back up, with its earlier steps and pictures still there, and the file still downloads when it is done.
  • Better background detection: elements are analysed with the clean base alongside, so gradients, waves and buildings in the background are no longer drawn a second time as elements.
  • A base whose aspect ratio is off from the original is redrawn, never stretched.
  • An icon sheet with the wrong number of drawings is thrown away and redrawn, so misaligned icons never end up in the deck.
  • Starting an export while one is running says "another export is running; wait for it to finish" instead of the two getting in each other's way.

📌 Notes

  • Editable export builds and checks every page, so it is slow: usually 10+ minutes, and one export runs at a time.
  • Icons and illustrations are redrawn after the original: the same design, not pixel for pixel.
  • Needs Microsoft PowerPoint (previews for the checks); install the Python packages with pip install -r scripts/slide-agent/requirements.txt. The scripts and rule docs it uses are all in scripts/slide-agent/; nothing else to install.
  • Models: set a chat model (SLIDE_AGENT_API_KEY / SLIDE_AGENT_BASE_URL / SLIDE_AGENT_MODEL) and an image model (SLIDE_AGENT_IMAGE_API_KEY / SLIDE_AGENT_IMAGE_BASE_URL / SLIDE_AGENT_IMAGE_MODEL) in scripts/slide-agent/.env.local or the environment.

2026-11-05

🐛 Fixed

  • The Diagram canvas lost its correction step after a reload: the canvas corrects the model's layout and shows each diagram as thinking → drawing → correction in the chat, but corrections lived only in memory, so a refresh dropped the third step.
    • Every diagram's correction is now saved locally with the chat, so after a refresh the correction step and the layout scores before and after are still there;
    • the latest diagram also keeps both versions, so you can still switch between the model's original and the corrected layout.
  • A correction running at reload hung: one that had not finished when the page was refreshed now comes back as finished instead of staying "in progress".

⚖️ License

CanvasAnvil is released under the MIT License. See LICENSE for the full license text.

💌 Contact

  • 3524962421@qq.com

⭐ Star History

Star History Chart

关于 About

CanvasAnvil is an open source AI diagram maker and flowchart generator - an infinite-canvas diagram editor and self-hosted drawio alternative that writes editable .drawio files. Text to diagram, then fix nodes, layout and labels in place. Also AI presentations, interior design CAD/BOM, posters and infographics.
ai-agentsai-diagramai-presentationbomcadcanvasdiagramdiagram-generatordrawioflowchartinfographicspptppt-generatorpresentation-generatorreactsvgedittext-to-diagramtypescriptworkflow

语言 Languages

TypeScript88.8%
Python7.9%
JavaScript2.6%
HTML0.4%
CSS0.3%
Dockerfile0.0%
Shell0.0%
PowerShell0.0%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
163
Total Commits
峰值: 73次/周
Less
More

核心贡献者 Contributors