From prompt to professional diagrams β with real logos, not rectangles
Prerequisites: Node.js 20+ and pnpm 8+
# Install dependencies
pnpm install
# Start development server (always localhost:3000)
pnpm devOpen http://localhost:3000 and start creating diagrams!
β οΈ Important: Always usepnpm(never npm or yarn). Server runs onlocalhost:3000- check if it's already running.
Current AI diagram tools convert text β Mermaid code β generic rectangles. They can't access real logos (Docker, AWS, K8s), making diagrams look unprofessional.
FlowCanvas solves this:
- π― AI β Real Logos: Uses Excalidraw's 100+ icon libraries
- π§ MCP-Powered: Model Context Protocol makes AI "library-aware"
- π¨ Professional Output: Actual Docker, AWS, K8s icons, not boxes
- π Privacy-First: Local storage, data never leaves your device
- Infinite Canvas: Full Excalidraw drawing experience
- Auto-save: Diagrams saved to localStorage every second
- Dark Theme: Professional dark interface
- Export: PNG, SVG, JSON formats
- No Login Required: Start drawing immediately
- Persistent: Your work survives browser restarts
- Notes Panel: Markdown editor on the right with live preview and auto-save
- Supabase authentication (optional cloud sync)
- Multiple diagrams with folder organization
- AI diagram generation (MCP-powered)
- Excalidraw library search (100+ icon packs)
- Templates & guided wizard
Week 1-2 Complete:
- β Next.js 15 + React 19 + TypeScript setup
- β Excalidraw integration (official best practices)
- β localStorage persistence with auto-save
- β Proper SSR handling (dynamic import)
- β Clean component architecture
- β Type-safe implementation
Next Steps (Week 3-4):
- Clone excalidraw-libraries repo
- Index top 20 libraries (AWS, Docker, K8s, databases, etc.)
- Create library search API (semantic + keyword)
- Build library panel UI with drag & drop
- Meilisearch integration for vector search
- Framework: Next.js 15 (App Router) + Turbopack
- UI: React 19 + TypeScript 5
- Canvas: Excalidraw 0.18 (77k+ stars)
- Styling: TailwindCSS 4 + shadcn/ui
- State: Zustand + localStorage
- Database: Supabase (PostgreSQL + Auth + Storage)
- Search: Meilisearch (vector search for libraries)
- AI: MCP Server (OpenAI, Claude, Ollama)
- Package Manager: pnpm (enforced)
- Deployment: Vercel (frontend) + Railway (backend)
- Version Control: Git + GitHub
flow/
βββ src/
β βββ app/ # Next.js App Router
β β βββ page.tsx # Landing page with canvas
β β βββ layout.tsx # Root layout
β β βββ globals.css # Global styles
β βββ components/
β β βββ ExcalidrawWrapper.tsx # Main canvas component (with CSS)
β β βββ ExcalidrawCanvas.tsx # Legacy component
β βββ lib/
β βββ storage.ts # localStorage utilities (1s debounce)
βββ .github/
β βββ copilot-instructions.md # Full project specification
βββ public/ # Static assets
βββ SETUP.md # Detailed setup guide
βββ TROUBLESHOOTING.md # Common issues & fixes
βββ package.json
pnpm dev # Start dev server (localhost:3000)
pnpm build # Build for production
pnpm start # Start production server
pnpm lint # Run ESLint- Package Manager: Always use
pnpm(never npm or yarn) - Dev Server: Runs on
localhost:3000- check if already running - Dynamic Import: Excalidraw must use
dynamic(() => import(...), { ssr: false }) - CSS Import: Import
@excalidraw/excalidraw/index.cssin wrapper component - Types: Use proper TypeScript types from
@excalidraw/excalidraw/types
- Open http://localhost:3000
- Draw on the left, write notes on the right (drag the splitter to resize)
- Your work auto-saves every second (canvas + notes)
- Close browser - diagram and notes persist in localStorage
- Export: Click menu (β°) β Export as PNG/SVG/JSON
V- Selection toolR- RectangleD- DiamondO- EllipseA- ArrowL- LineT- TextCtrl/Cmd + Z- UndoCtrl/Cmd + Shift + Z- RedoCtrl/Cmd + D- Duplicate
- Next.js + Excalidraw integration
- localStorage auto-save (1s debounce)
- Dark theme
- Export functionality
- Proper TypeScript types
- SSR handling
- Supabase project setup
- Email + OAuth authentication (Google, GitHub)
- Multiple diagrams support
- Folders & organization
- Cloud sync
- Migration: localStorage β Supabase
- MCP Server (stdio transport)
- Index Excalidraw libraries (AWS, Docker, K8s)
- Meilisearch vector search
- AI prompt β diagram generation
- Template system
- Multi-LLM support (GPT-4, Claude, Ollama)
- Local-First: All diagrams stored in browser localStorage (5-10MB limit)
- No Tracking: No analytics or telemetry (Phase 1)
- No Server: Data never leaves your device (Phase 1)
- Optional Cloud: Phase 2 adds Supabase with full user control
- SETUP.md - Detailed setup and usage guide
- TROUBLESHOOTING.md - Common issues and solutions
- .github/copilot-instructions.md - Full project specification
- Excalidraw Docs - Canvas API reference
- Next.js Docs - Framework documentation
- Model Context Protocol - MCP specification
- Excalidraw Libraries - 100+ icon packs
- Excalidraw Next.js Example
- Eraser.io Clone - Feature inspiration
Currently in early development (Phase 1). Contribution guidelines coming in Phase 2!
- Excalidraw - The amazing drawing library
- Eraser.io - Feature inspiration
- Daily Dose DS - Design inspiration
- GitHub Copilot - AI pair programming assistant
MIT License - See LICENSE file for details
Built with β€οΈ using Next.js, React, and Excalidraw