# Carte > Carte is routing and scoped state for any Rust UI: a validated route table, a path derived from your state every frame, and state that lives exactly as long as its screen. Carte is not URL routing: routes are static ids in a table, and the active path is derived from application state every frame. Until its first release the crate is not on crates.io; depend on `carte` by Git or path. ## Start here - [Introduction](https://www.carterouter.dev/docs.md): What Carte is, what it is for, and where it sits between your app and your UI. - [Installation](https://www.carterouter.dev/docs/installation.md): Add Carte to a Rust project, and what the pre-release state means for you. - [Quick start](https://www.carterouter.dev/docs/quick-start.md): A small notes app with a route table, one screen type, one scope and a frame loop, drawn with egui. - [The frame](https://www.carterouter.dev/docs/the-frame.md): What to call each frame, in what order, and why the order is fixed. ## Routing - [Route tables](https://www.carterouter.dev/docs/routing/tables.md): Declaring what may appear beneath what, once, at startup. - [Nodes and the walk](https://www.carterouter.dev/docs/routing/nodes.md): The Node trait, the router that holds your nodes, and how the path is derived each frame. - [Escape, popping and departure](https://www.carterouter.dev/docs/routing/escape.md): How a screen leaves when the path is derived rather than pushed, and how it says goodbye. - [Occlusion and stacked views](https://www.carterouter.dev/docs/routing/occlusion.md): Which screens on the path render, and how a prompt stays on top of the screen it belongs to. - [Guards](https://www.carterouter.dev/docs/routing/guards.md): A node's precondition, written once as a Rust function, with a refusal sentence every surface shows. ## State - [Scopes and lifetimes](https://www.carterouter.dev/docs/state/scopes.md): Where a screen's state lives, how long it lives, and why nothing can keep it alive past its screen. - [Schemas](https://www.carterouter.dev/docs/state/schemas.md): How a scope's struct describes itself, and how its declarations become its starting value. - [Producers and the tick](https://www.carterouter.dev/docs/state/producers.md): Who may write which field, how writes reach the store, and what a commit tells you. - [Intents and the outbox](https://www.carterouter.dev/docs/state/intents.md): How screens and views ask for changes, and how a named request becomes a typed action. ## Project - [Validation](https://www.carterouter.dev/docs/validation.md): Checking what your views read and raise against what the store publishes, in two grades. - [Design principles](https://www.carterouter.dev/docs/principles.md): The fourteen rules Carte's code holds itself to, and why. - [Status and roadmap](https://www.carterouter.dev/docs/roadmap.md): What works today, what is missing, and where the name came from. ## Optional - [All docs in one file](https://www.carterouter.dev/llms-full.txt) - [Source on GitHub](https://github.com/fian-team/carte) - [Rust API reference](https://docs.rs/carte)