ArchFlow is a fork of FossFLOW by Stan Smith, which is itself a fork/rewrite of Isoflow by @markmanx — this project stands on both of their shoulders. If either project has helped you, please check them out and consider supporting their work.
ArchFlow is a powerful, open-source web app for creating beautiful isometric diagrams. Built with React and the Isoflow (forked and published to NPM as fossflow) library, it runs entirely in your browser. A native desktop version (Electron) is also available in packages/fossflow-desktop.
- 📝 ARCHFLOW_TODO.md - Current issues and roadmap with codebase mappings, most gripes are with the isoflow library itself.
- 🤝 CONTRIBUTING.md - How to contribute to the project.
- Reduced frame refresh delay, should look much smoother now
- 2 Languages Supported - Full interface translation in English and Polish
- Language Selector - Easy-to-use language switcher in the app header
- Complete Translation - All menus, dialogs, settings, tooltips, and help content translated
- Locale-Aware - Automatically detects and remembers your language preference
- Click-based Creation - New default mode: click first node, then second node to connect
- Drag Mode Option - Original drag-and-drop still available via settings
- Mode Selection - Switch between click and drag modes in Settings → Connectors tab
- Better Reliability - Click mode provides more predictable connection creation
# Using Docker Compose (recommended - includes persistent storage)
docker compose up
# Or build and run the image locally
docker build -t archflow:local .
docker run -p 80:80 -v $(pwd)/diagrams:/data/diagrams archflow:localServer storage is enabled by default in Docker. Your diagrams are saved as JSON files to ./diagrams on the host (mounted to /data/diagrams inside the container). When this is active, the app detects it automatically and switches to the persistent "App Storage" diagram list — the session-only Save/Load/Quick-save buttons disappear, since there's no need for them anymore.
To disable server storage and fall back to browser-only (session) storage, set ENABLE_SERVER_STORAGE=false:
docker run -p 80:80 -e ENABLE_SERVER_STORAGE=false archflow:localA native desktop version is also available for Windows, macOS, and Linux — it wraps the same web app in a native window, with native "Save As"/"Open" dialogs instead of browser downloads.
# Run in dev mode (opens a native window)
npm run dev:desktop
# Build installers (Windows .exe, macOS .dmg, Linux AppImage/.deb)
npm run build:desktopInstallers are written to packages/fossflow-desktop/dist/. Both commands build the library and web app internally first, so there's no separate build step needed.
Diagrams are saved as real files on disk, automatically — no location prompt, no browser storage involved. The desktop app creates an ArchFlow folder inside your OS's Documents directory (~/Documents/ArchFlow, or the localized equivalent, e.g. ~/Dokumenty/ArchFlow on a Polish system) the first time it runs, and every diagram you save through the "📁 App Storage" list becomes a .json file there. As with Docker, the session-only Save/Load/Quick-save buttons are hidden in the desktop app, since real persistent storage is always available.
# Clone the repository
git clone https://github.com/cyryllo/ArchFlow
cd ArchFlow
# Install dependencies
npm install
# Build the library (required first time)
npm run build:lib
# Start development server
npm run devOpen http://localhost:3000 in your browser.
This is a monorepo containing several packages:
packages/fossflow-lib- React component library for drawing network diagrams (built with Webpack)packages/fossflow-app- Progressive Web App which wraps the lib and presents it (built with RSBuild)packages/fossflow-backend- Optional backend server for persistent diagram storagepackages/fossflow-desktop- Native desktop app (Electron)
# Development
npm run dev # Start app development server
npm run dev:lib # Watch mode for library development
# Building
npm run build # Build both library and app
npm run build:lib # Build library only
npm run build:app # Build app only
# Desktop app (Electron)
npm run dev:desktop # Run desktop app in dev mode
npm run build:desktop # Build desktop installers
# Testing & Linting
npm test # Run unit tests
npm run lint # Check for linting errors
# E2E Tests (Selenium)
cd e2e-tests
./run-tests.sh # Run end-to-end tests (requires Docker & Python)
# Publishing
npm run publish:lib # Publish library to npm-
Add Items:
- Press the "+" button on the top right menu, the library of components will appear on the left
- Drag and drop components from the library onto the canvas
- Or right-click on the grid and select "Add node"
-
Connect Items:
- Select the Connector tool (press 'C' or click connector icon)
- Click mode (default): Click first node, then click second node
- Drag mode (optional): Click and drag from first to second node
- Switch modes in Settings → Connectors tab
-
Save Your Work:
- 🌐/📁 App Storage (Docker with server storage enabled, or the desktop app) - persistent, named diagrams you can list, load, and delete; saved as real files (
./diagramson the Docker host,~/Documents/ArchFlowon desktop) - Save / Load / Quick Save (Session) - only shown when no persistent storage is available (plain web hosting, or Docker with server storage disabled); saves to the browser's storage only
- Export - Download the current diagram as a JSON file, always available regardless of platform
- Import - Load a diagram from a JSON file, always available
- 🌐/📁 App Storage (Docker with server storage enabled, or the desktop app) - persistent, named diagrams you can list, load, and delete; saved as real files (
Which options you see depends on where ArchFlow is running:
| Where | What you get |
|---|---|
| Desktop app | 📁 App Storage (files in ~/Documents/ArchFlow) + Export/Import. No session buttons. |
| Docker, server storage enabled (default) | 🌐 App Storage (files in ./diagrams on the host) + Export/Import. No session buttons. |
| Plain web hosting / Docker with server storage disabled | Session Save/Load/Quick Save (browser storage only, cleared if you clear browser data) + Export/Import |
- Auto-Save: The last-opened diagram is automatically restored on reload/relaunch (browser
localStorage/ desktop app profile), independent of which storage option above you're using.
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
- ARCHFLOW_ENCYCLOPEDIA.md - Comprehensive guide to the codebase
- ARCHFLOW_TODO.md - Current issues and roadmap
- CONTRIBUTING.md - Contributing guidelines
MIT
