Skip to main content
tuliprox consists of a Rust backend, a Yew/WebAssembly frontend, and mdBook-generated documentation. You can build each component individually or use the provided Makefile and helper scripts.

Prerequisites

1

Install the Rust toolchain

curl -sL https://sh.rustup.rs | sh -s -- -y
Or use the Makefile target:
make rustup
2

Install build tools

make install-tools
This installs: cross, trunk, wasm-bindgen-cli, cargo-set-version, mdbook, and markdownlint-cli2.To install tools individually:
make cross      # multi-platform build tool
make trunk      # frontend build tool
make mdbook     # documentation generator
3

Install wasm-opt

Trunk requires a compatible wasm-opt binary in PATH to optimize the WebAssembly output.
./bin/install_wasm_tools.sh 128
export PATH="$PWD/.tools/wasm-tools/version_128/bin:$PATH"
The script downloads binaryen version 128 into .tools/wasm-tools/version_128/bin/.

Building the backend

cargo build -p tuliprox --release
The output binary is at target/release/tuliprox.

Building the frontend

The frontend build also generates the documentation site and copies it into the frontend distribution:
./bin/build_fe.sh release
This script:
  1. Runs bin/build_docs.sh to build mdBook docs into frontend/build/docs
  2. Runs trunk build --release to compile the Yew/WASM frontend into frontend/dist
  3. Copies frontend/build/docs into frontend/dist/static/docs
For a debug build:
./bin/build_fe.sh debug

Building the documentation only

make docs
Output goes to frontend/build/docs. To preview locally:
make docs-serve

Full build (backend + frontend + docs)

make web-dist
This builds documentation with mdBook, then calls ./bin/build_fe.sh release to produce the complete set of web assets.

Build targets

cross build -p tuliprox --release --target x86_64-unknown-linux-musl
cross uses Docker to provide the correct cross-compilation toolchain for each target. Install it with cargo install cross.

Building a Docker image from source

Build the full multi-stage Docker image from the repository root:
docker build --rm -f docker/Dockerfile -t tuliprox .
Target a specific architecture or final stage:
docker build --rm -f docker/Dockerfile -t tuliprox \
  --target scratch-final \
  --build-arg RUST_TARGET=x86_64-unknown-linux-musl .
Available final stages: scratch-final, alpine-final.

Helper scripts

The repository ships build helper scripts under bin/:
ScriptPurpose
bin/build_docs.shBuild mdBook documentation only
bin/build_fe.shBuild frontend assets (calls build_docs.sh internally)
bin/build_local.shFull local build (backend + frontend)
bin/build_docker.shBuild and push multi-platform Docker images (CI use)
bin/release.shBump version and tag a release
bin/install_wasm_tools.shDownload and install a specific binaryen/wasm-opt version
bin/build_docker.sh requires REPO_OWNER and GITHUB_IO_TOKEN environment variables and is intended for CI pipelines. Do not run it locally without those credentials.

Build docs developers (and LLMs) love