Skip to content

bdgscotland/openchart

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

65 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

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

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •