Documentation

DOC / 02 / START

Project structure

Understand pliego.toml, the site package, the optional WASM client, public assets, and output ownership.

In this guideProject structure
Getting startedProject structureCLI referenceDeveloper loopRouting and pagesRust viewsEvents and foldsSchemas and snapshotsHyphae verified syncTyped contentBrowser runtimeDOM ownershipAdaptive assetsArtifact trustErrors and diagnosticsBuild and deployCrates and APILicensing and policy

The default tree

text
my-app/
├── Cargo.toml
├── pliego.toml
├── README.md
├── LICENSE
├── assets/
│   ├── favicon.svg
│   ├── site.css
│   ├── site.webmanifest
│   └── robots.txt
└── src/
    └── main.rs

A 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.