2025-03-23 15:03:38 +00:00
# Next AI Draw.io
2025-12-02 22:53:31 +09:00
< div align = "center" >
2025-03-23 15:03:38 +00:00
2025-12-02 22:53:31 +09:00
**AI-Powered Diagram Creation Tool - Chat, Draw, Visualize**
English | [中文 ](./README_CN.md ) | [日本語 ](./README_JA.md )
[](https://opensource.org/licenses/MIT)
[](https://nextjs.org/)
[](https://www.typescriptlang.org/)
[](https://github.com/sponsors/DayuanJiang)
[🚀 Live Demo ](https://next-ai-drawio.jiang.jp/ )
< / div >
2025-11-10 11:42:38 +09:00
2025-12-02 22:53:31 +09:00
A Next.js web application that integrates AI capabilities with draw.io diagrams. Create, modify, and enhance diagrams through natural language commands and AI-assisted visualization.
https://github.com/user-attachments/assets/b2eef5f3-b335-4e71-a755-dc2e80931979
2025-03-23 15:28:05 +00:00
2025-03-23 15:03:38 +00:00
## Features
2025-03-23 15:24:49 +00:00
- **LLM-Powered Diagram Creation** : Leverage Large Language Models to create and manipulate draw.io diagrams directly through natural language commands
- **Image-Based Diagram Replication** : Upload existing diagrams or images and have the AI replicate and enhance them automatically
- **Diagram History** : Comprehensive version control that tracks all changes, allowing you to view and restore previous versions of your diagrams before the AI editing.
- **Interactive Chat Interface** : Communicate with AI to refine your diagrams in real-time
2025-11-17 15:12:16 +09:00
- **AWS Architecture Diagram Support** : Specialized support for generating AWS architecture diagrams
- **Animated Connectors** : Create dynamic and animated connectors between diagram elements for better visualization
## **Examples**
Here are some example prompts and their generated diagrams:
2025-11-17 19:35:55 +09:00
< div align = "center" >
< table width = "100%" >
2025-12-02 22:53:31 +09:00
< tr >
< td colspan = "2" valign = "top" align = "center" >
< strong > Animated transformer connectors< / strong > < br / >
< p >< strong > Prompt:</ strong > Give me a **animated connector** diagram of transformer's architecture.</ p >
< img src = "./public/animated_connectors.svg" alt = "Transformer Architecture with Animated Connectors" width = "480" / >
< / td >
< / tr >
2025-11-17 19:35:55 +09:00
< tr >
< td width = "50%" valign = "top" >
< strong > GCP architecture diagram< / strong > < br / >
< p >< strong > Prompt:</ strong > Generate a GCP architecture diagram with **GCP icons** . In this diagram, users connect to a frontend hosted on an instance.</ p >
< img src = "./public/gcp_demo.svg" alt = "GCP Architecture Diagram" width = "480" / >
< / td >
< td width = "50%" valign = "top" >
< strong > AWS architecture diagram< / strong > < br / >
< p >< strong > Prompt:</ strong > Generate a AWS architecture diagram with **AWS icons** . In this diagram, users connect to a frontend hosted on an instance.</ p >
< img src = "./public/aws_demo.svg" alt = "AWS Architecture Diagram" width = "480" / >
< / td >
< / tr >
< tr >
< td width = "50%" valign = "top" >
< strong > Azure architecture diagram< / strong > < br / >
< p >< strong > Prompt:</ strong > Generate a Azure architecture diagram with **Azure icons** . In this diagram, users connect to a frontend hosted on an instance.</ p >
< img src = "./public/azure_demo.svg" alt = "Azure Architecture Diagram" width = "480" / >
< / td >
< td width = "50%" valign = "top" >
< strong > Cat sketch prompt< / strong > < br / >
< p > < strong > Prompt:< / strong > Draw a cute cat for me.< / p >
2025-12-02 22:53:31 +09:00
< img src = "./public/cat_demo.svg" alt = "Cat Drawing" width = "240" / >
2025-11-17 19:35:55 +09:00
< / td >
< / tr >
2025-11-17 15:12:16 +09:00
< / table >
2025-11-17 19:35:55 +09:00
< / div >
2025-03-19 06:04:06 +00:00
2025-03-23 15:24:49 +00:00
## How It Works
The application uses the following technologies:
2025-03-19 06:04:06 +00:00
2025-03-23 15:24:49 +00:00
- **Next.js** : For the frontend framework and routing
2025-12-02 22:53:31 +09:00
- **Vercel AI SDK** (`ai` + `@ai-sdk/*` ): For streaming AI responses and multi-provider support
2025-03-24 01:02:09 +00:00
- **react-drawio** : For diagram representation and manipulation
2025-03-23 15:03:38 +00:00
2025-03-23 15:24:49 +00:00
Diagrams are represented as XML that can be rendered in draw.io. The AI processes your commands and generates or modifies this XML accordingly.
2025-11-15 13:36:42 +09:00
## Multi-Provider Support
2025-11-16 09:16:02 +09:00
- AWS Bedrock (default)
2025-11-21 16:58:42 +08:00
- OpenAI / OpenAI-compatible APIs (via `OPENAI_BASE_URL` )
2025-11-16 09:16:02 +09:00
- Anthropic
- Google AI
- Azure OpenAI
- Ollama
2025-12-02 11:52:09 +09:00
- OpenRouter
- DeepSeek
2025-11-15 13:36:42 +09:00
2025-11-15 15:32:21 +09:00
Note that `claude-sonnet-4-5` has trained on draw.io diagrams with AWS logos, so if you want to create AWS architecture diagrams, this is the best choice.
2025-11-15 13:36:42 +09:00
2025-03-23 15:24:49 +00:00
## Getting Started
2025-03-23 15:03:38 +00:00
2025-12-03 21:15:25 +09:00
### Run with Docker (Recommended)
If you just want to run it locally, the best way is to use Docker.
First, install Docker if you haven't already: [Get Docker ](https://docs.docker.com/get-docker/ )
Then run:
```bash
docker run -d -p 3000:3000 \
-e AI_PROVIDER=openai \
-e AI_MODEL=gpt-4o \
-e OPENAI_API_KEY=your_api_key \
ghcr.io/dayuanjiang/next-ai-draw-io:latest
```
Open [http://localhost:3000 ](http://localhost:3000 ) in your browser.
Replace the environment variables with your preferred AI provider configuration. See [Multi-Provider Support ](#multi-provider-support ) for available options.
2025-03-23 15:03:38 +00:00
### Installation
1. Clone the repository:
```bash
2025-03-23 15:24:49 +00:00
git clone https://github.com/DayuanJiang/next-ai-draw-io
2025-03-23 15:03:38 +00:00
cd next-ai-draw-io
```
2. Install dependencies:
```bash
npm install
# or
yarn install
```
2025-11-15 13:36:42 +09:00
3. Configure your AI provider:
Create a `.env.local` file in the root directory:
2025-03-23 15:03:38 +00:00
2025-11-10 19:52:08 +09:00
```bash
2025-11-15 15:32:21 +09:00
cp env.example .env.local
2025-03-23 15:03:38 +00:00
```
2025-11-10 19:52:08 +09:00
2025-11-15 13:36:42 +09:00
Edit `.env.local` and configure your chosen provider:
2025-11-15 15:32:21 +09:00
2025-12-02 11:52:09 +09:00
- Set `AI_PROVIDER` to your chosen provider (bedrock, openai, anthropic, google, azure, ollama, openrouter, deepseek)
2025-11-15 15:32:21 +09:00
- Set `AI_MODEL` to the specific model you want to use
- Add the required API keys for your provider
2025-11-10 19:52:08 +09:00
2025-11-15 13:36:42 +09:00
See the [Multi-Provider Support ](#multi-provider-support ) section above for provider-specific configuration examples.
2025-03-23 15:03:38 +00:00
4. Run the development server:
2025-03-19 06:04:06 +00:00
```bash
npm run dev
```
2025-03-23 15:03:38 +00:00
5. Open [http://localhost:3000 ](http://localhost:3000 ) in your browser to see the application.
2025-03-24 01:02:09 +00:00
## Deployment
2025-03-19 06:04:06 +00:00
2025-03-24 01:02:09 +00:00
The easiest way to deploy your Next.js app is to use the [Vercel Platform ](https://vercel.com/new ) from the creators of Next.js.
2025-03-23 15:03:38 +00:00
2025-03-24 01:02:09 +00:00
Check out the [Next.js deployment documentation ](https://nextjs.org/docs/app/building-your-application/deploying ) for more details.
2025-03-23 15:03:38 +00:00
2025-03-24 01:02:09 +00:00
Or you can deploy by this button.
[](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FDayuanJiang%2Fnext-ai-draw-io)
2025-03-23 15:03:38 +00:00
2025-11-15 15:32:21 +09:00
Be sure to **set the environment variables** in the Vercel dashboard as you did in your local `.env.local` file.
2025-03-23 15:03:38 +00:00
## Project Structure
```
2025-12-02 22:53:31 +09:00
app/ # Next.js App Router
api/chat/ # Chat API endpoint with AI tools
page.tsx # Main page with DrawIO embed
2025-03-23 15:03:38 +00:00
components/ # React components
2025-12-02 22:53:31 +09:00
chat-panel.tsx # Chat interface with diagram control
chat-input.tsx # User input component with file upload
history-dialog.tsx # Diagram version history viewer
2025-03-23 15:03:38 +00:00
ui/ # UI components (buttons, cards, etc.)
2025-12-02 22:53:31 +09:00
contexts/ # React context providers
diagram-context.tsx # Global diagram state management
2025-03-23 15:03:38 +00:00
lib/ # Utility functions and helpers
2025-12-02 22:53:31 +09:00
ai-providers.ts # Multi-provider AI configuration
utils.ts # XML processing and conversion utilities
2025-03-23 15:03:38 +00:00
public/ # Static assets including example images
```
2025-03-24 02:43:27 +00:00
## TODOs
2025-08-31 20:54:07 +09:00
- [x] Allow the LLM to modify the XML instead of generating it from scratch everytime.
2025-03-25 10:56:08 +00:00
- [x] Improve the smoothness of shape streaming updates.
2025-11-15 13:36:42 +09:00
- [x] Add multiple AI provider support (OpenAI, Anthropic, Google, Azure, Ollama)
2025-12-01 22:40:43 +09:00
- [x] Solve the bug that generation will fail for session that longer than 60s.
- [ ] Add API config on the UI.
2025-03-24 02:43:27 +00:00
2025-03-23 15:03:38 +00:00
## Support & Contact
2025-12-02 22:53:31 +09:00
If you find this project useful, please consider [sponsoring ](https://github.com/sponsors/DayuanJiang ) to help me host the live demo site!
2025-03-23 15:03:38 +00:00
For support or inquiries, please open an issue on the GitHub repository or contact the maintainer at:
2025-03-23 15:24:49 +00:00
- Email: me[at]jiang.jp
2025-03-19 06:04:06 +00:00
2025-12-01 22:40:43 +09:00
## Star History
[](https://www.star-history.com/#DayuanJiang/next -ai-draw-io& type=date& legend=top-left)
2025-03-23 15:24:49 +00:00
---