Project layout

Your application (typical)

my-api/
├── Cargo.toml
├── churust.toml          # optional layered config
├── src/
│   └── main.rs
└── public/               # if you serve static files
    └── index.html

Minimal Cargo.toml:

[package]
name = "my-api"
version = "0.1.0"
edition = "2021"

[dependencies]
churust = { version = "0.3", features = ["full"] }
serde = { version = "1", features = ["derive"] }

Workspace crates (the framework itself)

If you browse or contribute to Churust:

CrateRole
churustUmbrella + prelude. Depend on this.
churust-coreEngine, routing, pipeline, extractors, config, TLS, WS, static, tests
churust-macros#[churust::main]
churust-jsonJSON + content negotiation
churust-loggingRequest logging
churust-corsCORS
churust-authAuth + Principal
churust-ratelimitRate limiting
churust-compressionResponse compression
churust-templatesHTML templates
churust-redisRedis session store
churust-clientOutbound HTTP client
churust-openapiOpenAPI generation
churust-labIncubator — never reaches 1.0; expect breaks

Runnable examples live under examples/:

ExampleCommandShows
hellocargo run -p helloRoutes, path/query, state
apicargo run -p apiJSON + plugins + auth
chatcargo run -p chatWebSockets
staticcargo run -p static-exampleStatic files + streamed body

Where docs live

PathAudience
book/ (this site)Users learning the framework
docs.rsAPI reference
docs/design/, docs/plans/Maintainers / design history

Next

Routing & guards