A lightweight desktop CAD for sketching 2D outlines and extruding them into 3D-printable parts.
Outline is a cross-platform native application for designing simple 3D-printable parts — cookie cutters, stamps, molds, stencils — directly from 2D sketches and reference images.
It is intentionally small, fast, and focused. It is not a full CAD suite. It does one thing: from a 2D outline, produce a printable mesh.
- 2D sketch viewport with pan, zoom, and grid snap
- Drawing tools: polyline and rectangle
- Multi-selection, undo/redo, delete
- Reference image import (PNG, JPG) with scale-by-reference
- Real 2D polygon offset (inside / outside / center)
- Wall mesh generation with configurable height and thickness
- 3D preview (Three.js) with orbit, pan, zoom, and wireframe overlay
- STL export (binary and ASCII) validated before write
- Native desktop app on Windows, macOS, and Linux
Add screenshots or a short GIF here. Drop them in
docs/(untracked) or amedia/folder.
Generic CAD tools (Fusion 360, FreeCAD, Blender) are powerful but heavy for the simple case of "I want to make a cookie cutter of this image." Outline skips constraints, assemblies, and timelines and gives you a fast, native path from sketch to printable mesh.
- Shell: Tauri 2 (Rust + webview)
- UI: React 18 + TypeScript + Vite
- State: Zustand
- 2D rendering: HTML5 Canvas
- 3D rendering: Three.js
- Core, geometry, export: Rust workspace (
outline-core,geometry,export)
- Node.js 20+ and pnpm
- Rust 1.75+
- Platform-specific Tauri deps — see the Tauri prerequisites
pnpm installpnpm devThis launches the Tauri dev server with hot reload.
pnpm buildThe Tauri bundler produces installers for your current platform in apps/desktop/src-tauri/target/release/bundle/.
apps/desktop/ React + TypeScript frontend
src/ UI source
src-tauri/ Tauri shell, Rust command adapters
crates/
outline-core/ Project model, domain commands, validation
geometry/ 2D/3D geometry, offsets, mesh generation
export/ File format exporters (STL)
The Rust core is UI-agnostic and can be tested without Tauri. The frontend is a thin shell that captures user intent and calls typed commands.
The project ships with a single script that runs every check:
pnpm qualityIt runs cargo fmt, cargo clippy, cargo test, frontend build, frontend tests, and file-size guards. Use it before opening a pull request.
Contributions are welcome. Please read CONTRIBUTING.md and CODE_OF_CONDUCT.md before opening an issue or pull request.
Good first issues are tagged good first issue.
To report a vulnerability, please follow SECURITY.md. Do not file public issues for security reports.
- The Tauri team for making native desktop apps pleasant to build
- The Rust, React, and Three.js communities