A beautiful, browser-based interactive strategy mapping tool inspired by Excalidraw. Create hand-drawn style diagrams with nodes, arrows, and text labels to visualize your strategies, plans, and ideas.
π Live App: https://strategy-map.app
- π¨ Hand-Drawn Aesthetic - Excalidraw-inspired visual style with smooth, sketchy rendering
- π±οΈ Interactive Canvas - Drag, drop, and arrange elements with smooth animations
- π¦ Auto-Save - Your work is automatically saved to browser storage
- πΎ High-Quality Export - Export diagrams as high-resolution JPEG images (2x DPI)
- β¨οΈ Keyboard Shortcuts - Complete keyboard navigation support
- π± Responsive Design - Works seamlessly on desktop and mobile devices
- Select Tool (V) - Select, move, and edit elements
- Node Tool (N) - Create circular nodes with editable text
- Arrow Tool (A) - Connect nodes with directional arrows
- Text Tool (T) - Add standalone text labels with customizable borders
- Pan Tool (H) - Navigate around large diagrams
- Laser Tool (L) - Point and annotate during presentations
- π― Multi-Select - Box selection with drag or Shift+Click for multiple elements
- π¨ Rich Styling Options:
- 14 color options for strokes and backgrounds
- 4 stroke widths (Thin, Medium, Thick, Extra Thick)
- 4 fill styles (Solid, Hachure, Cross-Hatch, None)
- 3 font families (Hand Drawn, Normal, Code)
- Text borders with 3 styles (Solid, Dashed, Dotted)
- β‘ Smart Duplication - Duplicate with Cmd/D, preserving connections
- π Clipboard Operations - Copy, cut, and paste elements
- π Zoom Controls - Zoom in/out with precise controls
- π Multiple Whiteboards - Create and manage multiple canvas boards
- πΎ Right-Click Save - Save canvas images to any folder
- β¨ ESC to Safety - Progressive escape behavior for intuitive navigation
# Clone the repository
git clone https://github.com/Victor-EU/strategy-map.git
cd strategy-map
# Install dependencies
npm install
# Start development server
npm run dev# Development server (with hot reload)
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
# Type checking
tsc --noEmit- β Chrome/Edge (recommended)
- β Firefox
- β Safari
- β Mobile browsers (iOS Safari, Chrome Mobile)
- Create Nodes - Press
N, click on canvas, type text - Connect with Arrows - Press
A, click source node, drag to target node - Add Text - Press
T, click position, type text - Customize Styles - Select elements, use Properties Panel
- Export - Click Export button to save as JPEG
See USAGE_GUIDE.md for detailed instructions.
Tools
V- Select toolN- Node toolA- Arrow toolT- Text toolH- Pan toolL- Laser tool
Editing
Cmd/Ctrl + D- Duplicate selected elementsCmd/Ctrl + C- CopyCmd/Ctrl + X- CutCmd/Ctrl + V- PasteCmd/Ctrl + A- Select allDelete/Backspace- Delete selectedEscape- Cancel / Clear selection / Switch to Select tool
Selection
Shift + Click- Add to selectionDrag on empty space- Box select multiple elements
Strategy Map follows strict Object-Oriented Programming principles for clean, maintainable code.
Point β 2D coordinate system with vector operations
Node β Circular diagram nodes with text and styling
Arrow β Directional connections between nodes
TextLabel β Standalone text elements with borders
Whiteboard β Canvas boards with resize capabilities
Diagram β Manages all elements and relationships
InteractionManager β Handles all user input (mouse, keyboard, touch)
KeyboardShortcutManager β Platform-aware keyboard shortcuts
CanvasRenderer β High-performance 2D rendering with hand-drawn style
- Multi-whiteboard support
- Export functionality (JPEG, PNG)
- Zoom and pan transformations
App β Main application container
Canvas β Drawing surface with event handling
Toolbar β Tool selection and actions
PropertiesPanel β Style customization panel
ZoomControls β Zoom in/out/reset controls
ConfirmDialog β Confirmation dialogs
- Global Styles (
styles/global.css) - CSS variables, theme system, resets - Component Styles (
.cssfiles) - Scoped component styles - Design System - Consistent spacing, colors, and typography
- Dark Mode - Automatic support via
prefers-color-scheme
See claude.md for comprehensive architecture documentation.
- React 19 - Latest UI framework with automatic optimizations
- TypeScript 5.9 - Strict type safety and modern ES features
- Vite 7 - Lightning-fast build tool and dev server
- HTML5 Canvas - Hardware-accelerated 2D rendering
- CSS Variables - Dynamic theming and customization
- React Router - Client-side routing for shared diagrams
strategy-map/
βββ src/
β βββ components/ # React components
β β βββ Canvas.tsx
β β βββ Toolbar.tsx
β β βββ PropertiesPanel.tsx
β β βββ ...
β βββ models/ # Core data models (OOP)
β β βββ Point.ts
β β βββ Node.ts
β β βββ Arrow.ts
β β βββ Diagram.ts
β β βββ ...
β βββ managers/ # Business logic managers
β β βββ InteractionManager.ts
β β βββ KeyboardShortcutManager.ts
β βββ renderers/ # Canvas rendering
β β βββ CanvasRenderer.ts
β βββ utils/ # Utilities
β β βββ storage.ts
β β βββ analytics.ts
β βββ styles/ # Global styles
β β βββ global.css
β βββ App.tsx # Main app component
βββ public/ # Static assets
βββ dist/ # Production build output
βββ README.md # This file
βββ USAGE_GUIDE.md # Detailed usage instructions
βββ claude.md # Architecture documentation
βββ package.json
- β Zero Dependencies Vulnerabilities - All packages audited and secure
- β No XSS Vulnerabilities - All user input safely handled
- β No Exposed Secrets - No API keys or credentials in code
- β Privacy-Friendly Analytics - Anonymous, GDPR-compliant tracking
- β Local Storage - All data stored in browser, no server uploads
- β TypeScript Strict Mode - Maximum type safety
See production audit results in codebase for full security report.
- Bundle Size: 98 KB gzipped (total)
- JavaScript: 92.75 KB gzipped
- CSS: 4.87 KB gzipped
- Build Time: < 1 second
- First Load: < 500ms on modern hardware
- Runtime: 60 FPS smooth animations
β All TypeScript errors resolved β Production build tested and verified β Security audit passed (0 vulnerabilities) β Performance optimized β Accessibility features implemented β Error handling comprehensive β Documentation complete
Contributions are welcome! Please follow these guidelines:
- Follow the existing OOP architecture
- Maintain TypeScript strict mode compliance
- Write clean, documented code
- Test thoroughly before submitting
- Update documentation as needed
See CONTRIBUTING.md for detailed guidelines.
ISC License - See LICENSE file for details.
Victor Zhang
- LinkedIn: Victor Yuchi Zhang
- Email: victor.zhang.eu@gmail.com
- GitHub: @Victor-EU
- Inspired by Excalidraw for the hand-drawn aesthetic
- Built with modern web technologies and OOP best practices
- Designed for developers, strategists, and creative thinkers
- Usage Guide - Detailed usage instructions
- Architecture - OOP architecture and design patterns
- Analytics - Privacy-friendly analytics implementation
- Authors - Creator and contributors
- Changelog - Version history and release notes
Found a bug or have a feature request?
- Check existing issues on GitHub
- Create a new issue with detailed description
- Include browser version and steps to reproduce
Ready to deploy? See DEPLOYMENT.md for:
- Vercel deployment instructions
- Environment configuration
- Custom domain setup
- Production checklist
Made with β€οΈ by Victor Zhang using TypeScript, React, and Canvas API
Version 1.0.0 - Production Ready