Page layout and publishing; an open-source, clean-room reimplementation of Adobe InDesign, rebuilt in pure Rust.
A fast, open-source, clean-room take on the Adobe InDesign workflow. It runs natively on macOS,
Windows and Linux, and in the browser via WebAssembly.
By the ArtCraft team.
DesignCraft on getartcraft.com · ArtCraft · All Crafting Apps
Quarterly, Spring Issue: threaded three-column body text, a wrapped pull quote and parent-page folios, all set by DesignCraft's own paragraph composer.
[!NOTE] ArtCraft is a community of artists from all walks of life. Digital, generative, music, games — if you make things, you're one of us. Come say hi on Discord.
The sample magazine · Why DesignCraft · Quick start · Web · Architecture · The Crafting Apps · License
Every page below was laid out by DesignCraft from code (crates/engine/src/sample.rs) and exported
by its own renderer. Try it yourself with File → New → Sample Document, or start the app with
--sample.
![]() Cover. A full-bleed graphic frame, display type and an italic deck. | ![]() Styles. Kicker rule, headline, deck, caption and justified two-column body. |
![]() Threading, columns and text wrap. One story flows through three columns and around the pull quote. | ![]() Swatches. Named colors and a CMYK process swatch, laid out as a palette. |
docs/control-protocol.md and
docs/mcp.md.cargo run --release -p designcraft # desktop app (start screen)
cargo run --release -p designcraft -- --sample # open the sample magazine
cargo run --release -p designcraft -- --sample --control 7979 # + JSON control channel
cargo run --release -p designcraft-cli -- run --sample --all-pages out/ # headless: render every page to PNG
cargo run --release -p designcraft-cli -- commands # list every command
cargo xtask ci # fmt, clippy, tests, assets, layering, wasm
To drive a running app, send JSON lines to 127.0.0.1:7979. The protocol is described in
docs/control-protocol.md.
cd apps/designcraft-web && trunk build --release # → dist/web (serve it with any static server)
cd apps/designcraft-web && trunk serve --release # http://127.0.0.1:8767
You need trunk and the wasm32-unknown-unknown target. The same app runs
through eframe's web runner on WebGPU, falling back to WebGL2 (?webgl forces it; ?sample opens
the sample magazine). Open and Place use the browser's file picker, and dropping files works too.
Save and Export download the file. The web build has no control channel.
DesignCraft is an engine-first Cargo workspace with enforced layering (cargo xtask layers). The
egui frontend is a separate crate, so the UI can be swapped without touching the engine.
| Layer | Crates |
|---|---|
| L0 | geom (paths, units & measurement parsing, corner options) · color (CMYK/RGB/Lab, swatches, tints, gradients) |
| L1 | doc (spreads, pages, parents, layers, frames, stories, styles) · fonts (font DB, shaping, outlines) |
| L2 | compose (the text engine) |
| L3 | render (vello_cpu) |
| L4 | tools (pointer events → commands + overlays) |
| L5 | engine (session, history, command registry) |
| L6 | ui-egui (InDesign-style UI, control channel) |
| L7 | apps/designcraft, apps/designcraft-cli, apps/designcraft-web |
AGENTS.mdASSETS.md#7bb51c; see assets/app-icon/DesignCraft is one of the Crafting Apps: free, open-source creative tools from the ArtCraft team, each written from scratch in Rust and each able to stand on its own.
| App | What it's for | Code | Learn more | |
|---|---|---|---|---|
| PhotoCraft | Image editing: layers, masks, type and real PSD files | GitHub | Website | |
| VectorCraft | Vector illustration | GitHub | Website | |
| FilmCraft | Video editing, color and sound | GitHub | Website | |
| LightCraft | Photo library and raw development | GitHub | Website | |
| PrintCraft | Reading, organizing and protecting PDFs | GitHub | Website | |
| EffectCraft | Motion graphics and visual effects | GitHub | Website | |
| DesignCraft | Page layout and publishing · you are here | GitHub | Website |
And ArtCraft itself, our AI image and video studio for artists who want real control.
Our Discord is where artists of every kind hang out: people who paint, shoot, draw, cut film, set type, and people still figuring out what they like to make. Share what you're working on, ask for help, tell us what's broken, or tell us what you wish these tools could do. Whatever your medium and however long you've been at it, you're welcome here.
discord.gg/artcraft · getartcraft.com · The Crafting Apps · DesignCraft
MIT OR Apache-2.0 (LICENSE-MIT, LICENSE-APACHE). Bundled fonts
are OFL; all icons are drawn in code and are original. Per-asset attribution is in
ASSETS.md (see also NOTICE).
Adobe, Photoshop, Illustrator, Premiere Pro, Lightroom, Acrobat, After Effects and InDesign are trademarks or registered trademarks of Adobe Inc. in the United States and/or other countries. DesignCraft is an independent, open-source project and is not affiliated with, sponsored by or endorsed by Adobe Inc.; these names are used only to describe the workflows it is compatible with.
Made by the ArtCraft team and community.
Rust
93.7%
Max
5.1%
Page layout and publishing; an open-source, clean-room reimplementation of Adobe InDesign, rebuilt in pure Rust.
A fast, open-source, clean-room take on the Adobe InDesign workflow. It runs natively on macOS,
Windows and Linux, and in the browser via WebAssembly.
By the ArtCraft team.
DesignCraft on getartcraft.com · ArtCraft · All Crafting Apps
Quarterly, Spring Issue: threaded three-column body text, a wrapped pull quote and parent-page folios, all set by DesignCraft's own paragraph composer.
[!NOTE] ArtCraft is a community of artists from all walks of life. Digital, generative, music, games — if you make things, you're one of us. Come say hi on Discord.
The sample magazine · Why DesignCraft · Quick start · Web · Architecture · The Crafting Apps · License
Every page below was laid out by DesignCraft from code (crates/engine/src/sample.rs) and exported
by its own renderer. Try it yourself with File → New → Sample Document, or start the app with
--sample.
![]() Cover. A full-bleed graphic frame, display type and an italic deck. | ![]() Styles. Kicker rule, headline, deck, caption and justified two-column body. |
![]() Threading, columns and text wrap. One story flows through three columns and around the pull quote. | ![]() Swatches. Named colors and a CMYK process swatch, laid out as a palette. |
docs/control-protocol.md and
docs/mcp.md.cargo run --release -p designcraft # desktop app (start screen)
cargo run --release -p designcraft -- --sample # open the sample magazine
cargo run --release -p designcraft -- --sample --control 7979 # + JSON control channel
cargo run --release -p designcraft-cli -- run --sample --all-pages out/ # headless: render every page to PNG
cargo run --release -p designcraft-cli -- commands # list every command
cargo xtask ci # fmt, clippy, tests, assets, layering, wasm
To drive a running app, send JSON lines to 127.0.0.1:7979. The protocol is described in
docs/control-protocol.md.
cd apps/designcraft-web && trunk build --release # → dist/web (serve it with any static server)
cd apps/designcraft-web && trunk serve --release # http://127.0.0.1:8767
You need trunk and the wasm32-unknown-unknown target. The same app runs
through eframe's web runner on WebGPU, falling back to WebGL2 (?webgl forces it; ?sample opens
the sample magazine). Open and Place use the browser's file picker, and dropping files works too.
Save and Export download the file. The web build has no control channel.
DesignCraft is an engine-first Cargo workspace with enforced layering (cargo xtask layers). The
egui frontend is a separate crate, so the UI can be swapped without touching the engine.
| Layer | Crates |
|---|---|
| L0 | geom (paths, units & measurement parsing, corner options) · color (CMYK/RGB/Lab, swatches, tints, gradients) |
| L1 | doc (spreads, pages, parents, layers, frames, stories, styles) · fonts (font DB, shaping, outlines) |
| L2 | compose (the text engine) |
| L3 | render (vello_cpu) |
| L4 | tools (pointer events → commands + overlays) |
| L5 | engine (session, history, command registry) |
| L6 | ui-egui (InDesign-style UI, control channel) |
| L7 | apps/designcraft, apps/designcraft-cli, apps/designcraft-web |
AGENTS.mdASSETS.md#7bb51c; see assets/app-icon/DesignCraft is one of the Crafting Apps: free, open-source creative tools from the ArtCraft team, each written from scratch in Rust and each able to stand on its own.
| App | What it's for | Code | Learn more | |
|---|---|---|---|---|
| PhotoCraft | Image editing: layers, masks, type and real PSD files | GitHub | Website | |
| VectorCraft | Vector illustration | GitHub | Website | |
| FilmCraft | Video editing, color and sound | GitHub | Website | |
| LightCraft | Photo library and raw development | GitHub | Website | |
| PrintCraft | Reading, organizing and protecting PDFs | GitHub | Website | |
| EffectCraft | Motion graphics and visual effects | GitHub | Website | |
| DesignCraft | Page layout and publishing · you are here | GitHub | Website |
And ArtCraft itself, our AI image and video studio for artists who want real control.
Our Discord is where artists of every kind hang out: people who paint, shoot, draw, cut film, set type, and people still figuring out what they like to make. Share what you're working on, ask for help, tell us what's broken, or tell us what you wish these tools could do. Whatever your medium and however long you've been at it, you're welcome here.
discord.gg/artcraft · getartcraft.com · The Crafting Apps · DesignCraft
MIT OR Apache-2.0 (LICENSE-MIT, LICENSE-APACHE). Bundled fonts
are OFL; all icons are drawn in code and are original. Per-asset attribution is in
ASSETS.md (see also NOTICE).
Adobe, Photoshop, Illustrator, Premiere Pro, Lightroom, Acrobat, After Effects and InDesign are trademarks or registered trademarks of Adobe Inc. in the United States and/or other countries. DesignCraft is an independent, open-source project and is not affiliated with, sponsored by or endorsed by Adobe Inc.; these names are used only to describe the workflows it is compatible with.
Made by the ArtCraft team and community.
Rust
93.7%
Max
5.1%