Files
next-ai-draw-io/README.md

193 lines
6.0 KiB
Markdown
Raw Normal View History

# Next AI Draw.io
2025-03-23 15:24:49 +00:00
A next.js web application that integrates AI capabilities with draw.io diagrams. This app allows you to create, modify, and enhance diagrams through natural language commands and AI-assisted visualization.
https://github.com/user-attachments/assets/b2eef5f3-b335-4e71-a755-dc2e80931979
Demo site: [https://next-ai-draw-io.vercel.app](https://next-ai-draw-io.vercel.app)
2025-03-23 15:28:05 +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
- **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:
<table>
<tr>
<td width="50%" style="vertical-align:top;height:400px;">
**Prompt:**
```
Generate a GCP architecture diagram with **GCP icons**. In this diagram, users connect to a frontend hosted on an instance.
```
<img src="./public/gcp_demo.svg" alt="GCP Architecture Diagram" style="width:100%;height:300px;object-fit:contain;" />
</td>
<td width="50%" style="vertical-align:top;height:400px;">
**Prompt:**
```
Generate a AWS architecture diagram with **AWS icons**. In this diagram, users connect to a frontend hosted on an instance.
```
<img src="./public/aws_demo.svg" alt="AWS Architecture Diagram" style="width:100%;height:300px;object-fit:contain;" />
</td>
</tr>
<tr>
<td width="50%" style="vertical-align:top;height:400px;">
**Prompt:**
```
Generate a Azure architecture diagram with **Azure icons**. In this diagram, users connect to a frontend hosted on an instance.
```
<img src="./public/azure_demo.svg" alt="Azure Architecture Diagram" style="width:100%;height:300px;object-fit:contain;" />
</td>
<td width="50%" style="vertical-align:top;height:400px;">
**Prompt:**
```
Draw a cute cat for me.
```
<img src="./public/cat_demo.svg" alt="Cat Drawing" style="width:100%;height:300px;object-fit:contain;" />
</td>
</tr>
<tr>
<td colspan="2" style="vertical-align:top;height:400px;">
**Prompt:**
```
Give me a **animated connector** diagram of transformer's architecture.
```
<img src="./public/animated_connectors.svg" alt="Transformer Architecture with Animated Connectors" style="width:50%;height:300px;object-fit:contain;display:block;margin:0 auto;" />
</td>
</tr>
</table>
2025-03-23 15:24:49 +00:00
## How It Works
The application uses the following technologies:
2025-03-23 15:24:49 +00:00
- **Next.js**: For the frontend framework and routing
- **@ai-sdk/react**: For the chat interface and AI interactions
- **react-drawio**: For diagram representation and manipulation
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
- AWS Bedrock (default)
- OpenAI
- Anthropic
- Google AI
- Azure OpenAI
- Ollama
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
### Installation
1. Clone the repository:
```bash
2025-03-23 15:24:49 +00:00
git clone https://github.com/DayuanJiang/next-ai-draw-io
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:
```bash
2025-11-15 15:32:21 +09:00
cp env.example .env.local
```
2025-11-15 13:36:42 +09:00
Edit `.env.local` and configure your chosen provider:
2025-11-15 15:32:21 +09:00
- Set `AI_PROVIDER` to your chosen provider (bedrock, openai, anthropic, google, azure, ollama)
- Set `AI_MODEL` to the specific model you want to use
- Add the required API keys for your provider
2025-11-15 13:36:42 +09:00
See the [Multi-Provider Support](#multi-provider-support) section above for provider-specific configuration examples.
4. Run the development server:
```bash
npm run dev
```
5. Open [http://localhost:3000](http://localhost:3000) in your browser to see the application.
## Deployment
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.
Check out the [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
Or you can deploy by this button.
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FDayuanJiang%2Fnext-ai-draw-io)
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.
## Project Structure
```
app/ # Next.js application routes and pages
extract_xml.ts # Utilities for XML processing
components/ # React components
chat-input.tsx # User input component for AI interaction
chatPanel.tsx # Chat interface with diagram control
ui/ # UI components (buttons, cards, etc.)
lib/ # Utility functions and helpers
utils.ts # General utilities including XML conversion
public/ # Static assets including example images
```
2025-03-24 02:43:27 +00:00
## TODOs
- [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)
- [ ] Solve the bug that generation will fail for session that longer than 60s.
2025-03-24 02:43:27 +00:00
## License
2025-03-23 15:24:49 +00:00
This project is licensed under the MIT License.
## Support & Contact
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-23 15:24:49 +00:00
---