--- 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](https://v2.tauri.app/start/prerequisites/) for your operating system. From the repository root, install JavaScript packages: ```sh pnpm install ``` Add the WebAssembly target and install the `wasm-bindgen` CLI version used by `Cargo.lock`: ```sh 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: ```sh pnpm dev:web ``` Open the printed local URL for the site or its `/app` route for the editor. Start the desktop app with: ```sh pnpm tauri dev ``` ## Workspace commands Build the CLI with Cargo or create its installable release tree: ```sh cargo build -p inkfinite-cli cargo xtask dist ``` Generate TypeScript bindings after changing shared Rust types: ```sh pnpm bindings:generate ``` Run the repository checks from the root: ```sh 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](/docs/development/testing/) for focused package and Playwright commands. See [Performance corpus and profiling](/docs/development/performance-corpus/) for native, process, renderer, and browser measurements.