Isometric drawing editor in Rust: 3D blocks on a grid, SVG textures, text, lines and layers. Web (WASM) and Linux. https://isodraw.aphelia.fr/
  • Rust 89.5%
  • CSS 6.3%
  • Fluent 2.5%
  • JavaScript 1.3%
  • Shell 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Ostrale bd10fbee53 docs: section sur l'usage de l'IA dans les README
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 23:05:36 +02:00
.forgejo fix(ci): AppImage qui démarre hors Debian 2026-09-29 22:08:43 +02:00
assets feat(release): publier l'app Linux en AppImage 2026-09-28 22:08:31 +02:00
docs fix(ci): AppImage qui démarre hors Debian 2026-09-29 22:08:43 +02:00
examples docs(examples): office floor plan at 10 cm per cell 2026-09-29 15:41:42 +02:00
locales docs: use American English in the README and the corrupted resource message 2026-09-29 18:21:00 +02:00
perf docs(perf): final results against a re-measured baseline 2026-09-29 13:23:36 +02:00
src refactor(desktop): tidy menu imports and document the relabel effect 2026-09-29 18:20:42 +02:00
tests/fixtures feat(file format): save documents as a v2 zip container 2026-09-25 11:27:27 +02:00
.gitignore docs(spec): layers panel folding, drag and drop, locking 2026-09-28 12:18:31 +02:00
Cargo.lock feat(i18n): Fluent core with language resolution and shortcut labels 2026-09-29 17:52:39 +02:00
Cargo.toml chore: declare AGPL-3.0-or-later license 2026-09-29 22:51:03 +02:00
Dioxus.toml feat(release): publier l'app Linux en AppImage 2026-09-28 22:08:31 +02:00
LICENSE chore: add AGPL-3.0 license 2026-09-29 22:49:06 +02:00
README.fr.md docs: section sur l'usage de l'IA dans les README 2026-09-29 23:05:36 +02:00
README.md docs: section sur l'usage de l'IA dans les README 2026-09-29 23:05:36 +02:00
tailwind.css feat(decorations): texture and text on the visible faces of a block 2026-09-25 12:43:34 +02:00
TODO.md docs: document interface languages 2026-09-29 18:12:25 +02:00

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

Rust Dioxus Web Linux


Three drawings made with IsoDraw: an isometric bar chart, a layered software architecture diagram, and a floating island with a house and a waterfall

Features

Placing a block in IsoDraw, then stretching and raising it with its handles to add a bar to a chart
Place a block, then stretch it along each axis with its handles.
The IsoDraw interface: an office floor plan on the canvas with a chair selected, and the layers panel with nested folders
  • 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.
  • .isodraw files: 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.