Skip to content

Latest commit

Β 

History

65 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

OpenChart

⚠️ Early Development - Not Ready for Production Use

An experimental open-source diagramming tool built with React Flow. This is a prototype in active development - expect bugs, incomplete features, and breaking changes.

🎯 Project Goals

OpenChart aims to become a modern, open-source alternative to commercial diagramming tools. Our vision includes:

  • Professional Quality: Eventually rival commercial diagramming tools
  • Open Source: Transparent, community-driven development
  • Modern Tech Stack: Built with React, TypeScript, and React Flow
  • File Format Freedom: No vendor lock-in with open JSON format

🚧 Current Development Status

This is an early prototype. Many core features are incomplete or buggy:

⚠️ Known Issues

  • Shape resizing: Shape resize handles may not work reliably in all scenarios
  • Export quality: Export functions are basic and may fail
  • Undo/redo scope: Currently limited to shape creation (editing, deletion not yet supported)
  • Performance: May slow down with very complex diagrams (100+ shapes)

βœ… What Currently Works Well

  • Shape Placement: All 61 shapes render correctly from categorized sidebar
  • Shape Interactions: Drag, drop, select, multi-select operations work reliably
  • Connection Tools: Edge creation with multiple styles (straight, curved, step)
  • Property Panel: Diagram and Style tabs with real-time updates
  • Grid Customization: Choose between dots, lines, or crosshatch with custom colors
  • Background Colors: Persistent canvas background color settings
  • Undo/Redo: Command pattern implementation for shape operations
  • Layer Management: Z-ordering controls and layer panel
  • Color Picker: Multi-tab color picker with palette, transparency, and theme options
  • Zoom & Pan: Smooth canvas navigation with minimap and controls
  • Edge Positioning: Accurate connection points on all shape types
  • UI Polish: Consistent icons, proper hover states, and visual feedback
  • File Persistence: Save/load diagrams with all settings preserved
  • Event Storm Mode: Full DDD Event Storming workshop support with specialized stickies
  • Mode-Aware Examples: Context-specific example diagrams for each mode

πŸ”¬ Stable Features

  • Shape Library: 61 shapes across 6 categories
  • Action Toolbar: Context-aware tools for selection, duplication, and layering
  • Collapsible Sidebars: Space-efficient interface with smooth animations
  • Multiple Export Formats: PNG, SVG export capabilities

πŸš€ Quick Start

# Clone the repository
git clone [repository-url]
cd openchart

# Start development server (recommended)
./start.sh

Or manually:

npm install
npm run dev

Open http://localhost:5173

πŸ”¨ Recent Development Work

Latest Iteration (v0.4.0-alpha)

Focus: Event Storm mode and workshop facilitation tools

  • βœ… Event Storm Mode - Full DDD Event Storming workshop support
    • 10 specialized sticky types (events, actors, commands, policies, aggregates, etc.)
    • Phase-based workflow (Big Picture β†’ Process Modeling β†’ Software Design)
    • Timeline-based horizontal layout with swim lane snapping
    • Visual legend and phase indicators
    • Keyboard shortcuts for rapid sticky creation (E, A, C, Q, etc.)
    • Quick connection mode (press L to connect stickies)
  • βœ… Workshop Features - Collaborative facilitation tools
    • Timeline guide showing event flow direction
    • Color-coded stickies matching Event Storming conventions
    • Phase selector for workshop progression
    • Bounded Context containers for software design phase
  • βœ… Markdown Export - Event Storm diagrams export to structured markdown
  • βœ… Mode-Aware Examples - Context-specific examples
    • Event Storm: E-Commerce Order Flow, User Registration examples
    • Diagram Mode: Flowchart, Org Chart, Network examples
    • Examples factory pattern for easy maintenance

Previous Iteration (v0.3.0-alpha)

Focus: Diagram settings persistence and grid customization

  • βœ… Diagram Settings Persistence - Grid, background, and canvas settings now save/load with diagrams
  • βœ… Dynamic Grid Styling - Grid style (dots/lines/crosshatch) and color fully customizable
  • βœ… Background Color Control - Canvas background color persists across sessions
  • βœ… Undo/Redo System - Comprehensive command pattern for shape creation and editing
  • βœ… Layer System - Z-ordering with layer management for complex diagrams
  • βœ… Context Menus - Right-click menus for shapes and canvas operations
  • βœ… Property Panel Enhancements - Diagram tab with grid/background controls working

Previous Iteration (v0.2.2-alpha)

UI polish and core functionality stabilization

  • βœ… Fixed edge positioning - Resolved React Flow zoom scaling issues affecting all shapes
  • βœ… Enhanced connection tools - Working dropdown for edge styles (straight, curved, step)
  • βœ… Improved color picker - Multi-tab interface with multiple color palettes
  • βœ… UI consistency fixes - Proper icon states, hover effects, and visual feedback
  • βœ… PropertyPanel improvements - Fixed collapsed state positioning and expand/contract icons
  • βœ… Minimap contrast - Enhanced viewport visibility with blue highlighting

Recent Quality Improvements

  • Diagram settings now persist in JSON file format
  • Grid customization with multiple styles and colors
  • Improved visual feedback and user experience
  • Enhanced stability of core diagramming operations
  • Better React Flow integration and zoom handling

⚠️ Reality Check

This is an improving prototype with increasingly stable core functionality, but still has limitations.

