
# Proa
**The next era of web interfaces. Built in Rust.**
Proa is building the next generation of interface infrastructure for the web.
It enables you to create extremely fast, scalable applications and services in
Rust by bringing compiled components, streaming, data
loading, and fine-grained interactive islands into one framework.
[](proa_framework/proa_framework_axum/README.md)
[](proa_core)
[](proa_macros/README.md)
[](rsjs/README.md)
[](LICENSE)
[](https://x.com/drewhariri)
[](https://www.reddit.com/r/proa_rs/)
[**Get started**](https://proa.so/docs) ·
[**Explore apps**](https://proa.so/ecosystem/apps#reference-showcases) ·
[See the benchmarks](https://github.com/Proa-Labs/proa-benchmarks)
---
## A programming model for multiple interfaces
Proa's larger vision is one typed, compiled interface layer that produces the
right representation for whoever asks: complete HTML for people, targeted
behavior for browsers, and dense machine-readable output for agents.
This repository provides the compiled renderer, built-in render traits for
HTML and Markdown, browser interactivity, streaming, data loading, and framework
tooling. Other render targets can define their own rendering implementations,
whether for a format such as JSON or for a native rendering backend.
## Start in five minutes
Install the latest stable CLI through Cargo using a current Rust toolchain:
```bash
cargo install proa-cli --locked
```
Follow the [quickstart](https://proa.so/docs) to install the styling tools,
create a site, edit its first route, and run Proa's checks.
## Your first page is a typed Rust component
Use `WebRenderSync` and `html_sync!` for the normal fast path:
```rust
use proa_core::{DataLoader, WebContext, WebRenderSync, WriteError};
use proa_macros::html_sync;
struct Greeting {
name: String,
}
impl