Churust πŸŒ€

Churro + Rust β€” a backend web framework inspired by Ktor. Simple, secure, robust, and easy to learn.

crates.io docs.rs CI MSRV 1.96

Churust gives you Ktor’s developer experience in Rust: an application engine, a routing DSL, an install(plugin) system, and a phased interceptor pipeline β€” built on a battle-tested async stack (tokio + hyper + rustls). Churust owns the ergonomic layer; it does not reinvent HTTP parsing or TLS.

Coming from Kotlin/Ktor? See From Ktor to Churust for side-by-side examples (routes, install, JSON, auth, config, tests).

use churust::prelude::*;

#[churust::main]
async fn main() -> std::io::Result<()> {
    Churust::server()
        .port(8080)
        .routing(|r| {
            r.get("/", |_call: Call| async { "Hello from Churust πŸŒ€" });
            r.get("/users/{id}", |Path(id): Path<u64>| async move {
                format!("user #{id}")
            });
        })
        .start()
        .await
}

What you get

AreaHighlights
HandlersCall-style or typed extractors (Path, Query, Json, State, …)
Pluginsinstall(...) into a fixed phase order: Setup β†’ Monitoring β†’ Plugins β†’ Call β†’ Fallback
SecurityBody limits, timeouts, panic isolation, security headers, opt-in TLS
ProtocolsHTTP/1.1, HTTP/2, optional HTTP/3, WebSockets, static files
EcosystemOpt-in JSON, CORS, auth, rate limit, compression, templates, Redis, OpenAPI, client

How this site is organized

SectionPurpose
Getting startedInstall, run your first server
From Ktor to ChurustSide-by-side Ktor (Kotlin) ↔ Churust (Rust)
FundamentalsRouting, extractors, plugins, config, tests
Plugins & featuresOne page per optional capability
RecipesEnd-to-end examples from the repo
ReferenceMatrices, config keys, security, non-goals
CommunityContributing and help channels

Docs map

ResourceUse it for
This guideHow to use Churust day to day
docs.rs/churustFull API reference for types and traits
examples/Runnable apps (hello, api, chat, static)
READMEShort pitch and install blurb

Status

Published on crates.io. Pre-1.0: the API is settling rather than settled β€” expect breaking changes in minor releases until 1.0. Current series documented here: 0.3.

MSRV: Rust 1.96+.

Next step

β†’ Quick start