What You Can Expect

  • Generally stable basic diagramming operations
  • Some advanced features may not work as expected
  • Occasional bugs in edge cases
  • Automatic diagram saving (but limited recovery options)
  • Good performance with moderate diagrams (50-100 shapes)
  • Breaking changes possible between versions

Development Status

This project is now suitable for:

  • Learning React Flow - Good example of complex React Flow implementation
  • Contributing to open source - Well-structured codebase with clear patterns
  • Experimenting with diagramming - Most core features work reliably
  • Prototype diagrams - Basic diagramming needs can be met
  • Educational use - Understanding modern web-based diagram editors

Still not ready for:

  • Mission-critical business diagrams
  • Production workflows requiring 100% reliability
  • Users needing advanced diagramming features

πŸ› οΈ Tech Stack

  • React + TypeScript: Type-safe component architecture
  • React Flow: Advanced node-based diagram engine
  • Vite: Lightning-fast development and build tooling
  • Lucide React: Professional icon library (1000+ icons)
  • html-to-image: High-quality export functionality

πŸ“ Enhanced Project Structure

src/
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ Canvas/              # Enhanced React Flow canvas
β”‚   β”‚   β”œβ”€β”€ FlowCanvas.tsx   # Main canvas with grid & performance optimizations
β”‚   β”‚   └── shapes/          # Complete shape component library (60+ shapes)
β”‚   β”œβ”€β”€ Toolbar/             # Professional shape library
β”‚   β”‚   β”œβ”€β”€ ShapeLibrary.tsx # Categorized shape library with search
β”‚   β”‚   └── shapeDefinitions.ts # Complete shape metadata
β”‚   β”œβ”€β”€ PropertyPanel/       # Advanced property controls
β”‚   β”‚   β”œβ”€β”€ PropertyPanel.tsx    # Tabbed interface (Diagram/Style)
β”‚   β”‚   β”œβ”€β”€ TabContainer.tsx     # Modern tab system
β”‚   β”‚   β”œβ”€β”€ DiagramControls.tsx  # Canvas-level settings
β”‚   β”‚   └── StyleControls.tsx    # Element-level styling
β”‚   └── MenuBar/             # File operations and settings
β”œβ”€β”€ types/
β”‚   └── shapes.ts            # Comprehensive type definitions
β”œβ”€β”€ hooks/                   # Canvas state management
└── utils/                   # Helper functions and utilities

πŸ§ͺ Development

Prerequisites

  • Node.js 18+
  • npm or yarn

Enhanced Startup Script

The ./start.sh script provides a complete development environment:

  • βœ… Node.js version verification (18+ required)
  • πŸ“¦ Automatic dependency installation/updates
  • πŸ” TypeScript type checking
  • 🧹 ESLint code quality checks with auto-fix
  • πŸ—‘οΈ Build artifact cleanup
  • πŸš€ Vite development server with HMR
  • ⚠️ Graceful handling of warnings (continues with info)

Available Commands

npm run dev              # Development server with HMR
npm run build            # Production build
npm run preview          # Preview production build
npm run lint             # Run ESLint with auto-fix
npm run type-check       # TypeScript type checking
npm run test             # Run test suite
npm run test:e2e         # End-to-end tests with Playwright

🎯 Future Vision (Aspirational)

If development continues successfully, OpenChart could eventually become:

  • A reliable open-source diagramming tool
  • Feature-competitive with commercial alternatives
  • Built on modern web technologies
  • Extensible and customizable
  • Fast and responsive

But we're not there yet. This is early-stage development with a long road ahead.

πŸ› Current Performance Issues

  • Slow Shape Rendering: Many shapes render poorly or incorrectly
  • Memory Leaks: Performance degrades with complex diagrams
  • Buggy Interactions: Click handlers may not work reliably
  • Inconsistent Animations: UI transitions are hit-or-miss
  • Search Problems: Shape filtering may be unreliable

πŸ› οΈ Development Focus Areas

Critical Issues to Fix

  • Shape Rendering: Make all shapes display correctly
  • Resize Handles: Implement reliable shape resizing
  • Connection Tools: Fix edge creation and editing
  • Data Persistence: Add reliable save/load functionality
  • Performance: Optimize rendering for larger diagrams

Nice-to-Have Features (Later)

  • Fuzzy search for shapes
  • Advanced property controls
  • Professional color pickers
  • Grid customization
  • Multi-select operations
  • Keyboard navigation
  • Accessibility support

🀝 Contributing

This project needs help! If you're interested in contributing:

High Priority Fixes Needed

  1. Fix shape rendering - Many shapes don't display correctly
  2. Implement reliable resizing - Shape resize handles are broken
  3. Improve connection tools - Edge creation/editing needs work
  4. Add data persistence - Currently no way to save diagrams
  5. Performance optimization - App gets slow with many shapes

For Contributors

  • Expect to encounter many bugs
  • Focus on one small issue at a time
  • Test thoroughly - many features are fragile
  • Document any workarounds you discover

Note: This is prototype-quality code. Don't expect commercial-grade architecture.

πŸ“„ License

MIT - See LICENSE file for details

πŸ™ Acknowledgments

  • Built with React Flow - the powerful React library for building node-based UIs
  • Icons by Lucide - beautiful & consistent icon toolkit
  • Inspired by diagrams.net and Lucidchart for their excellent UX

OpenChart v0.3.0-alpha: Early development prototype with improved persistence and customization. Not ready for production use. Expect bugs, incomplete features, and breaking changes.

About

Diagrams for all

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages