diff --git a/README.md b/README.md index cb0f78ee5..e30965b0c 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,97 @@ +

+ + + + ArtCraft + + +

+

DesignCraft

- Page layout and publishing, rebuilt in pure Rust.
- A fast, open-source, clean-room take on the Adobe InDesign workflow — native on macOS, Windows and Linux, and in the browser via WebAssembly.
+ Page layout and publishing, 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 showing a magazine spread: a threaded three-column story is selected with its in/out ports and thread line, the Control panel shows its position in picas and the Properties panel its text frame options -
Quarterly — Spring Issue: threaded three-column body text, a wrapped pull quote, parent-page folios, all set by DesignCraft's own paragraph composer. + Written in Rust + Runs on macOS, Windows, Linux and the web + License: MIT or Apache-2.0 + Agent-drivable over MCP

+

+ Join the ArtCraft community on Discord +

+ +

+ DesignCraft on getartcraft.com · + ArtCraft · + All Crafting Apps +

+ +
+ +

+ DesignCraft showing a magazine spread: a threaded three-column story is selected with its in/out ports and thread line, the Control panel shows its position in picas and the Properties panel its text frame options +
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.** Painters, photographers, +> filmmakers, illustrators, designers, animators, hobbyists, and people who picked up a pencil +> last week. If you make things, you're one of us. **[Come say hi on Discord](https://discord.gg/artcraft).** + +

+ The sample magazine · + Why DesignCraft · + Quick start · + Web · + Architecture · + The Crafting Apps · + License +

+ +## The sample magazine + +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`. + - - - + + + + + +
Magazine cover with a generated dusk landscape and a large serif headline

Cover: full-bleed graphic frame, display type

Feature opener with kicker, headline, deck, photo, caption and two-column justified text

Styles: kicker rule, headline, deck, justified body

Three-column page with text wrapping around a shaded pull quote

Threading, columns and text wrap

Magazine cover for The Spring Issue, No. 01: a dusk landscape of layered purple hills under a large pale sun, with the white serif headline The Quiet Art of Layout and an italic deck below

Cover. A full-bleed graphic frame, display type and an italic deck.

Feature opener titled Notes on the Grid, with an orange FEATURE · DESIGN kicker over a rule, an italic deck, a wide landscape picture with a small caption, and two columns of justified body text above a QUARTERLY folio

Styles. Kicker rule, headline, deck, caption and justified two-column body.

Three-column page of justified, hyphenated body text that wraps around a shaded pull quote reading The best layouts disappear. What remains is the story., with a gradient rule and SPRING ISSUE folio at the foot

Threading, columns and text wrap. One story flows through three columns and around the pull quote.

Coming Next page titled Color, Ink and Paper on a plum background, with four swatch circles labeled Ink Plum, Sunset, C=100 M=0 Y=0 K=0 and Paper Warm, above a short paragraph of body text

Swatches. Named colors and a CMYK process swatch, laid out as a palette.

-Every page above was laid out by DesignCraft from code (`crates/engine/src/sample.rs`) and exported by its own renderer — try it with `File → New → Sample Document` or `--sample`. +## Why DesignCraft -### Why DesignCraft - -- **Familiar.** InDesign's layout, tools, menus, panels and shortcuts: spreads and parent pages, frames and threaded stories, the Control panel, paragraph and character styles, swatches, text wrap… you already know how to use it. -- **Beautiful type.** A Knuth–Plass paragraph composer (plus single-line), dictionary hyphenation (public-domain Moby word list + our own trained patterns), word/letter/glyph-scaling justification, keeps, optical margin alignment, columns, baseline grid, tabs, rules and shading — identical line breaks on screen and in PDF. -- **Fast.** Multithreaded SIMD rendering (vello_cpu), copy-on-write documents with O(1) undo snapshots, cached composition. -- **Open.** A documented native format, IDML import/export, PNG export, and PDF on the roadmap — no subscription, no licence server, no telemetry. -- **Agent-native.** Every menu item, tool gesture, panel control and dialog is drivable over a JSON control channel and an **MCP server**, so Claude and other agents can lay out and edit documents like a designer. +- **Familiar.** InDesign's layout, tools, menus, panels and shortcuts: spreads and parent pages, + frames and threaded stories, the Control panel, paragraph and character styles, swatches, text + wrap and more. If you know InDesign, you already know how to use it. +- **Beautiful type.** A Knuth–Plass paragraph composer (plus single-line), dictionary hyphenation + (the public-domain Moby word list plus our own trained patterns), word, letter and glyph-scaling + justification, keeps, optical margin alignment, columns, baseline grid, tabs, rules and shading. + Line breaks are identical on screen and in PDF. +- **Fast.** Multithreaded SIMD rendering (vello_cpu), copy-on-write documents with O(1) undo + snapshots, and cached composition. +- **Open.** A documented native format, IDML import and export, PNG export, and PDF on the roadmap. + No subscription, no licence server, no telemetry. +- **Agent-native.** Every menu item, tool gesture, panel control and dialog can be driven over a + JSON control channel and an **MCP server**, so Claude and other agents can lay out and edit + documents like a designer. See [`docs/control-protocol.md`](docs/control-protocol.md) and + [`docs/mcp.md`](docs/mcp.md). - **Everywhere.** One Rust codebase for desktop and the web. ## Quick start @@ -41,7 +105,8 @@ cargo run --release -p designcraft-cli -- commands # list every command cargo xtask ci # fmt, clippy, tests, assets, layering, wasm ``` -Drive a running app: send JSON lines to `127.0.0.1:7979` — see [`docs/control-protocol.md`](docs/control-protocol.md). +To drive a running app, send JSON lines to `127.0.0.1:7979`. The protocol is described in +[`docs/control-protocol.md`](docs/control-protocol.md). ### Web @@ -50,11 +115,15 @@ cd apps/designcraft-web && trunk build --release # → dist/web (serve cd apps/designcraft-web && trunk serve --release # http://127.0.0.1:8767 ``` -Needs [trunk](https://trunkrs.dev) 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 (dropping files works too); Save and Export download the file. The web build has no control channel. +You need [trunk](https://trunkrs.dev) 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. ## Architecture -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. +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 | |---|---| @@ -67,41 +136,61 @@ An engine-first Cargo workspace with enforced layering (`cargo xtask layers`); t | L6 | `ui-egui` (InDesign-style UI, control channel) | | L7 | `apps/designcraft`, `apps/designcraft-cli`, `apps/designcraft-web` | -Status and milestones: **[ROADMAP.md](ROADMAP.md)**. Contributor and agent rules (clean-room, asset policy, quality gates): [`AGENTS.md`](AGENTS.md). Every bundled asset is listed with its licence in [`ASSETS.md`](ASSETS.md). +- **Status and milestones:** [ROADMAP.md](ROADMAP.md) +- **Contributor and agent rules** (clean-room, asset policy, quality gates): [`AGENTS.md`](AGENTS.md) +- **Bundled assets:** every one is listed with its licence in [`ASSETS.md`](ASSETS.md) -## Crafting Apps +## The Crafting Apps -Open-source, pure-Rust, clean-room creative tools — each engine-first, cross-platform, WASM-ready and fully agent-drivable. +DesignCraft is one of the **Crafting Apps**: free, open-source creative tools from the +[ArtCraft](https://getartcraft.com/) team, each written from scratch in Rust and each able to +stand on its own. - - - - - - - - - - - - - - - - - - - - - - - - - -
PhotoCraftLayered raster image editor in the spirit of Photoshop — high-bit-depth pipeline, adjustment layers, brushes, PSD round-trip.
DrawCraftVector illustration in the spirit of Illustrator — Pen, Pathfinder, live effects, type, SVG/PDF.
DesignCraftPage layout in the spirit of InDesign — spreads, threaded stories, styles, a Knuth–Plass composer. (you are here)
FilmCraftNon-linear video editor in the spirit of Premiere Pro — timeline editing, effects, and export.
LightCraftPhoto library and non-destructive raw developer in the spirit of Lightroom — local-first catalog, wide-gamut float pipeline.
PrintCraftPDF viewer and editor in the spirit of Acrobat — rendering, forms, annotations, and document tools.
+| App | What it's for | Code | Learn more | +|---|---|---|---| +| PhotoCraft | Image editing: layers, masks, type and real PSD files | [GitHub](https://github.com/storytold/photocraft) | [getartcraft.com](https://getartcraft.com/apps/photocraft) | +| VectorCraft | Vector illustration (formerly DrawCraft) | [GitHub](https://github.com/storytold/vectorcraft) | [getartcraft.com](https://getartcraft.com/apps/drawcraft) | +| FilmCraft | Video editing, color and sound | [GitHub](https://github.com/storytold/filmcraft) | [getartcraft.com](https://getartcraft.com/apps/filmcraft) | +| LightCraft | Photo library and raw development | [GitHub](https://github.com/storytold/lightcraft) | [getartcraft.com](https://getartcraft.com/apps/lightcraft) | +| PrintCraft | Reading, organizing and protecting PDFs | [GitHub](https://github.com/storytold/printcraft) | [getartcraft.com](https://getartcraft.com/apps/printcraft) | +| EffectCraft | Motion graphics and visual effects | [GitHub](https://github.com/storytold/effectcraft) | [getartcraft.com](https://getartcraft.com/apps/effectcraft) | +| DesignCraft | Page layout and publishing · **you are here** | [GitHub](https://github.com/storytold/designcraft) | [getartcraft.com](https://getartcraft.com/apps/designcraft) | + +And [**ArtCraft**](https://getartcraft.com/) itself, our AI image and video studio for artists who want real control. + +
+ +

+ Join the ArtCraft community on Discord +

+ +

Come make things with us

+ +

+ 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 +

## License -MIT OR Apache-2.0. Bundled fonts are OFL; all icons are drawn in code and are original. Per-asset attribution: [`ASSETS.md`](ASSETS.md) (see also [`NOTICE`](NOTICE)). +MIT OR Apache-2.0 ([`LICENSE-MIT`](LICENSE-MIT), [`LICENSE-APACHE`](LICENSE-APACHE)). Bundled fonts +are OFL; all icons are drawn in code and are original. Per-asset attribution is in +[`ASSETS.md`](ASSETS.md) (see also [`NOTICE`](NOTICE)). DesignCraft is an independent project and is not affiliated with or endorsed by Adobe. "Adobe", "InDesign", "Illustrator", "Photoshop", "Premiere Pro", "Lightroom" and "Acrobat" are trademarks of Adobe Inc., used here only to describe compatibility and workflow familiarity. + +
+ +

+ ArtCraft
+ Made by the ArtCraft team and community. +

diff --git a/docs/brand/artcraft-logo-white.png b/docs/brand/artcraft-logo-white.png new file mode 100644 index 000000000..8cfb31d94 Binary files /dev/null and b/docs/brand/artcraft-logo-white.png differ diff --git a/docs/brand/artcraft-logo-white.svg b/docs/brand/artcraft-logo-white.svg new file mode 100644 index 000000000..4af80f757 --- /dev/null +++ b/docs/brand/artcraft-logo-white.svg @@ -0,0 +1,7 @@ + + ArtCraft + + + + + diff --git a/docs/brand/artcraft-logo.png b/docs/brand/artcraft-logo.png new file mode 100644 index 000000000..a4d1544ca Binary files /dev/null and b/docs/brand/artcraft-logo.png differ diff --git a/docs/brand/artcraft-logo.svg b/docs/brand/artcraft-logo.svg new file mode 100644 index 000000000..d63f3eae1 --- /dev/null +++ b/docs/brand/artcraft-logo.svg @@ -0,0 +1,7 @@ + + ArtCraft + + + + + diff --git a/docs/brand/artcraft-mark-black.png b/docs/brand/artcraft-mark-black.png new file mode 100644 index 000000000..27664bc11 Binary files /dev/null and b/docs/brand/artcraft-mark-black.png differ diff --git a/docs/brand/artcraft-mark-black.svg b/docs/brand/artcraft-mark-black.svg new file mode 100644 index 000000000..639435378 --- /dev/null +++ b/docs/brand/artcraft-mark-black.svg @@ -0,0 +1,4 @@ + + ArtCraft + + diff --git a/docs/brand/artcraft-mark.png b/docs/brand/artcraft-mark.png new file mode 100644 index 000000000..dbb3dc089 Binary files /dev/null and b/docs/brand/artcraft-mark.png differ diff --git a/docs/brand/artcraft-mark.svg b/docs/brand/artcraft-mark.svg new file mode 100644 index 000000000..72e191f8a --- /dev/null +++ b/docs/brand/artcraft-mark.svg @@ -0,0 +1,4 @@ + + ArtCraft + +