The default tree
text
my-app/
├── Cargo.toml
├── pliego.toml
├── README.md
├── LICENSE
├── assets/
│ ├── favicon.svg
│ ├── site.css
│ ├── site.webmanifest
│ └── robots.txt
└── src/
└── main.rsA site can remain one Rust package or grow into a workspace with a native site package and a separate cdylib browser client. The manifest owns that boundary explicitly.
pliego.toml
toml
[project]
id = "my-app"
name = "My App"
site_package = "my-app"
output = "target/site"Generated paths must stay inside the project, use portable names, and avoid the source tree. The nearest pliego.toml defines the active project for every CLI command.
Site and client packages
- id
- A stable portable identity that owns the artifact lineage
- site_package
- A native binary that authors complete pages and writes the output ledger
- client.package
- An optional cdylib compiled to wasm32-unknown-unknown
- client.bindgen_output
- Generated JS/WASM glue consumed by the site package
Output is an artifact
target/site is replaced atomically after a successful build. pliego.build.json binds every emitted file by path, size, and SHA-256; preview and inspect reject a missing or invalid ledger.