- Rust 89.5%
- CSS 6.3%
- Fluent 2.5%
- JavaScript 1.3%
- Shell 0.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .forgejo | ||
| assets | ||
| docs | ||
| examples | ||
| locales | ||
| perf | ||
| src | ||
| tests/fixtures | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Dioxus.toml | ||
| LICENSE | ||
| README.fr.md | ||
| README.md | ||
| tailwind.css | ||
| TODO.md | ||
English · Français
IsoDraw
An isometric drawing editor, in the browser or on the desktop.
3D blocks snapped to a grid, textures and text on their faces, lines and annotations, all organized in layers.
Open the app · Download · Examples
Features
Place a block, then stretch it along each axis with its handles.
- 3D blocks: place, stretch and stack them on an isometric grid, then move them with per-axis handles.
- Face decorations: each visible face takes an SVG texture (stretched or tiled) and a text, placed on a 3×3 grid.
- Free text: facing the screen, or lying on the floor or a wall, over several lines.
- 3D lines: polylines between 3D points, with arrowheads, dashes or dots. Hold Shift to follow the isometric axes.
- Layers: nested, foldable folders, drag and drop, hiding and locking.
- History: everything can be undone, including a drag or a paste.
- PNG / SVG export: the whole drawing, the current view or the selection, from 1× to 4×, with a choice of background and grid.
.isodrawfiles: a readable zip archive that embeds the textures it uses.
Getting started
| Web | isodraw.aphelia.fr, nothing to install |
| Linux | the AppImage from the latest release: works offline and saves straight to disk |
To see what the app can do right away, open one of the examples with Ctrl+O: the architecture diagram, the chart and the island from the banner, the office from the screenshot, or the neighborhood.
Shortcuts
| Tools | Editing | ||
|---|---|---|---|
| B / Space | Place a block | Ctrl+Z | Undo |
| T | Text | Ctrl+Y / Ctrl+Shift+Z | Redo |
| R | Line | Ctrl+C / X / V | Copy, cut, paste |
| ↑ ↓ | Raise or lower the line's plane | Del | Delete |
| Shift | Draw the line along the iso axes | Esc | Cancel the current action |
| P | Color and opacity | Ctrl+N | New document |
| L | Layers panel | Ctrl+O / Ctrl+S | Open, save |
| G | Grid | Ctrl+Shift+E | Export the image |
The mouse wheel zooms, the middle button pans the view, and right-clicking a shape opens its menu.
Languages
The interface is available in English and French. It follows the system (or browser) language, and you can change it in the View menu; the choice is remembered.
To add a language, copy locales/en.ftl to locales/<code>.ftl and translate it, add the variant to Lang in src/i18n/mod.rs, then run cargo test: it reports missing messages and variables.
Development
You need Rust, the wasm32-unknown-unknown target and the Dioxus CLI (dx), at the same version as dioxus in Cargo.lock.
rustup target add wasm32-unknown-unknown
dx serve --addr 0.0.0.0 # web, with hot reload
dx serve --desktop # desktop app
cargo test # tests
On Linux, the desktop app needs WebKitGTK (libwebkit2gtk-4.1-dev, libgtk-3-dev, libxdo-dev…).
Code layout
src/
├── main.rs root component, web / desktop launch
├── state.rs global state (shapes, layers, selection, history…)
├── commands/ undoable history commands
├── components/ interface: canvas, toolbar, layers, dialogs
├── shapes/ document operations (layers, clipboard, export…)
├── file_format/ reading and writing .isodraw (v1, v2)
├── shortcuts.rs keyboard shortcuts
└── desktop_menu.rs native menu bar
docs/ designs, plans, performance measurements (in French)
File format
An .isodraw file is a zip archive:
mimetype application/x-isodraw (first entry, uncompressed)
document.ron shapes, layers and asset index, in RON
assets/<sha256>.svg textures, named after the hash of their content
The order of the shape list is the drawing order: the first shape is in front. v1 files (plain RON) still open.
Releasing
A v* tag runs .forgejo/workflows/release.yml, which builds the web version (isodraw-web.tar.gz, deployed automatically) and the AppImage, then attaches them to the release.
git tag v2026-10-01 && git push --tags
Further reading
TODO.md: user feedback and upcoming features.docs/perf.md: performance measurements; dragging among 3,000 shapes went from 350 to 6 ms.docs/: the design and plan of each feature.
The project documentation is written in French.
AI usage
IsoDraw is a hobby and experimentation project, developed largely with
AI coding assistants (Claude, by Anthropic). Commits where an assistant
contributed are marked with a Co-Authored-By trailer. The maintainer
tests the app regularly, but not every change is reviewed or tested
thoroughly, so expect some rough edges and bugs, and keep backups of
your drawings.
Contributions are welcome, with or without AI assistance. If you used an AI tool, please mention it in your pull request. Everything is released under the project's license (AGPL-3.0-or-later).
License
IsoDraw is licensed under the GNU AGPL v3 or later.