fluentcidocs
Website GitHub

Contribute and deploy

Local development

Build and validate the Bun/Turborepo workspace, Rust CLI, Gleam API, and documentation.

Prerequisites

Install Rust for the native target, Bun, and Node.js 24+. API development also requires Gleam and Pkl. Documentation uses Lume 4, installed through the Bun workspace; Deno is not required to build this site.

bun install --frozen-lockfile --ignore-scripts
bun run dev:landing
bun run dev:studio
bun run dev:api
bun run dev:docs

Run the selected development servers in separate terminals. The default root bun run dev starts landing and Studio frontend development. The frontend's local API should be started separately when needed.

Build Studio before Rust

cd webui
bun install --frozen-lockfile --ignore-scripts
bun run build:web
cd ..
cargo build --release --locked
cargo run --release -- server

The Vite Studio server proxies /graphql and /ws to the local API. Rebuild embedded assets before compiling a CLI intended to serve updated production UI.

Validate Rust changes

cargo fmt --check
cargo clippy --release --all-targets --locked -- -D warnings
cargo test --release --locked

Use release mode for Rust builds, runs, and validation. Run tests appropriate to the change; HTTP/WebSocket tests need loopback listeners. Keep Rust imports in one contiguous block, with blank lines between functions, types, and implementations.

SDK templates

Scaffold tests verify embedded starters without depending on a sibling checkout. A real SDK build additionally verifies compiler and Wasm export integration. For ClojureScript, run the mandatory Typed Clojure stage and inspect the hello export after compilation. Do not copy compiler caches or generated output into a template.

API and website checks

cd apps/api
bun run build
bun run lint
bun run typecheck
bun run test

For landing, use its lint, build, and test:browser scripts. For docs, see Build these docs. The root Turborepo build includes workspace build tasks; native desktop compilation is available separately through bun run build:desktop.

Use conventional commit messages, and include the behavior and relevant validation in a pull request description.

Made with ♥ in Antananarivo, Madagascar.
Search documentation