Parodesign - AI-Powered Chat-to-Diagram

Transform text descriptions into visual diagrams using AI. Simply describe what you want, and watch as your ideas become interactive diagrams in real-time.

Version License Next.js TypeScript

🚀 Features

  • Natural Language to Diagrams: Describe your diagram in plain text, AI generates it automatically
  • Interactive Canvas: Powered by Tldraw for smooth, infinite canvas experience
  • Smart Layout: Automatic graph layout using Dagre algorithm
  • Real-time Chat: Conversational interface with OpenAI GPT
  • Multiple Diagram Types: Support for flowcharts, process diagrams, decision trees, and more
  • Export Ready: Built on Tldraw, with native export capabilities

🎯 Use Cases

  • Process Documentation: "Create a user registration flow"
  • System Architecture: "Show me a microservices architecture with API gateway"
  • Business Workflows: "Design an e-commerce checkout process"
  • Decision Trees: "Create a troubleshooting flowchart for customer support"
  • Educational Diagrams: "Explain how OAuth authentication works"

🛠️ Tech Stack

  • Framework: Next.js 14.2 (App Router)
  • Language: TypeScript 5.0
  • UI: React 18.3, TailwindCSS 3.4
  • Canvas: Tldraw 2.4
  • Layout Engine: Dagre 1.1
  • AI: OpenAI GPT-4 (Chat Completions API)
  • Icons: Lucide React

📦 Installation

  1. Clone the repository

    git clone https://github.com/davidblanc347/parodesign.git
    cd parodesign
    
  2. Install dependencies

    npm install
    
  3. Configure environment variables

    Create a .env file in the root directory:

    NEXT_PUBLIC_OPENAI_API_KEY=your_openai_api_key_here
    
  4. Run the development server

    npm run dev
    
  5. Open your browser

    Navigate to http://localhost:3000

🎮 Usage

  1. Start a conversation: Type your diagram description in the chat panel on the left

    • Example: "Create a login process diagram"
  2. AI generates the diagram: The AI understands your description and creates a structured diagram

  3. View on canvas: The diagram appears automatically on the Tldraw canvas on the right

  4. Interact and edit: Use Tldraw's built-in tools to modify, zoom, pan, and export

Example Prompts

"Create a simple authentication flow with email and password"
"Show me a flowchart for processing a customer order"
"Design a decision tree for technical support escalation"
"Create a diagram showing the software development lifecycle"

📁 Project Structure

parodesign/
├── src/
│   ├── app/                    # Next.js App Router
│   │   ├── page.tsx           # Main application page
│   │   ├── layout.tsx         # Root layout
│   │   └── globals.css        # Global styles
│   ├── components/
│   │   ├── features/          # Feature components
│   │   │   ├── ChatPanel.tsx  # Chat interface
│   │   │   └── TldrawCanvas.tsx # Canvas wrapper
│   │   └── ui/                # UI components
│   │       ├── ChatInput.tsx  # Message input
│   │       └── ChatMessage.tsx # Message display
│   ├── hooks/
│   │   └── useChatAPI.ts      # OpenAI API integration
│   ├── lib/
│   │   ├── chat-prompts.ts    # AI system prompts
│   │   ├── diagram-parser.ts  # JSON extraction
│   │   ├── layout-engine.ts   # Dagre layout
│   │   ├── openai-config.ts   # API configuration
│   │   └── tldraw-helpers.ts  # Canvas utilities
│   └── types/
│       └── graph.ts           # TypeScript types
├── .env.example               # Environment template
├── next.config.js            # Next.js configuration
├── tailwind.config.ts        # Tailwind configuration
└── package.json              # Dependencies

🔧 Configuration

OpenAI API

The application uses OpenAI's Chat Completions API (not the Realtime API). Configure the model in src/lib/openai-config.ts:

export const OPENAI_CONFIG = {
  model: 'gpt-4-turbo-preview',  // Change model here
  temperature: 0.7,               // Adjust creativity
  maxTokens: 2000,               // Response length
};

Diagram Types

Supported node types in src/types/graph.ts:

  • start: Beginning of process
  • process: Action or step
  • decision: Yes/no branches
  • data: Data elements
  • end: Terminal points

🚦 Commands

npm run dev      # Start development server
npm run build    # Build for production
npm run start    # Start production server
npm run lint     # Run ESLint

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📝 License

This project is licensed under the MIT License.

🙏 Acknowledgments

🐛 Known Issues

  • First diagram generation may take a few seconds
  • Complex diagrams with many nodes may require manual layout adjustments

🗺️ Roadmap

  • Add diagram templates
  • Support for multiple diagram styles
  • Export to PNG/SVG/PDF
  • Collaborative editing
  • Diagram history and versioning
  • Custom node types and styling
  • Integration with diagram.net format

Built with ❤️ using Claude Code

Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com

Description
AI-powered chat-to-diagram application
Readme 141 KiB
Languages
TypeScript 96.7%
JavaScript 1.9%
CSS 1.4%