Description
A modular web framework built around async/await. It's actively being developed and not ready for production yet.
Tide alternatives and similar packages
Based on the "HTTP Server" category.
Alternatively, view Tide alternatives based on common mentions on social networks and blogs.
-
rust-musl-builder
Docker images for compiling static Rust binaries using musl-libc and musl-gcc, with static versions of useful C libraries. Supports openssl and diesel crates. -
heroku-buildpack-rust
A buildpack for Rust applications on Heroku, with full support for Rustup, cargo and build caching.
CodeRabbit: AI Code Reviews for Developers

Do you think we are missing an alternative of Tide or a related project?
README
Tide Serve the web
<!-- Crates version --> <!-- Downloads --> <!-- docs.rs docs -->
API Docs | Contributing | Chat
Tide is a minimal and pragmatic Rust web application framework built for rapid development. It comes with a robust set of features that make building async web applications and APIs easier and more fun.
Getting started
In order to build a web app in Rust you need an HTTP server, and an async
runtime. After running cargo init
add the following lines to your
Cargo.toml
file:
# Example, use the version numbers you need
tide = "0.16.0"
async-std = { version = "1.8.0", features = ["attributes"] }
serde = { version = "1.0", features = ["derive"] }
Examples
Create an HTTP server that receives a JSON body, validates it, and responds with a confirmation message.
use tide::Request;
use tide::prelude::*;
#[derive(Debug, Deserialize)]
struct Animal {
name: String,
legs: u16,
}
#[async_std::main]
async fn main() -> tide::Result<()> {
let mut app = tide::new();
app.at("/orders/shoes").post(order_shoes);
app.listen("127.0.0.1:8080").await?;
Ok(())
}
async fn order_shoes(mut req: Request<()>) -> tide::Result {
let Animal { name, legs } = req.body_json().await?;
Ok(format!("Hello, {}! I've put in an order for {} shoes", name, legs).into())
}
$ curl localhost:8080/orders/shoes -d '{ "name": "Chashu", "legs": 4 }'
Hello, Chashu! I've put in an order for 4 shoes
$ curl localhost:8080/orders/shoes -d '{ "name": "Mary Millipede", "legs": 750 }'
Hello, Mary Millipede! I've put in an order for 750 shoes
See more examples in the examples directory.
Tide's design:
- Rising Tide: building a modular web framework in the open
- Routing and extraction in Tide: a first sketch
- Middleware in Tide
- Tide's evolving middleware approach
- Tide, the present and future of
- Tide channels
Community Resources
To add a link to this list, edit the markdown file and submit a pull request (github login required)Listing here does not constitute an endorsement or recommendation from the tide team. Use at your own risk.
Listeners
- tide-rustls TLS for tide based on async-rustls
- tide-acme HTTPS for tide with automatic certificates, via Let's Encrypt and ACME tls-alpn-01 challenges
Template engines
- tide-tera
- tide-handlebars
- askama (includes support for tide)
Routers
Auth
Testing
Middleware
- tide-compress
- tide-sqlx - SQLx pooled connections & transactions
- tide-trace
- tide-tracing
- opentelemetry-tide
- driftwood http logging middleware
- tide-compressed-sse
- tide-websockets
- tide-csrf
- tide-flash
Session Stores
- async-redis-session
- async-sqlx-session (sqlite, mysql, postgres, ...)
- async-mongodb-session
Example applications
- dot dot vote
- tide-example (sqlx + askama)
- playground-tide-mongodb
- tide-morth-example
- broker (backend as a service)
- tide-basic-crud (sqlx + tera)
- tide-graphql-mongodb
- Clean boilerplate for graphql services using tide, rhai, async-graphql, surf, graphql-client, handlebars-rust, jsonwebtoken, and mongodb.
- Graphql Services: User register, Salt and hash a password with PBKDF2 , Sign in, JSON web token authentication, Change password, Profile Update, User's query & mutation, and Project's query & mutation.
- Web Application: Client request, bring & parse GraphQL data, Render data to template engine(handlebars-rust), Define custom helper with Rhai scripting language.
- surfer
- The Blog built on Tide stack, generated from tide-graphql-mongodb.
- Backend for graphql services using tide, async-graphql, jsonwebtoken, mongodb and so on.
- Frontend for web application using tide, rhai, surf, graphql_client, handlebars-rust, cookie and so on.
- tide-server-example
Contributing
Want to join us? Check out our The "Contributing" section of the guide and take a look at some of these issues:
Conduct
The Tide project adheres to the Contributor Covenant Code of Conduct. This describes the minimum behavior expected from all contributors.
License
Licensed under either of
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license ([LICENSE-MIT](LICENSE-MIT) or https://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
*Note that all licence references and agreements mentioned in the Tide README section above
are relevant to that project's source code only.