Runique — Rust carrying Django to new horizons

The Rust web framework inspired by Django

Models, migrations, typed forms, administration and security built in, on Axum, SeaORM and Tera.

Readable, typed code

Schema, routes, administration and security are declared in Rust and checked at compile time.

#[form(schema = blog, fields = [title, email, summary, website, content])]
pub struct BlogForm;

// Typed search (demo-app/src/backend/blog.rs)
search!(BlogEntity => Title icontains "runique")
    .all(&db).await?;

search!(BlogEntity => Id eq id)
    .first(&db).await?;
urlpatterns! {
    "/"          => view!{ index },        name = "index",
    "/blog/liste" => view!{ blog_list },    name = "blog_list",
    "/blog/{id}"  => view!{ blog_detail },  name = "blog_detail",
}

// Handler — path param via axum Path + request.engine.db
pub async fn blog_detail(
    Path(id): Path<Pk>,
    mut request: Request,
) -> AppResult<Response> {
    ...
}
RuniqueApp::builder(config)
    .with_admin(admin::config)
    .build().await?
    .run().await?

// src/admin.rs — typed ModelAdmin<blog::Entity>
ModelAdmin::new()
    .list(|l| {
        l.display([Title, Email, Website, Status])
            .links([Title])
            .filter([Status])
    })
    .form(|f| f.fields([Title, Email, Summary, Content, Status]))
$ cargo run → Admin available at /admin-runique/
.middleware(|m| {
    m.with_allowed_hosts(|h| {
        h.host("runique.io")
    })
    .with_csp(|c| {
        c.policy(SecurityPolicy::strict())
            .scripts(vec!["'strict-dynamic'"])
    })
})

// CSRF enabled by default — cannot be disabled
// Rate limiting, LoginGuard, Host validation built-in

Everything you need

A complete framework, without compromising on security.

Explore the demo

Each section is an interactive page of the demo-app.

Get started

Install the CLI, create a project, create its tables, run it.

Installation guide
$ cargo install runique --features sqlite --locked
$ runique new my_project
$ cd my_project
$ runique migration up
$ cargo run