inkfinite (an infinite canvas/whiteboard) monorepo ink.stormlightlabs.org
svelte rust tauri svg canvas perfect-freehand
inkfinite apps web src content docs development building-from-source.md
1.7 kB
Markdown
at main


title: Building from source description: Set up Rust, WebAssembly, Svelte, and Tauri development for Inkfinite. section: Development group: Development order: 19 #

Inkfinite is a pnpm workspace with Rust crates, a WebAssembly document engine, a Svelte web app, and a Tauri desktop shell.

Requirements #

Install Node.js 18 or newer, pnpm, and Rust 1.89. Desktop development also requires the Tauri 2 prerequisites for your operating system.

From the repository root, install JavaScript packages:

pnpm install

Add the WebAssembly target and install the wasm-bindgen CLI version used by Cargo.lock:

rustup target add wasm32-unknown-unknown
cargo install wasm-bindgen-cli --version 0.2.126 --locked
pnpm wasm:build

Run the applications #

Start the documentation site and web editor:

pnpm dev:web

Open the printed local URL for the site or its /app route for the editor. Start the desktop app with:

pnpm tauri dev

Workspace commands #

Build the CLI with Cargo or create its installable release tree:

cargo build -p inkfinite-cli
cargo xtask dist

Generate TypeScript bindings after changing shared Rust types:

pnpm bindings:generate

Run the repository checks from the root:

cargo fmt --all -- --check
cargo test --workspace --all-features
cargo clippy --workspace --all-targets --all-features -- -D warnings
pnpm format:check
pnpm test
pnpm check
pnpm lint

See Testing for focused package and Playwright commands. See Performance corpus and profiling for native, process, renderer, and browser measurements.