Skip to content

Repository files navigation

Open UML

Open UML Logo

A completely offline, smooth, modern PlantUML editor with bundled rendering engine

Version License Platform

Download β€’ Documentation β€’ Report Bug β€’ Request Feature


🎯 Overview

Open UML is a professional desktop application designed for creating PlantUML diagrams with zero setup required. Everything runs completely offline β€” the PlantUML rendering engine and Java runtime are bundled, so you can start creating diagrams immediately without any installation hassles.

Perfect for students, developers, and technical writers who need a reliable, fast, and beautiful tool for creating UML diagrams, flowcharts, and other PlantUML-supported diagrams.

✨ Key Features

  • πŸš€ Fully Offline - No internet connection required, all dependencies bundled
  • ⚑ Lightning Fast - 300ms debounced rendering for instant preview updates
  • 🎨 Modern UI - Beautiful, minimal interface with smooth animations
  • πŸŒ“ Theme Support - Dark and light themes with seamless switching
  • πŸ“ Monaco Editor - Professional code editor with PlantUML syntax highlighting
  • πŸ” Zoom & Pan - Zoom from 25% to 300% with Google Maps-style panning
  • πŸ’Ύ Export Options - Save diagrams as PNG or SVG
  • ⌨️ Keyboard Shortcuts - Complete keyboard support for power users
  • πŸ“¦ Cross-Platform - Windows and macOS installers available
  • πŸ”’ Secure - Built with security best practices (context isolation, no node integration)

πŸ“Έ Screenshots

Dark Theme

Dark Theme Preview

Light Theme

Light Theme Preview


πŸš€ Quick Start

Windows

  1. Download OpenUML-Setup-1.0.0.exe from Releases
  2. Run the installer
  3. Launch Open UML from the desktop shortcut or Start menu
  4. Start creating your PlantUML diagrams!

macOS

  1. Download OpenUML-1.0.0.dmg from Releases
  2. Open the DMG file and drag Open UML to Applications
  3. Launch from Applications or Spotlight
  4. If you see a security warning, go to System Preferences β†’ Security & Privacy β†’ Allow

πŸ’‘ Features

Core Functionality

  • Live Rendering - See your diagrams update in real-time as you type (300ms debounce)
  • Full PlantUML Support - All diagram types supported:
    • Sequence Diagrams
    • Class Diagrams
    • Activity Diagrams
    • Use Case Diagrams
    • Component Diagrams
    • State Diagrams
    • And more!
  • Export Options - Save your diagrams as:
    • PNG (raster format, perfect for presentations)
    • SVG (vector format, perfect for documentation)
  • File Operations:
    • New file (Ctrl+N)
    • Open file (Ctrl+O)
    • Save file (Ctrl+S)
    • Save As (Ctrl+Shift+S)
  • Error Detection - Automatic error parsing with line numbers and helpful messages

User Experience

  • Smooth Performance - 60 FPS UI with no lag during editing
  • Fast Rendering - Typical diagrams render in <1 second
  • Intuitive Interface - Split-pane editor and preview with resizable divider
  • Zoom Controls - Zoom from 25% to 300% with smooth scaling
  • Pan Support - When zoomed in, drag to pan around the diagram (like Google Maps)
  • Persistent State - Auto-saves your work to localStorage
  • Theme Toggle - Switch between dark and light themes instantly
  • Responsive Layout - Works perfectly on all screen sizes

Keyboard Shortcuts

Shortcut Action
Ctrl+N / Cmd+N New file
Ctrl+O / Cmd+O Open file
Ctrl+S / Cmd+S Save file
Ctrl+Shift+S / Cmd+Shift+S Save As
Ctrl+Shift+R / Cmd+Shift+R Render diagram
Ctrl+Shift+G / Cmd+Shift+G Export as SVG
Ctrl+Shift+P / Cmd+Shift+P Export as PNG

Menu Bar

  • File Menu:
    • New, Open, Save, Save As
    • Render, Export as SVG, Export as PNG
  • Help Menu:
    • FAQ (links to GitHub repository)
    • Contact (opens email client)

πŸ› οΈ Development

Prerequisites

  • Node.js 20+ and npm
  • Git

Getting Started

  1. Clone the repository

    git clone https://github.com/choksi2212/open-uml.git
    cd open-uml
  2. Install dependencies

    npm install
  3. Set up PlantUML and JRE

    You need to download and place the following in app/plantuml/:

    • plantuml.jar β€” Download from PlantUML releases
    • jre/ β€” Extract OpenJDK 17+ JRE for your platform

    Structure:

    app/plantuml/
    β”œβ”€β”€ plantuml.jar
    └── jre/
        └── bin/
            └── java (or java.exe on Windows)
    
  4. Run in development mode

    npm run electron:dev

Development Commands

Command Description
npm run dev Start Vite dev server only
npm run electron:dev Start Electron + React dev mode
npm run build Build production files
npm run dist Generate installers (.exe/.dmg)
npm run lint Lint TypeScript/React code

πŸ—οΈ Project Structure

open-uml/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ main/              # Electron main process
β”‚   β”‚   └── index.ts       # Window creation, IPC handlers
β”‚   β”œβ”€β”€ renderer/          # React UI components
β”‚   β”‚   β”œβ”€β”€ App.tsx        # Main app component
β”‚   β”‚   β”œβ”€β”€ components/    # UI components
β”‚   β”‚   β”‚   β”œβ”€β”€ Editor.tsx      # Monaco editor wrapper
β”‚   β”‚   β”‚   β”œβ”€β”€ Preview.tsx    # Diagram preview with zoom/pan
β”‚   β”‚   β”‚   β”œβ”€β”€ TopBar.tsx     # Top navigation bar
β”‚   β”‚   β”‚   └── ErrorPanel.tsx # Error display
β”‚   β”‚   └── index.css      # Global styles
β”‚   β”œβ”€β”€ assets/            # Icons, logos
β”‚   β”œβ”€β”€ plantuml/          # plantuml.jar + JRE
β”‚   └── preload.ts         # IPC bridge
β”œβ”€β”€ .github/
β”‚   └── workflows/         # CI/CD workflows
β”‚       └── release.yml     # Automated releases
β”œβ”€β”€ build/                 # Build output (installers)
β”œβ”€β”€ dist/                  # Production build
β”œβ”€β”€ dist-electron/        # Electron build output
β”œβ”€β”€ package.json
β”œβ”€β”€ electron-builder.yml
└── README.md

πŸ§ͺ Quality Targets

  • βœ… Rendering speed: <1s for typical diagrams
  • βœ… UI FPS: β‰₯60
  • βœ… No stutters or visual lag
  • βœ… Fully offline operation
  • βœ… Memory-safe subprocess handling
  • βœ… Full PlantUML compatibility
  • βœ… Installer size: ~200 MB (includes Electron, Chromium, PlantUML, and JRE)

🀝 Contributing

Contributions are welcome! Please follow these steps:

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

Commit Guidelines

Follow Conventional Commits:

  • feat: β€” New feature
  • fix: β€” Bug fix
  • docs: β€” Documentation
  • style: β€” Code style
  • refactor: β€” Code refactoring
  • test: β€” Tests
  • chore: β€” Maintenance

πŸ“„ License

This project is licensed under the MIT License β€” see the LICENSE file for details.


πŸ”— Links


πŸ™ Acknowledgments


Created for Students by Manas Choksi with ❀️

GitHub LinkedIn Instagram

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages